From 5c903619dd79b72e92cb0c5efb15f171bcd28644 Mon Sep 17 00:00:00 2001
From: bruechert <bruechert@hab.de>
Date: Tue, 17 Nov 2020 14:23:14 +0100
Subject: [PATCH] updated dependencies

---
 composer.lock                                 | 1117 ++++-
 vendor/composer/ClassLoader.php               |    6 +-
 vendor/composer/autoload_classmap.php         |    6 +
 vendor/composer/autoload_files.php            |    3 +
 vendor/composer/autoload_psr4.php             |    5 +
 vendor/composer/autoload_real.php             |    7 +-
 vendor/composer/autoload_static.php           |   34 +
 vendor/composer/installed.json                | 3727 ++++++++++-------
 vendor/guzzlehttp/guzzle/CHANGELOG.md         |   51 +
 vendor/guzzlehttp/guzzle/README.md            |   25 +-
 vendor/guzzlehttp/guzzle/composer.json        |   43 +-
 vendor/guzzlehttp/guzzle/src/Client.php       |   99 +-
 .../guzzlehttp/guzzle/src/ClientInterface.php |    7 +-
 .../guzzle/src/Cookie/CookieJar.php           |    8 +-
 .../guzzle/src/Cookie/CookieJarInterface.php  |    6 +-
 .../guzzle/src/Cookie/FileCookieJar.php       |    3 +-
 .../guzzle/src/Cookie/SessionCookieJar.php    |    1 +
 .../guzzle/src/Cookie/SetCookie.php           |    4 +-
 .../guzzle/src/Exception/ClientException.php  |    4 +-
 .../guzzle/src/Exception/GuzzleException.php  |   30 +-
 .../guzzle/src/Exception/RequestException.php |   35 +-
 .../guzzle/src/Exception/ServerException.php  |    4 +-
 .../Exception/TooManyRedirectsException.php   |    4 +-
 .../src/Exception/TransferException.php       |    4 +-
 .../guzzle/src/Handler/CurlFactory.php        |   44 +-
 .../guzzle/src/Handler/CurlMultiHandler.php   |   34 +-
 .../guzzle/src/Handler/MockHandler.php        |   10 +-
 .../guzzle/src/Handler/StreamHandler.php      |   25 +-
 vendor/guzzlehttp/guzzle/src/HandlerStack.php |   14 +-
 .../guzzle/src/MessageFormatter.php           |    5 +
 vendor/guzzlehttp/guzzle/src/Middleware.php   |    7 +-
 vendor/guzzlehttp/guzzle/src/Pool.php         |   15 +-
 .../guzzle/src/PrepareBodyMiddleware.php      |    5 +
 .../guzzle/src/RedirectMiddleware.php         |   28 +-
 .../guzzlehttp/guzzle/src/RequestOptions.php  |   10 +-
 .../guzzlehttp/guzzle/src/RetryMiddleware.php |   22 +-
 .../guzzlehttp/guzzle/src/TransferStats.php   |   12 +-
 vendor/guzzlehttp/guzzle/src/functions.php    |   15 +-
 vendor/guzzlehttp/promises/CHANGELOG.md       |   16 +
 vendor/guzzlehttp/promises/README.md          |   42 +-
 vendor/guzzlehttp/promises/composer.json      |   13 +-
 .../promises/src/AggregateException.php       |    1 +
 .../promises/src/CancellationException.php    |    1 +
 vendor/guzzlehttp/promises/src/Coroutine.php  |   28 +-
 .../guzzlehttp/promises/src/EachPromise.php   |   70 +-
 .../promises/src/FulfilledPromise.php         |   10 +-
 vendor/guzzlehttp/promises/src/Promise.php    |   68 +-
 .../promises/src/PromiseInterface.php         |    4 +
 .../promises/src/PromisorInterface.php        |    1 +
 .../promises/src/RejectedPromise.php          |   14 +-
 .../promises/src/RejectionException.php       |    3 +-
 vendor/guzzlehttp/promises/src/TaskQueue.php  |    5 +-
 .../promises/src/TaskQueueInterface.php       |    3 +-
 vendor/guzzlehttp/promises/src/functions.php  |  254 +-
 vendor/guzzlehttp/psr7/CHANGELOG.md           |   26 +-
 vendor/guzzlehttp/psr7/README.md              |  322 +-
 vendor/guzzlehttp/psr7/composer.json          |    6 +-
 vendor/guzzlehttp/psr7/src/AppendStream.php   |    5 +-
 vendor/guzzlehttp/psr7/src/BufferStream.php   |    3 +
 vendor/guzzlehttp/psr7/src/CachingStream.php  |    3 +-
 vendor/guzzlehttp/psr7/src/DroppingStream.php |    1 +
 vendor/guzzlehttp/psr7/src/FnStream.php       |    2 +
 vendor/guzzlehttp/psr7/src/InflateStream.php  |    1 +
 vendor/guzzlehttp/psr7/src/LazyOpenStream.php |    3 +-
 vendor/guzzlehttp/psr7/src/LimitStream.php    |    1 +
 vendor/guzzlehttp/psr7/src/MessageTrait.php   |    7 +-
 .../guzzlehttp/psr7/src/MultipartStream.php   |   11 +-
 vendor/guzzlehttp/psr7/src/NoSeekStream.php   |    1 +
 vendor/guzzlehttp/psr7/src/PumpStream.php     |    5 +-
 vendor/guzzlehttp/psr7/src/Request.php        |    3 +-
 vendor/guzzlehttp/psr7/src/Response.php       |    5 +-
 vendor/guzzlehttp/psr7/src/ServerRequest.php  |    4 +-
 vendor/guzzlehttp/psr7/src/Stream.php         |    9 +-
 .../psr7/src/StreamDecoratorTrait.php         |    4 +-
 vendor/guzzlehttp/psr7/src/StreamWrapper.php  |    2 +
 vendor/guzzlehttp/psr7/src/UploadedFile.php   |   11 +-
 vendor/guzzlehttp/psr7/src/Uri.php            |    1 +
 vendor/guzzlehttp/psr7/src/UriNormalizer.php  |    1 +
 vendor/guzzlehttp/psr7/src/UriResolver.php    |    1 +
 vendor/guzzlehttp/psr7/src/functions.php      |  742 +---
 vendor/hab/solr                               |    2 +-
 vendor/pimple/pimple/.travis.yml              |   29 +-
 vendor/pimple/pimple/CHANGELOG                |    9 +-
 vendor/pimple/pimple/LICENSE                  |    2 +-
 vendor/pimple/pimple/composer.json            |    8 +-
 vendor/pimple/pimple/ext/pimple/.gitignore    |   30 -
 vendor/pimple/pimple/ext/pimple/README.md     |   12 -
 vendor/pimple/pimple/ext/pimple/config.m4     |   63 -
 vendor/pimple/pimple/ext/pimple/config.w32    |   13 -
 vendor/pimple/pimple/ext/pimple/php_pimple.h  |  137 -
 vendor/pimple/pimple/ext/pimple/pimple.c      | 1114 -----
 .../pimple/pimple/ext/pimple/pimple_compat.h  |   81 -
 .../pimple/pimple/ext/pimple/tests/001.phpt   |   45 -
 .../pimple/pimple/ext/pimple/tests/002.phpt   |   15 -
 .../pimple/pimple/ext/pimple/tests/003.phpt   |   16 -
 .../pimple/pimple/ext/pimple/tests/004.phpt   |   30 -
 .../pimple/pimple/ext/pimple/tests/005.phpt   |   27 -
 .../pimple/pimple/ext/pimple/tests/006.phpt   |   51 -
 .../pimple/pimple/ext/pimple/tests/007.phpt   |   22 -
 .../pimple/pimple/ext/pimple/tests/008.phpt   |   29 -
 .../pimple/pimple/ext/pimple/tests/009.phpt   |   13 -
 .../pimple/pimple/ext/pimple/tests/010.phpt   |   45 -
 .../pimple/pimple/ext/pimple/tests/011.phpt   |   19 -
 .../pimple/pimple/ext/pimple/tests/012.phpt   |   28 -
 .../pimple/pimple/ext/pimple/tests/013.phpt   |   33 -
 .../pimple/pimple/ext/pimple/tests/014.phpt   |   30 -
 .../pimple/pimple/ext/pimple/tests/015.phpt   |   17 -
 .../pimple/pimple/ext/pimple/tests/016.phpt   |   24 -
 .../pimple/pimple/ext/pimple/tests/017.phpt   |   17 -
 .../pimple/pimple/ext/pimple/tests/017_1.phpt |   17 -
 .../pimple/pimple/ext/pimple/tests/018.phpt   |   23 -
 .../pimple/pimple/ext/pimple/tests/019.phpt   |   18 -
 .../pimple/pimple/ext/pimple/tests/bench.phpb |   51 -
 .../pimple/ext/pimple/tests/bench_shared.phpb |   25 -
 vendor/pimple/pimple/phpunit.xml.dist         |    4 +
 vendor/pimple/pimple/src/Pimple/Container.php |   14 +-
 .../src/Pimple/Psr11/ServiceLocator.php       |    2 +-
 .../PimpleServiceProviderInterfaceTest.php    |    9 +-
 .../pimple/src/Pimple/Tests/PimpleTest.php    |  165 +-
 .../src/Pimple/Tests/Psr11/ContainerTest.php  |    7 +-
 .../Pimple/Tests/Psr11/ServiceLocatorTest.php |   35 +-
 .../src/Pimple/Tests/ServiceIteratorTest.php  |    4 +-
 vendor/psr/log/.gitignore                     |    1 -
 vendor/psr/log/Psr/Log/LoggerInterface.php    |   40 +-
 vendor/psr/log/Psr/Log/LoggerTrait.php        |    2 +
 vendor/psr/log/Psr/Log/NullLogger.php         |    2 +
 .../log/Psr/Log/Test/LoggerInterfaceTest.php  |   10 +-
 vendor/psr/log/Psr/Log/Test/TestLogger.php    |    1 +
 vendor/psr/log/README.md                      |    6 +
 vendor/psr/log/composer.json                  |    2 +-
 vendor/symfony/debug/.gitignore               |    3 -
 vendor/symfony/debug/BufferingLogger.php      |    7 +
 vendor/symfony/debug/CHANGELOG.md             |    6 +
 vendor/symfony/debug/Debug.php                |   10 +-
 vendor/symfony/debug/DebugClassLoader.php     |   37 +-
 vendor/symfony/debug/ErrorHandler.php         |  123 +-
 .../Exception/ClassNotFoundException.php      |    4 +
 .../debug/Exception/FatalErrorException.php   |    4 +
 .../debug/Exception/FatalThrowableError.php   |   12 +-
 .../debug/Exception/FlattenException.php      |   26 +-
 .../debug/Exception/OutOfMemoryException.php  |    4 +
 .../debug/Exception/SilencedErrorContext.php  |    4 +
 .../Exception/UndefinedFunctionException.php  |    4 +
 .../Exception/UndefinedMethodException.php    |    4 +
 vendor/symfony/debug/ExceptionHandler.php     |   38 +-
 .../ClassNotFoundFatalErrorHandler.php        |   60 +-
 .../FatalErrorHandlerInterface.php            |    7 +-
 .../UndefinedFunctionFatalErrorHandler.php    |    4 +
 .../UndefinedMethodFatalErrorHandler.php      |    4 +
 vendor/symfony/debug/LICENSE                  |    2 +-
 vendor/symfony/debug/README.md                |   19 +-
 .../debug/Tests/DebugClassLoaderTest.php      |  444 --
 .../symfony/debug/Tests/ErrorHandlerTest.php  |  562 ---
 .../Tests/Exception/FlattenExceptionTest.php  |  388 --
 .../debug/Tests/ExceptionHandlerTest.php      |  172 -
 .../ClassNotFoundFatalErrorHandlerTest.php    |  180 -
 ...UndefinedFunctionFatalErrorHandlerTest.php |   81 -
 .../UndefinedMethodFatalErrorHandlerTest.php  |   76 -
 .../debug/Tests/Fixtures/AnnotatedClass.php   |   13 -
 .../debug/Tests/Fixtures/ClassAlias.php       |    3 -
 .../Fixtures/ClassWithAnnotatedParameters.php |   34 -
 .../Fixtures/DefinitionInEvaluatedCode.php    |   11 -
 .../debug/Tests/Fixtures/DeprecatedClass.php  |   12 -
 .../Tests/Fixtures/DeprecatedInterface.php    |   12 -
 .../ErrorHandlerThatUsesThePreviousOne.php    |   22 -
 .../Tests/Fixtures/ExtendedFinalMethod.php    |   19 -
 .../debug/Tests/Fixtures/FinalClasses.php     |   85 -
 .../debug/Tests/Fixtures/FinalMethod.php      |   26 -
 .../Tests/Fixtures/FinalMethod2Trait.php      |   10 -
 .../InterfaceWithAnnotatedParameters.php      |   27 -
 .../debug/Tests/Fixtures/InternalClass.php    |   15 -
 .../Tests/Fixtures/InternalInterface.php      |   10 -
 .../debug/Tests/Fixtures/InternalTrait.php    |   10 -
 .../debug/Tests/Fixtures/InternalTrait2.php   |   23 -
 .../Fixtures/LoggerThatSetAnErrorHandler.php  |   15 -
 .../Tests/Fixtures/NonDeprecatedInterface.php |    7 -
 .../debug/Tests/Fixtures/PEARClass.php        |    5 -
 .../SubClassWithAnnotatedParameters.php       |   32 -
 .../symfony/debug/Tests/Fixtures/Throwing.php |    3 -
 .../debug/Tests/Fixtures/ToStringThrower.php  |   24 -
 .../Fixtures/TraitWithAnnotatedParameters.php |   13 -
 .../Fixtures/TraitWithInternalMethod.php      |   13 -
 .../debug/Tests/Fixtures/VirtualClass.php     |   11 -
 .../Tests/Fixtures/VirtualClassMagicCall.php  |   18 -
 .../debug/Tests/Fixtures/VirtualInterface.php |   34 -
 .../Tests/Fixtures/VirtualSubInterface.php    |   10 -
 .../debug/Tests/Fixtures/VirtualTrait.php     |   10 -
 .../debug/Tests/Fixtures/casemismatch.php     |    7 -
 .../debug/Tests/Fixtures/notPsr0Bis.php       |    7 -
 .../Tests/Fixtures/psr4/Psr4CaseMismatch.php  |    7 -
 .../debug/Tests/Fixtures/reallyNotPsr0.php    |    7 -
 .../debug/Tests/Fixtures2/RequiredTwice.php   |    7 -
 vendor/symfony/debug/Tests/HeaderMock.php     |   38 -
 .../debug/Tests/phpt/debug_class_loader.phpt  |   27 -
 .../Tests/phpt/decorate_exception_hander.phpt |   47 -
 .../debug/Tests/phpt/exception_rethrown.phpt  |   35 -
 .../phpt/fatal_with_nested_handlers.phpt      |   42 -
 vendor/symfony/debug/composer.json            |   14 +-
 vendor/symfony/debug/phpunit.xml.dist         |   33 -
 .../event-dispatcher-contracts/LICENSE        |    2 +-
 .../event-dispatcher-contracts/composer.json  |    6 +-
 vendor/symfony/event-dispatcher/.gitignore    |    3 -
 vendor/symfony/event-dispatcher/CHANGELOG.md  |    8 +-
 .../Debug/TraceableEventDispatcher.php        |    8 +-
 .../RegisterListenersPass.php                 |   36 +-
 .../event-dispatcher/EventDispatcher.php      |   28 +-
 .../EventSubscriberInterface.php              |    3 +
 vendor/symfony/event-dispatcher/LICENSE       |    2 +-
 .../LegacyEventDispatcherProxy.php            |   14 +-
 .../event-dispatcher/LegacyEventProxy.php     |    2 +-
 vendor/symfony/event-dispatcher/README.md     |    2 +-
 .../Tests/ChildEventDispatcherTest.php        |   26 -
 .../Debug/TraceableEventDispatcherTest.php    |  319 --
 .../Tests/Debug/WrappedListenerTest.php       |   60 -
 .../RegisterListenersPassTest.php             |  258 --
 .../Tests/EventDispatcherTest.php             |  511 ---
 .../event-dispatcher/Tests/EventTest.php      |   55 -
 .../Tests/GenericEventTest.php                |  134 -
 .../Tests/ImmutableEventDispatcherTest.php    |  100 -
 .../Tests/LegacyEventDispatcherTest.php       |   63 -
 vendor/symfony/event-dispatcher/composer.json |   22 +-
 .../symfony/event-dispatcher/phpunit.xml.dist |   31 -
 vendor/symfony/http-foundation/.gitignore     |    3 -
 .../symfony/http-foundation/AcceptHeader.php  |    5 +-
 .../symfony/http-foundation/ApacheRequest.php |    4 +
 .../http-foundation/BinaryFileResponse.php    |   51 +-
 vendor/symfony/http-foundation/CHANGELOG.md   |   15 +
 vendor/symfony/http-foundation/Cookie.php     |    2 +-
 .../File/Exception/AccessDeniedException.php  |    3 -
 .../File/Exception/FileNotFoundException.php  |    3 -
 vendor/symfony/http-foundation/File/File.php  |   11 +-
 .../File/MimeType/ExtensionGuesser.php        |    2 +-
 .../MimeType/FileBinaryMimeTypeGuesser.php    |    8 +-
 .../File/MimeType/FileinfoMimeTypeGuesser.php |   12 +-
 .../MimeType/MimeTypeExtensionGuesser.php     |    4 +-
 .../File/MimeType/MimeTypeGuesser.php         |    4 +-
 .../http-foundation/File/UploadedFile.php     |   56 +-
 vendor/symfony/http-foundation/FileBag.php    |    4 +-
 vendor/symfony/http-foundation/HeaderBag.php  |   68 +-
 .../symfony/http-foundation/HeaderUtils.php   |    2 +-
 vendor/symfony/http-foundation/IpUtils.php    |   36 +-
 .../symfony/http-foundation/JsonResponse.php  |    4 +-
 vendor/symfony/http-foundation/LICENSE        |    2 +-
 .../symfony/http-foundation/ParameterBag.php  |   15 +-
 vendor/symfony/http-foundation/README.md      |    2 +-
 .../http-foundation/RedirectResponse.php      |   11 +-
 vendor/symfony/http-foundation/Request.php    |  105 +-
 vendor/symfony/http-foundation/Response.php   |   17 +-
 .../http-foundation/ResponseHeaderBag.php     |   36 +-
 vendor/symfony/http-foundation/ServerBag.php  |   13 +-
 .../Attribute/AttributeBagInterface.php       |    7 +-
 .../http-foundation/Session/Session.php       |   27 +-
 .../Session/SessionBagProxy.php               |   18 +-
 .../Session/SessionInterface.php              |   16 +-
 .../Handler/AbstractSessionHandler.php        |   25 +-
 .../Handler/MemcachedSessionHandler.php       |    2 +-
 .../Handler/MigratingSessionHandler.php       |   14 +-
 .../Storage/Handler/MongoDbSessionHandler.php |   16 +-
 .../Handler/NativeFileSessionHandler.php      |    4 +-
 .../Storage/Handler/NullSessionHandler.php    |    6 +-
 .../Storage/Handler/PdoSessionHandler.php     |  105 +-
 .../Storage/Handler/RedisSessionHandler.php   |   24 +-
 .../Storage/Handler/StrictSessionHandler.php  |    8 +-
 .../Session/Storage/MetadataBag.php           |    2 +-
 .../Storage/MockArraySessionStorage.php       |    4 +-
 .../Storage/MockFileSessionStorage.php        |   17 +-
 .../Session/Storage/NativeSessionStorage.php  |   31 +-
 .../Storage/PhpBridgeSessionStorage.php       |    5 +-
 .../Session/Storage/Proxy/AbstractProxy.php   |    4 +-
 .../Storage/Proxy/SessionHandlerProxy.php     |   14 +-
 .../http-foundation/StreamedResponse.php      |    2 -
 .../Constraint/RequestAttributeValueSame.php  |    1 +
 .../Test/Constraint/ResponseHasCookie.php     |    2 +-
 .../Test/Constraint/ResponseHeaderSame.php    |    2 +-
 .../Tests/AcceptHeaderItemTest.php            |  113 -
 .../Tests/AcceptHeaderTest.php                |  130 -
 .../Tests/ApacheRequestTest.php               |   93 -
 .../Tests/BinaryFileResponseTest.php          |  365 --
 .../http-foundation/Tests/CookieTest.php      |  264 --
 .../Tests/ExpressionRequestMatcherTest.php    |   67 -
 .../http-foundation/Tests/File/FakeFile.php   |   45 -
 .../http-foundation/Tests/File/FileTest.php   |  144 -
 .../Tests/File/Fixtures/.unknownextension     |    1 -
 .../Fixtures/case-sensitive-mime-type.xlsm    |  Bin 4791 -> 0 bytes
 .../Tests/File/Fixtures/directory/.empty      |    0
 .../Tests/File/Fixtures/other-file.example    |    0
 .../http-foundation/Tests/File/Fixtures/test  |  Bin 35 -> 0 bytes
 .../Tests/File/Fixtures/test.gif              |  Bin 35 -> 0 bytes
 .../Tests/File/MimeType/MimeTypeTest.php      |   89 -
 .../Tests/File/UploadedFileTest.php           |  370 --
 .../http-foundation/Tests/FileBagTest.php     |  176 -
 .../Fixtures/response-functional/common.inc   |   43 -
 .../cookie_max_age.expected                   |   11 -
 .../response-functional/cookie_max_age.php    |   10 -
 .../cookie_raw_urlencode.expected             |   10 -
 .../cookie_raw_urlencode.php                  |   12 -
 .../cookie_samesite_lax.expected              |    9 -
 .../cookie_samesite_lax.php                   |    8 -
 .../cookie_samesite_strict.expected           |    9 -
 .../cookie_samesite_strict.php                |    8 -
 .../cookie_urlencode.expected                 |   11 -
 .../response-functional/cookie_urlencode.php  |   15 -
 .../invalid_cookie_name.expected              |    6 -
 .../invalid_cookie_name.php                   |   11 -
 .../http-foundation/Tests/HeaderBagTest.php   |  213 -
 .../http-foundation/Tests/HeaderUtilsTest.php |  132 -
 .../http-foundation/Tests/IpUtilsTest.php     |  104 -
 .../Tests/JsonResponseTest.php                |  253 --
 .../Tests/ParameterBagTest.php                |  194 -
 .../Tests/RedirectResponseTest.php            |   95 -
 .../Tests/RequestMatcherTest.php              |  166 -
 .../Tests/RequestStackTest.php                |   70 -
 .../http-foundation/Tests/RequestTest.php     | 2325 ----------
 .../Tests/ResponseFunctionalTest.php          |   58 -
 .../Tests/ResponseHeaderBagTest.php           |  306 --
 .../http-foundation/Tests/ResponseTest.php    | 1070 -----
 .../Tests/ResponseTestCase.php                |   89 -
 .../http-foundation/Tests/ServerBagTest.php   |  170 -
 .../Session/Attribute/AttributeBagTest.php    |  186 -
 .../Attribute/NamespacedAttributeBagTest.php  |  204 -
 .../Session/Flash/AutoExpireFlashBagTest.php  |  161 -
 .../Tests/Session/Flash/FlashBagTest.php      |  157 -
 .../Tests/Session/SessionTest.php             |  288 --
 .../AbstractRedisSessionHandlerTestCase.php   |  145 -
 .../Handler/AbstractSessionHandlerTest.php    |   58 -
 .../Storage/Handler/Fixtures/common.inc       |  151 -
 .../Handler/Fixtures/empty_destroys.expected  |   17 -
 .../Handler/Fixtures/empty_destroys.php       |    8 -
 .../Handler/Fixtures/read_only.expected       |   14 -
 .../Storage/Handler/Fixtures/read_only.php    |    8 -
 .../Handler/Fixtures/regenerate.expected      |   24 -
 .../Storage/Handler/Fixtures/regenerate.php   |   10 -
 .../Storage/Handler/Fixtures/storage.expected |   21 -
 .../Storage/Handler/Fixtures/storage.php      |   24 -
 .../Handler/Fixtures/with_cookie.expected     |   15 -
 .../Storage/Handler/Fixtures/with_cookie.php  |    8 -
 .../Fixtures/with_cookie_and_session.expected |   25 -
 .../Fixtures/with_cookie_and_session.php      |   13 -
 .../Handler/Fixtures/with_samesite.expected   |   16 -
 .../Handler/Fixtures/with_samesite.php        |   13 -
 .../with_samesite_and_migration.expected      |   23 -
 .../Fixtures/with_samesite_and_migration.php  |   15 -
 .../Handler/MemcachedSessionHandlerTest.php   |  141 -
 .../Handler/MigratingSessionHandlerTest.php   |  186 -
 .../Handler/MongoDbSessionHandlerTest.php     |  208 -
 .../Handler/NativeFileSessionHandlerTest.php  |   74 -
 .../Handler/NullSessionHandlerTest.php        |   59 -
 .../Storage/Handler/PdoSessionHandlerTest.php |  398 --
 .../PredisClusterSessionHandlerTest.php       |   22 -
 .../Handler/PredisSessionHandlerTest.php      |   22 -
 .../Handler/RedisArraySessionHandlerTest.php  |   20 -
 .../RedisClusterSessionHandlerTest.php        |   31 -
 .../Handler/RedisSessionHandlerTest.php       |   23 -
 .../Handler/StrictSessionHandlerTest.php      |  189 -
 .../Tests/Session/Storage/MetadataBagTest.php |  139 -
 .../Storage/MockArraySessionStorageTest.php   |  129 -
 .../Storage/MockFileSessionStorageTest.php    |  125 -
 .../Storage/NativeSessionStorageTest.php      |  290 --
 .../Storage/PhpBridgeSessionStorageTest.php   |   95 -
 .../Storage/Proxy/AbstractProxyTest.php       |  113 -
 .../Storage/Proxy/SessionHandlerProxyTest.php |  158 -
 .../Tests/StreamedResponseTest.php            |  140 -
 .../RequestAttributeValueSameTest.php         |   41 -
 .../ResponseCookieValueSameTest.php           |   44 -
 .../Test/Constraint/ResponseHasCookieTest.php |   42 -
 .../Test/Constraint/ResponseHasHeaderTest.php |   39 -
 .../Constraint/ResponseHeaderSameTest.php     |   39 -
 .../Constraint/ResponseIsRedirectedTest.php   |   39 -
 .../Constraint/ResponseIsSuccessfulTest.php   |   39 -
 .../Constraint/ResponseStatusCodeSameTest.php |   41 -
 .../http-foundation/Tests/UrlHelperTest.php   |  143 -
 .../Tests/schema/http-status-codes.rng        |   31 -
 .../Tests/schema/iana-registry.rng            |  198 -
 vendor/symfony/http-foundation/composer.json  |   13 +-
 .../symfony/http-foundation/phpunit.xml.dist  |   31 -
 vendor/symfony/http-kernel/.gitignore         |    5 -
 vendor/symfony/http-kernel/Bundle/Bundle.php  |    6 +-
 vendor/symfony/http-kernel/CHANGELOG.md       |   27 +-
 .../CacheClearer/Psr6CacheClearer.php         |    4 +-
 .../CacheWarmer/CacheWarmerAggregate.php      |    6 +-
 vendor/symfony/http-kernel/Client.php         |    7 +-
 .../http-kernel/Config/FileLocator.php        |   56 +-
 .../Controller/ArgumentResolver.php           |   12 +-
 .../ArgumentResolver/DefaultValueResolver.php |    4 +-
 .../NotTaggedControllerValueResolver.php      |    4 +-
 .../RequestAttributeValueResolver.php         |    4 +-
 .../ArgumentResolver/RequestValueResolver.php |    4 +-
 .../ArgumentResolver/ServiceValueResolver.php |    4 +-
 .../ArgumentResolver/SessionValueResolver.php |    4 +-
 .../VariadicValueResolver.php                 |    8 +-
 .../ArgumentValueResolverInterface.php        |    2 +-
 .../ContainerControllerResolver.php           |    4 +-
 .../Controller/ControllerResolver.php         |   12 +-
 .../ControllerMetadata/ArgumentMetadata.php   |    2 +-
 .../ArgumentMetadataFactory.php               |   26 +-
 .../DataCollector/AjaxDataCollector.php       |    9 +-
 .../DataCollector/ConfigDataCollector.php     |   49 +-
 .../DataCollector/DataCollector.php           |   22 +-
 .../DataCollector/DataCollectorInterface.php  |    4 +-
 .../DataCollector/DumpDataCollector.php       |   21 +-
 .../DataCollector/EventDataCollector.php      |    6 +-
 .../DataCollector/ExceptionDataCollector.php  |   12 +-
 .../DataCollector/LoggerDataCollector.php     |   22 +-
 .../DataCollector/MemoryDataCollector.php     |   11 +-
 .../DataCollector/RequestDataCollector.php    |   20 +-
 .../DataCollector/RouterDataCollector.php     |    6 +-
 .../DataCollector/TimeDataCollector.php       |    6 +-
 .../http-kernel/Debug/FileLinkFormatter.php   |    5 +-
 .../AddAnnotatedClassesToCachePass.php        |   19 +-
 ...RegisterControllerArgumentLocatorsPass.php |    2 +-
 .../ResettableServicePass.php                 |   17 +-
 .../DependencyInjection/ServicesResetter.php  |    4 +-
 .../Event/ControllerArgumentsEvent.php        |    2 +
 .../http-kernel/Event/ControllerEvent.php     |    2 +
 .../http-kernel/Event/ExceptionEvent.php      |    2 +
 .../http-kernel/Event/FinishRequestEvent.php  |    2 +
 .../Event/GetResponseForExceptionEvent.php    |   45 +-
 .../symfony/http-kernel/Event/KernelEvent.php |    6 +-
 .../http-kernel/Event/ResponseEvent.php       |    2 +
 .../http-kernel/Event/TerminateEvent.php      |    2 +
 .../symfony/http-kernel/Event/ViewEvent.php   |    2 +
 .../AbstractTestSessionListener.php           |    3 +-
 .../EventListener/DebugHandlersListener.php   |   83 +-
 .../EventListener/ExceptionListener.php       |   18 +-
 .../EventListener/FragmentListener.php        |    5 +-
 .../EventListener/LocaleAwareListener.php     |    7 +-
 .../EventListener/LocaleListener.php          |    5 -
 .../EventListener/ProfilerListener.php        |    9 +-
 .../EventListener/RouterListener.php          |   14 +-
 .../EventListener/SaveSessionListener.php     |    6 +-
 .../EventListener/SessionListener.php         |    3 +-
 .../EventListener/TestSessionListener.php     |    3 +-
 .../EventListener/TranslatorListener.php      |    4 +-
 .../Exception/HttpExceptionInterface.php      |    2 +-
 .../AbstractSurrogateFragmentRenderer.php     |    4 +-
 .../http-kernel/Fragment/FragmentHandler.php  |    8 +-
 .../Fragment/FragmentRendererInterface.php    |    4 +-
 .../Fragment/HIncludeFragmentRenderer.php     |    9 +-
 .../Fragment/RoutableFragmentRenderer.php     |    8 +-
 .../HttpCache/AbstractSurrogate.php           |    2 +-
 vendor/symfony/http-kernel/HttpCache/Esi.php  |    4 +-
 .../http-kernel/HttpCache/HttpCache.php       |   60 +-
 .../HttpCache/ResponseCacheStrategy.php       |   13 +-
 vendor/symfony/http-kernel/HttpCache/Ssi.php  |    4 +-
 .../symfony/http-kernel/HttpCache/Store.php   |   93 +-
 .../HttpCache/SurrogateInterface.php          |    7 +-
 .../symfony/http-kernel/HttpClientKernel.php  |   14 +-
 vendor/symfony/http-kernel/HttpKernel.php     |   45 +-
 .../http-kernel/HttpKernelInterface.php       |    7 +-
 vendor/symfony/http-kernel/Kernel.php         |  169 +-
 .../symfony/http-kernel/KernelInterface.php   |   17 +-
 vendor/symfony/http-kernel/LICENSE            |    2 +-
 vendor/symfony/http-kernel/Log/Logger.php     |   23 +-
 .../Profiler/FileProfilerStorage.php          |   27 +-
 .../symfony/http-kernel/Profiler/Profile.php  |    3 +
 .../symfony/http-kernel/Profiler/Profiler.php |   14 +-
 .../Profiler/ProfilerStorageInterface.php     |    6 +-
 vendor/symfony/http-kernel/README.md          |    2 +-
 .../http-kernel/Resources/welcome.html.php    |  135 +-
 .../http-kernel/Tests/Bundle/BundleTest.php   |   70 -
 .../CacheClearer/ChainCacheClearerTest.php    |   46 -
 .../CacheClearer/Psr6CacheClearerTest.php     |   46 -
 .../CacheWarmer/CacheWarmerAggregateTest.php  |   79 -
 .../Tests/CacheWarmer/CacheWarmerTest.php     |   66 -
 .../Tests/Config/FileLocatorTest.php          |   48 -
 .../NotTaggedControllerValueResolverTest.php  |  109 -
 .../ServiceValueResolverTest.php              |  156 -
 .../TraceableValueResolverTest.php            |   76 -
 .../Tests/Controller/ArgumentResolverTest.php |  326 --
 .../ContainerControllerResolverTest.php       |  259 --
 .../Controller/ControllerResolverTest.php     |  253 --
 .../ArgumentMetadataFactoryTest.php           |  139 -
 .../ArgumentMetadataTest.php                  |   44 -
 .../Tests/DataCollector/Compiler.log          |    4 -
 .../DataCollector/ConfigDataCollectorTest.php |   76 -
 .../Tests/DataCollector/DataCollectorTest.php |   38 -
 .../DataCollector/DumpDataCollectorTest.php   |  154 -
 .../ExceptionDataCollectorTest.php            |   59 -
 .../DataCollector/LoggerDataCollectorTest.php |  188 -
 .../DataCollector/MemoryDataCollectorTest.php |   59 -
 .../RequestDataCollectorTest.php              |  390 --
 .../DataCollector/TimeDataCollectorTest.php   |   57 -
 .../Tests/Debug/FileLinkFormatterTest.php     |   54 -
 .../Debug/TraceableEventDispatcherTest.php    |  120 -
 .../AddAnnotatedClassesToCachePassTest.php    |   99 -
 ...ontrollerArgumentValueResolverPassTest.php |  131 -
 .../FragmentRendererPassTest.php              |   70 -
 .../LazyLoadingFragmentHandlerTest.php        |   41 -
 .../DependencyInjection/LoggerPassTest.php    |   56 -
 .../MergeExtensionConfigurationPassTest.php   |   50 -
 ...sterControllerArgumentLocatorsPassTest.php |  436 --
 .../RegisterLocaleAwareServicesPassTest.php   |   59 -
 ...mptyControllerArgumentLocatorsPassTest.php |  109 -
 .../ResettableServicePassTest.php             |   76 -
 .../ServicesResetterTest.php                  |   42 -
 .../Event/ControllerArgumentsEventTest.php    |   17 -
 .../Tests/Event/ExceptionEventTest.php        |   27 -
 .../AddRequestFormatsListenerTest.php         |   85 -
 .../DebugHandlersListenerTest.php             |  156 -
 .../DisallowRobotsIndexingListenerTest.php    |   47 -
 .../Tests/EventListener/DumpListenerTest.php  |   81 -
 .../EventListener/ExceptionListenerTest.php   |  182 -
 .../EventListener/FragmentListenerTest.php    |  118 -
 .../EventListener/LocaleAwareListenerTest.php |  119 -
 .../EventListener/LocaleListenerTest.php      |  120 -
 .../EventListener/ProfilerListenerTest.php    |   70 -
 .../EventListener/ResponseListenerTest.php    |   95 -
 .../EventListener/RouterListenerTest.php      |  217 -
 .../EventListener/SaveSessionListenerTest.php |   52 -
 .../EventListener/SessionListenerTest.php     |  181 -
 .../EventListener/SurrogateListenerTest.php   |   67 -
 .../EventListener/TestSessionListenerTest.php |  221 -
 .../EventListener/TranslatorListenerTest.php  |  122 -
 .../ValidateRequestListenerTest.php           |   46 -
 .../AccessDeniedHttpExceptionTest.php         |   13 -
 .../Exception/BadRequestHttpExceptionTest.php |   13 -
 .../Exception/ConflictHttpExceptionTest.php   |   13 -
 .../Tests/Exception/GoneHttpExceptionTest.php |   13 -
 .../Tests/Exception/HttpExceptionTest.php     |   61 -
 .../LengthRequiredHttpExceptionTest.php       |   13 -
 .../MethodNotAllowedHttpExceptionTest.php     |   42 -
 .../NotAcceptableHttpExceptionTest.php        |   13 -
 .../Exception/NotFoundHttpExceptionTest.php   |   13 -
 .../PreconditionFailedHttpExceptionTest.php   |   13 -
 .../PreconditionRequiredHttpExceptionTest.php |   13 -
 .../ServiceUnavailableHttpExceptionTest.php   |   42 -
 .../TooManyRequestsHttpExceptionTest.php      |   42 -
 .../UnauthorizedHttpExceptionTest.php         |   42 -
 .../UnprocessableEntityHttpExceptionTest.php  |   13 -
 .../UnsupportedMediaTypeHttpExceptionTest.php |   13 -
 .../Fixtures/Bundle1Bundle/Resources/.gitkeep |    0
 .../Tests/Fixtures/Bundle1Bundle/foo.txt      |    0
 .../Tests/Fixtures/ClearableService.php       |   13 -
 .../Controller/BasicTypesController.php       |   19 -
 .../Fixtures/Controller/ExtendingRequest.php  |   18 -
 .../Fixtures/Controller/ExtendingSession.php  |   18 -
 .../Controller/NullableController.php         |   19 -
 .../Controller/VariadicController.php         |   19 -
 .../DataCollector/CloneVarDataCollector.php   |   46 -
 .../ExtensionNotValidExtension.php            |   20 -
 .../ExtensionNotValidBundle.php               |   18 -
 .../ExtensionPresentExtension.php             |   22 -
 .../ExtensionPresentBundle.php                |   18 -
 .../Tests/Fixtures/KernelForOverrideName.php  |   28 -
 .../Tests/Fixtures/KernelForTest.php          |   42 -
 .../Tests/Fixtures/KernelWithoutBundles.php   |   38 -
 .../Tests/Fixtures/ResettableService.php      |   13 -
 .../Fixtures/Resources/FooBundle/foo.txt      |    0
 .../http-kernel/Tests/Fixtures/TestClient.php |   31 -
 .../Fragment/EsiFragmentRendererTest.php      |  102 -
 .../Tests/Fragment/FragmentHandlerTest.php    |   93 -
 .../Fragment/HIncludeFragmentRendererTest.php |   99 -
 .../Fragment/InlineFragmentRendererTest.php   |  280 --
 .../Fragment/RoutableFragmentRendererTest.php |   94 -
 .../Fragment/SsiFragmentRendererTest.php      |   93 -
 .../http-kernel/Tests/HttpCache/EsiTest.php   |  244 --
 .../Tests/HttpCache/HttpCacheTest.php         | 1563 -------
 .../Tests/HttpCache/HttpCacheTestCase.php     |  187 -
 .../HttpCache/ResponseCacheStrategyTest.php   |  469 ---
 .../http-kernel/Tests/HttpCache/SsiTest.php   |  211 -
 .../http-kernel/Tests/HttpCache/StoreTest.php |  301 --
 .../Tests/HttpCache/SubRequestHandlerTest.php |  153 -
 .../Tests/HttpCache/TestHttpKernel.php        |  102 -
 .../HttpCache/TestMultipleHttpKernel.php      |   81 -
 .../Tests/HttpKernelBrowserTest.php           |  182 -
 .../http-kernel/Tests/HttpKernelTest.php      |  385 --
 .../symfony/http-kernel/Tests/KernelTest.php  |  748 ----
 .../http-kernel/Tests/Log/LoggerTest.php      |  206 -
 vendor/symfony/http-kernel/Tests/Logger.php   |   88 -
 .../Profiler/FileProfilerStorageTest.php      |  350 --
 .../Tests/Profiler/ProfilerTest.php           |  105 -
 .../http-kernel/Tests/TestHttpKernel.php      |   42 -
 .../http-kernel/Tests/UriSignerTest.php       |   76 -
 vendor/symfony/http-kernel/UriSigner.php      |    8 +-
 vendor/symfony/http-kernel/composer.json      |   55 +-
 vendor/symfony/http-kernel/phpunit.xml.dist   |   40 -
 vendor/symfony/mime/.gitignore                |    3 -
 vendor/symfony/mime/Address.php               |   41 +-
 vendor/symfony/mime/BodyRendererInterface.php |    2 -
 vendor/symfony/mime/CHANGELOG.md              |    8 +
 vendor/symfony/mime/CharacterStream.php       |   10 +-
 .../AddMimeTypeGuesserPass.php                |    2 -
 vendor/symfony/mime/Email.php                 |   76 +-
 .../mime/Encoder/AddressEncoderInterface.php  |    2 -
 .../mime/Encoder/Base64ContentEncoder.php     |    7 +-
 vendor/symfony/mime/Encoder/Base64Encoder.php |    2 -
 .../mime/Encoder/Base64MimeHeaderEncoder.php  |    2 -
 .../mime/Encoder/ContentEncoderInterface.php  |    2 -
 .../mime/Encoder/EightBitContentEncoder.php   |    2 -
 .../symfony/mime/Encoder/EncoderInterface.php |    2 -
 .../mime/Encoder/IdnAddressEncoder.php        |    8 +-
 .../Encoder/MimeHeaderEncoderInterface.php    |    2 -
 .../symfony/mime/Encoder/QpContentEncoder.php |    6 -
 vendor/symfony/mime/Encoder/QpEncoder.php     |    4 +-
 .../mime/Encoder/QpMimeHeaderEncoder.php      |    2 -
 .../symfony/mime/Encoder/Rfc2231Encoder.php   |    2 -
 .../Exception/AddressEncoderException.php     |    2 -
 .../mime/Exception/ExceptionInterface.php     |    2 -
 .../Exception/InvalidArgumentException.php    |    2 -
 .../symfony/mime/Exception/LogicException.php |    2 -
 .../mime/Exception/RfcComplianceException.php |    2 -
 .../mime/Exception/RuntimeException.php       |    2 -
 .../mime/FileBinaryMimeTypeGuesser.php        |    8 +-
 .../symfony/mime/FileinfoMimeTypeGuesser.php  |   12 +-
 vendor/symfony/mime/Header/AbstractHeader.php |    4 +-
 vendor/symfony/mime/Header/DateHeader.php     |    7 +-
 .../symfony/mime/Header/HeaderInterface.php   |    2 -
 vendor/symfony/mime/Header/Headers.php        |   25 +-
 .../mime/Header/IdentificationHeader.php      |    7 +-
 vendor/symfony/mime/Header/MailboxHeader.php  |    9 +-
 .../symfony/mime/Header/MailboxListHeader.php |   21 +-
 .../mime/Header/ParameterizedHeader.php       |    5 +-
 vendor/symfony/mime/Header/PathHeader.php     |    7 +-
 .../mime/Header/UnstructuredHeader.php        |    2 -
 vendor/symfony/mime/LICENSE                   |    2 +-
 vendor/symfony/mime/Message.php               |   46 +-
 vendor/symfony/mime/MessageConverter.php      |   14 +-
 .../symfony/mime/MimeTypeGuesserInterface.php |    2 -
 vendor/symfony/mime/MimeTypes.php             |   13 +-
 vendor/symfony/mime/MimeTypesInterface.php    |    2 -
 vendor/symfony/mime/NamedAddress.php          |   44 -
 .../mime/Part/AbstractMultipartPart.php       |   18 +-
 vendor/symfony/mime/Part/AbstractPart.php     |    7 +-
 vendor/symfony/mime/Part/DataPart.php         |   21 +-
 vendor/symfony/mime/Part/MessagePart.php      |    2 -
 .../mime/Part/Multipart/AlternativePart.php   |    2 -
 .../mime/Part/Multipart/DigestPart.php        |    2 -
 .../mime/Part/Multipart/FormDataPart.php      |   27 +-
 .../symfony/mime/Part/Multipart/MixedPart.php |    2 -
 .../mime/Part/Multipart/RelatedPart.php       |    2 -
 vendor/symfony/mime/Part/TextPart.php         |   34 +-
 vendor/symfony/mime/README.md                 |    5 -
 vendor/symfony/mime/RawMessage.php            |   15 +-
 .../Tests/AbstractMimeTypeGuesserTest.php     |  102 -
 vendor/symfony/mime/Tests/AddressTest.php     |   61 -
 .../mime/Tests/CharacterStreamTest.php        |   87 -
 .../AddMimeTypeGuesserPassTest.php            |   42 -
 vendor/symfony/mime/Tests/EmailTest.php       |  389 --
 .../mime/Tests/Encoder/Base64EncoderTest.php  |  158 -
 .../Encoder/Base64MimeHeaderEncoderTest.php   |   23 -
 .../mime/Tests/Encoder/QpEncoderTest.php      |  213 -
 .../Tests/Encoder/QpMimeHeaderEncoderTest.php |  139 -
 .../mime/Tests/Encoder/Rfc2231EncoderTest.php |  129 -
 .../Tests/FileBinaryMimeTypeGuesserTest.php   |   23 -
 .../Tests/FileinfoMimeTypeGuesserTest.php     |   26 -
 .../Fixtures/mimetypes/.unknownextension      |    1 -
 .../Tests/Fixtures/mimetypes/directory/.empty |    0
 .../Fixtures/mimetypes/other-file.example     |    0
 .../mime/Tests/Fixtures/mimetypes/test        |  Bin 35 -> 0 bytes
 .../mime/Tests/Fixtures/mimetypes/test.gif    |  Bin 35 -> 0 bytes
 .../samples/charsets/iso-2022-jp/one.txt      |   11 -
 .../samples/charsets/iso-8859-1/one.txt       |   19 -
 .../Fixtures/samples/charsets/utf-8/one.txt   |   22 -
 .../Fixtures/samples/charsets/utf-8/three.txt |   45 -
 .../Fixtures/samples/charsets/utf-8/two.txt   |    3 -
 .../mime/Tests/Header/DateHeaderTest.php      |   80 -
 .../symfony/mime/Tests/Header/HeadersTest.php |  245 --
 .../Tests/Header/IdentificationHeaderTest.php |  173 -
 .../mime/Tests/Header/MailboxHeaderTest.php   |   77 -
 .../Tests/Header/MailboxListHeaderTest.php    |  131 -
 .../Tests/Header/ParameterizedHeaderTest.php  |  295 --
 .../mime/Tests/Header/PathHeaderTest.php      |   77 -
 .../Tests/Header/UnstructuredHeaderTest.php   |  247 --
 .../mime/Tests/MessageConverterTest.php       |   81 -
 vendor/symfony/mime/Tests/MessageTest.php     |  151 -
 vendor/symfony/mime/Tests/MimeTypesTest.php   |   61 -
 .../symfony/mime/Tests/NamedAddressTest.php   |   42 -
 .../symfony/mime/Tests/Part/DataPartTest.php  |  149 -
 .../mime/Tests/Part/MessagePartTest.php       |   42 -
 .../Part/Multipart/AlternativePartTest.php    |   25 -
 .../Tests/Part/Multipart/DigestPartTest.php   |   28 -
 .../Tests/Part/Multipart/FormDataPartTest.php |   66 -
 .../Tests/Part/Multipart/MixedPartTest.php    |   25 -
 .../Tests/Part/Multipart/RelatedPartTest.php  |   30 -
 .../symfony/mime/Tests/Part/TextPartTest.php  |   92 -
 vendor/symfony/mime/Tests/RawMessageTest.php  |   35 -
 vendor/symfony/mime/composer.json             |   17 +-
 vendor/symfony/mime/phpunit.xml.dist          |   31 -
 vendor/symfony/polyfill-ctype/bootstrap.php   |   42 +-
 vendor/symfony/polyfill-ctype/composer.json   |    8 +-
 vendor/symfony/polyfill-intl-idn/Idn.php      |  982 ++++-
 vendor/symfony/polyfill-intl-idn/LICENSE      |    2 +-
 vendor/symfony/polyfill-intl-idn/README.md    |    2 +-
 .../symfony/polyfill-intl-idn/bootstrap.php   |   88 +-
 .../symfony/polyfill-intl-idn/composer.json   |   16 +-
 vendor/symfony/polyfill-mbstring/Mbstring.php |   33 +-
 vendor/symfony/polyfill-mbstring/README.md    |    2 +-
 .../Resources/unidata/lowerCase.php           |  303 +-
 .../Resources/unidata/upperCase.php           |  312 +-
 .../symfony/polyfill-mbstring/bootstrap.php   |  165 +-
 .../symfony/polyfill-mbstring/composer.json   |    8 +-
 vendor/symfony/polyfill-php72/Php72.php       |    7 +-
 vendor/symfony/polyfill-php72/README.md       |    5 +-
 vendor/symfony/polyfill-php72/bootstrap.php   |   65 +-
 vendor/symfony/polyfill-php72/composer.json   |    8 +-
 vendor/symfony/polyfill-php73/bootstrap.php   |   33 +-
 vendor/symfony/polyfill-php73/composer.json   |    8 +-
 vendor/symfony/routing/.gitignore             |    3 -
 vendor/symfony/routing/Annotation/Route.php   |    9 +-
 vendor/symfony/routing/CHANGELOG.md           |    7 +
 vendor/symfony/routing/CompiledRoute.php      |    2 +
 .../Exception/MethodNotAllowedException.php   |    2 +-
 .../Generator/CompiledUrlGenerator.php        |    9 +-
 .../Dumper/GeneratorDumperInterface.php       |    2 -
 .../Generator/Dumper/PhpGeneratorDumper.php   |   19 +-
 .../routing/Generator/UrlGenerator.php        |   16 +-
 vendor/symfony/routing/LICENSE                |    2 +-
 .../routing/Loader/AnnotationClassLoader.php  |    8 +-
 .../routing/Loader/AnnotationFileLoader.php   |   23 +-
 .../Configurator/CollectionConfigurator.php   |    8 +-
 .../Configurator/ImportConfigurator.php       |    6 +-
 .../Configurator/RoutingConfigurator.php      |   12 +-
 .../Loader/Configurator/Traits/AddTrait.php   |    4 +-
 .../Loader/Configurator/Traits/RouteTrait.php |   22 +-
 .../ServiceRouterLoader.php                   |    5 +
 .../routing/Loader/ObjectRouteLoader.php      |   66 +-
 .../symfony/routing/Loader/PhpFileLoader.php  |    2 +-
 .../symfony/routing/Loader/XmlFileLoader.php  |   71 +-
 .../symfony/routing/Loader/YamlFileLoader.php |   28 +-
 .../Loader/schema/routing/routing-1.0.xsd     |    2 +
 .../Dumper/CompiledUrlMatcherDumper.php       |    8 +-
 .../Dumper/CompiledUrlMatcherTrait.php        |    2 +-
 .../Matcher/Dumper/MatcherDumperInterface.php |    2 -
 .../Matcher/Dumper/PhpMatcherDumper.php       |    2 +-
 .../routing/Matcher/TraceableUrlMatcher.php   |    2 +-
 vendor/symfony/routing/Matcher/UrlMatcher.php |   11 +-
 vendor/symfony/routing/README.md              |   40 +-
 vendor/symfony/routing/RequestContext.php     |    4 +-
 vendor/symfony/routing/Route.php              |   35 +-
 vendor/symfony/routing/RouteCollection.php    |    9 +-
 .../routing/RouteCollectionBuilder.php        |    7 +-
 vendor/symfony/routing/RouteCompiler.php      |   16 +-
 vendor/symfony/routing/Router.php             |   51 +-
 .../routing/Tests/Annotation/RouteTest.php    |   55 -
 .../routing/Tests/CompiledRouteTest.php       |   27 -
 .../RoutingResolverPassTest.php               |   36 -
 .../AnnotatedClasses/AbstractClass.php        |   21 -
 .../Fixtures/AnnotatedClasses/BarClass.php    |   19 -
 .../Fixtures/AnnotatedClasses/BazClass.php    |   19 -
 .../AnnotatedClasses/EncodingClass.php        |   10 -
 .../Fixtures/AnnotatedClasses/FooClass.php    |   16 -
 .../Fixtures/AnnotatedClasses/FooTrait.php    |   13 -
 .../AbstractClassController.php               |    7 -
 .../ActionPathController.php                  |   15 -
 .../DefaultValueController.php                |   23 -
 .../ExplicitLocalizedActionPathController.php |   15 -
 .../GlobalDefaultsClass.php                   |   34 -
 .../InvokableController.php                   |   15 -
 .../InvokableLocalizedController.php          |   15 -
 .../LocalizedActionPathController.php         |   15 -
 .../LocalizedMethodActionControllers.php      |   25 -
 ...calizedPrefixLocalizedActionController.php |   18 -
 ...zedPrefixMissingLocaleActionController.php |   18 -
 ...efixMissingRouteLocaleActionController.php |   18 -
 .../LocalizedPrefixWithRouteWithoutLocale.php |   18 -
 .../MethodActionControllers.php               |   25 -
 .../MissingRouteNameController.php            |   15 -
 .../NothingButNameController.php              |   15 -
 ...PrefixedActionLocalizedRouteController.php |   18 -
 .../PrefixedActionPathController.php          |   18 -
 ...ementsWithoutPlaceholderNameController.php |   27 -
 .../RouteWithPrefixController.php             |   18 -
 .../Utf8ActionControllers.php                 |   25 -
 .../Tests/Fixtures/CustomCompiledRoute.php    |   18 -
 .../Tests/Fixtures/CustomRouteCompiler.php    |   26 -
 .../Tests/Fixtures/CustomXmlFileLoader.php    |   26 -
 .../AnonymousClassInTrait.php                 |   24 -
 .../OtherAnnotatedClasses/NoStartTagClass.php |    3 -
 .../OtherAnnotatedClasses/VariadicClass.php   |   19 -
 .../Tests/Fixtures/RedirectableUrlMatcher.php |   30 -
 .../routing/Tests/Fixtures/annotated.php      |    0
 .../routing/Tests/Fixtures/bad_format.yml     |    3 -
 vendor/symfony/routing/Tests/Fixtures/bar.xml |    0
 .../controller/import__controller.xml         |   10 -
 .../controller/import__controller.yml         |    4 -
 .../Fixtures/controller/import_controller.xml |    8 -
 .../Fixtures/controller/import_controller.yml |    3 -
 .../controller/import_override_defaults.xml   |   10 -
 .../controller/import_override_defaults.yml   |    5 -
 .../Fixtures/controller/override_defaults.xml |   10 -
 .../Fixtures/controller/override_defaults.yml |    5 -
 .../Tests/Fixtures/controller/routing.xml     |   14 -
 .../Tests/Fixtures/controller/routing.yml     |   11 -
 .../routing/Tests/Fixtures/defaults.php       |   10 -
 .../routing/Tests/Fixtures/defaults.xml       |    8 -
 .../routing/Tests/Fixtures/defaults.yml       |    4 -
 .../Fixtures/directory/recurse/routes1.yml    |    2 -
 .../Fixtures/directory/recurse/routes2.yml    |    2 -
 .../Tests/Fixtures/directory/routes3.yml      |    2 -
 .../Fixtures/directory_import/import.yml      |    3 -
 .../Fixtures/dumper/compiled_url_matcher0.php |   17 -
 .../Fixtures/dumper/compiled_url_matcher1.php |  108 -
 .../dumper/compiled_url_matcher10.php         | 2774 ------------
 .../dumper/compiled_url_matcher11.php         |   64 -
 .../dumper/compiled_url_matcher12.php         |   44 -
 .../dumper/compiled_url_matcher13.php         |   29 -
 .../Fixtures/dumper/compiled_url_matcher2.php |  110 -
 .../Fixtures/dumper/compiled_url_matcher3.php |   30 -
 .../Fixtures/dumper/compiled_url_matcher4.php |   25 -
 .../Fixtures/dumper/compiled_url_matcher5.php |   38 -
 .../Fixtures/dumper/compiled_url_matcher6.php |   50 -
 .../Fixtures/dumper/compiled_url_matcher7.php |   50 -
 .../Fixtures/dumper/compiled_url_matcher8.php |   32 -
 .../Fixtures/dumper/compiled_url_matcher9.php |   22 -
 .../Tests/Fixtures/dumper/url_matcher0.php    |   18 -
 .../Tests/Fixtures/dumper/url_matcher1.php    |  116 -
 .../Tests/Fixtures/dumper/url_matcher10.php   | 2779 ------------
 .../Tests/Fixtures/dumper/url_matcher11.php   |   69 -
 .../Tests/Fixtures/dumper/url_matcher12.php   |   49 -
 .../Tests/Fixtures/dumper/url_matcher13.php   |   35 -
 .../Tests/Fixtures/dumper/url_matcher2.php    |  118 -
 .../Tests/Fixtures/dumper/url_matcher3.php    |   38 -
 .../Tests/Fixtures/dumper/url_matcher4.php    |   28 -
 .../Tests/Fixtures/dumper/url_matcher5.php    |   45 -
 .../Tests/Fixtures/dumper/url_matcher6.php    |   57 -
 .../Tests/Fixtures/dumper/url_matcher7.php    |   57 -
 .../Tests/Fixtures/dumper/url_matcher8.php    |   37 -
 .../Tests/Fixtures/dumper/url_matcher9.php    |   26 -
 .../symfony/routing/Tests/Fixtures/empty.yml  |    0
 .../routing/Tests/Fixtures/file_resource.yml  |    0
 vendor/symfony/routing/Tests/Fixtures/foo.xml |    0
 .../symfony/routing/Tests/Fixtures/foo1.xml   |    0
 .../routing/Tests/Fixtures/glob/bar.xml       |    8 -
 .../routing/Tests/Fixtures/glob/bar.yml       |    4 -
 .../routing/Tests/Fixtures/glob/baz.xml       |    8 -
 .../routing/Tests/Fixtures/glob/baz.yml       |    4 -
 .../Tests/Fixtures/glob/import_multiple.xml   |    8 -
 .../Tests/Fixtures/glob/import_multiple.yml   |    2 -
 .../Tests/Fixtures/glob/import_single.xml     |    8 -
 .../Tests/Fixtures/glob/import_single.yml     |    2 -
 .../routing/Tests/Fixtures/glob/php_dsl.php   |    7 -
 .../Tests/Fixtures/glob/php_dsl_bar.php       |   12 -
 .../Tests/Fixtures/glob/php_dsl_baz.php       |   12 -
 .../import_with_name_prefix/routing.xml       |   10 -
 .../import_with_name_prefix/routing.yml       |    7 -
 .../import_with_no_trailing_slash/routing.xml |   10 -
 .../import_with_no_trailing_slash/routing.yml |   10 -
 .../Tests/Fixtures/imported-with-defaults.php |   10 -
 .../Tests/Fixtures/imported-with-defaults.xml |   11 -
 .../Tests/Fixtures/imported-with-defaults.yml |    7 -
 .../Tests/Fixtures/importer-with-defaults.php |   11 -
 .../Tests/Fixtures/importer-with-defaults.xml |   10 -
 .../Tests/Fixtures/importer-with-defaults.yml |    5 -
 .../routing/Tests/Fixtures/incomplete.yml     |    2 -
 .../routing/Tests/Fixtures/list_defaults.xml  |   20 -
 .../Tests/Fixtures/list_in_list_defaults.xml  |   22 -
 .../Tests/Fixtures/list_in_map_defaults.xml   |   22 -
 .../Tests/Fixtures/list_null_values.xml       |   22 -
 .../routing/Tests/Fixtures/localized.xml      |   13 -
 ...imported-with-locale-but-not-localized.xml |    9 -
 ...imported-with-locale-but-not-localized.yml |    4 -
 .../localized/imported-with-locale.xml        |   11 -
 .../localized/imported-with-locale.yml        |    6 -
 .../Fixtures/localized/imported-with-utf8.php |   10 -
 .../Fixtures/localized/imported-with-utf8.xml |    8 -
 .../Fixtures/localized/imported-with-utf8.yml |    5 -
 .../importer-with-controller-default.yml      |    5 -
 ...ith-locale-imports-non-localized-route.xml |   10 -
 ...ith-locale-imports-non-localized-route.yml |    6 -
 .../localized/importer-with-locale.xml        |   10 -
 .../localized/importer-with-locale.yml        |    6 -
 .../Fixtures/localized/importer-with-utf8.php |    7 -
 .../Fixtures/localized/importer-with-utf8.xml |    7 -
 .../Fixtures/localized/importer-with-utf8.yml |    3 -
 .../localized/importing-localized-route.yml   |    3 -
 .../Fixtures/localized/localized-route.yml    |    9 -
 .../localized/missing-locale-in-importer.yml  |    5 -
 .../Fixtures/localized/not-localized.yml      |    4 -
 .../officially_formatted_locales.yml          |    7 -
 .../route-without-path-or-locales.yml         |    3 -
 .../routing/Tests/Fixtures/localized/utf8.php |   10 -
 .../routing/Tests/Fixtures/localized/utf8.xml |   13 -
 .../routing/Tests/Fixtures/localized/utf8.yml |    6 -
 .../routing/Tests/Fixtures/map_defaults.xml   |   20 -
 .../Tests/Fixtures/map_in_list_defaults.xml   |   22 -
 .../Tests/Fixtures/map_in_map_defaults.xml    |   22 -
 .../Tests/Fixtures/map_null_values.xml        |   22 -
 .../routing/Tests/Fixtures/missing_id.xml     |    8 -
 .../routing/Tests/Fixtures/missing_path.xml   |    8 -
 .../Tests/Fixtures/namespaceprefix.xml        |   16 -
 .../Fixtures/nonesense_resource_plus_path.yml |    3 -
 .../nonesense_type_without_resource.yml       |    3 -
 .../routing/Tests/Fixtures/nonvalid.xml       |   10 -
 .../routing/Tests/Fixtures/nonvalid.yml       |    1 -
 .../routing/Tests/Fixtures/nonvalid2.yml      |    1 -
 .../routing/Tests/Fixtures/nonvalidkeys.yml   |    3 -
 .../routing/Tests/Fixtures/nonvalidnode.xml   |    8 -
 .../routing/Tests/Fixtures/nonvalidroute.xml  |   12 -
 .../routing/Tests/Fixtures/null_values.xml    |   12 -
 .../routing/Tests/Fixtures/php_dsl.php        |   29 -
 .../routing/Tests/Fixtures/php_dsl_i18n.php   |   17 -
 .../routing/Tests/Fixtures/php_dsl_sub.php    |   15 -
 .../Tests/Fixtures/php_dsl_sub_i18n.php       |   11 -
 .../Tests/Fixtures/php_dsl_sub_root.php       |   10 -
 .../routing/Tests/Fixtures/php_object_dsl.php |   32 -
 .../requirements_without_placeholder_name.yml |    4 -
 .../Tests/Fixtures/scalar_defaults.xml        |   33 -
 .../Tests/Fixtures/special_route_name.yml     |    2 -
 .../routing/Tests/Fixtures/validpattern.php   |   18 -
 .../routing/Tests/Fixtures/validpattern.xml   |   15 -
 .../routing/Tests/Fixtures/validpattern.yml   |   13 -
 .../routing/Tests/Fixtures/validresource.php  |   18 -
 .../routing/Tests/Fixtures/validresource.xml  |   13 -
 .../routing/Tests/Fixtures/validresource.yml  |    8 -
 .../Fixtures/with_define_path_variable.php    |    5 -
 .../routing/Tests/Fixtures/withdoctype.xml    |    3 -
 .../Dumper/CompiledUrlGeneratorDumperTest.php |  234 --
 .../Dumper/PhpGeneratorDumperTest.php         |  253 --
 .../Tests/Generator/UrlGeneratorTest.php      |  863 ----
 .../Loader/AbstractAnnotationLoaderTest.php   |   33 -
 .../Loader/AnnotationClassLoaderTest.php      |  343 --
 .../Loader/AnnotationDirectoryLoaderTest.php  |  110 -
 .../Tests/Loader/AnnotationFileLoaderTest.php |   91 -
 .../Tests/Loader/ClosureLoaderTest.php        |   49 -
 .../Tests/Loader/DirectoryLoaderTest.php      |   74 -
 .../routing/Tests/Loader/FileLocatorStub.php  |   17 -
 .../Tests/Loader/GlobFileLoaderTest.php       |   45 -
 .../Tests/Loader/ObjectRouteLoaderTest.php    |  146 -
 .../Tests/Loader/PhpFileLoaderTest.php        |  243 --
 .../Tests/Loader/XmlFileLoaderTest.php        |  516 ---
 .../Tests/Loader/YamlFileLoaderTest.php       |  389 --
 .../CompiledRedirectableUrlMatcherTest.php    |   40 -
 .../Tests/Matcher/CompiledUrlMatcherTest.php  |   27 -
 .../DumpedRedirectableUrlMatcherTest.php      |   46 -
 .../Tests/Matcher/DumpedUrlMatcherTest.php    |   33 -
 .../Dumper/CompiledUrlMatcherDumperTest.php   |  494 ---
 .../Matcher/Dumper/PhpMatcherDumperTest.php   |  511 ---
 .../Dumper/StaticPrefixCollectionTest.php     |  177 -
 .../Matcher/RedirectableUrlMatcherTest.php    |  214 -
 .../Tests/Matcher/TraceableUrlMatcherTest.php |  126 -
 .../routing/Tests/Matcher/UrlMatcherTest.php  |  947 -----
 .../routing/Tests/RequestContextTest.php      |  160 -
 .../Tests/RouteCollectionBuilderTest.php      |  362 --
 .../routing/Tests/RouteCollectionTest.php     |  333 --
 .../routing/Tests/RouteCompilerTest.php       |  398 --
 vendor/symfony/routing/Tests/RouteTest.php    |  274 --
 vendor/symfony/routing/Tests/RouterTest.php   |  135 -
 vendor/symfony/routing/composer.json          |   19 +-
 vendor/symfony/routing/phpunit.xml.dist       |   30 -
 .../twig-bridge/Command/DebugCommand.php      |   14 +-
 .../twig-bridge/Command/LintCommand.php       |   20 +-
 .../twig-bridge/Extension/CodeExtension.php   |    6 +-
 .../twig-bridge/Extension/FormExtension.php   |   12 +-
 .../twig-bridge/Extension/YamlExtension.php   |    2 +-
 .../symfony/twig-bridge/Form/TwigRenderer.php |    2 +-
 .../twig-bridge/Form/TwigRendererEngine.php   |    4 +-
 vendor/symfony/twig-bridge/LICENSE            |    2 +-
 .../Node/SearchAndRenderBlockNode.php         |    1 -
 .../bootstrap_4_horizontal_layout.html.twig   |    1 -
 .../views/Form/form_div_layout.html.twig      |    8 +-
 .../twig-bridge/Tests/AppVariableTest.php     |    4 +-
 .../Tests/Command/LintCommandTest.php         |    8 +-
 .../Tests/Extension/DumpExtensionTest.php     |    1 +
 .../Extension/StopwatchExtensionTest.php      |   24 +-
 .../Extension/TranslationExtensionTest.php    |    6 +-
 .../Tests/Translation/TwigExtractorTest.php   |   23 +-
 .../twig-bridge/Translation/TwigExtractor.php |   11 +-
 vendor/symfony/twig-bridge/composer.json      |    7 +-
 vendor/twig/twig/.travis.yml                  |   29 +-
 vendor/twig/twig/CHANGELOG                    |  298 +-
 vendor/twig/twig/LICENSE                      |   44 +-
 vendor/twig/twig/composer.json                |    9 +-
 vendor/twig/twig/doc/advanced.rst             |   25 +-
 vendor/twig/twig/doc/advanced_legacy.rst      |    5 -
 vendor/twig/twig/doc/api.rst                  |   20 +-
 vendor/twig/twig/doc/filters/batch.rst        |    8 +-
 vendor/twig/twig/doc/filters/default.rst      |    9 +
 vendor/twig/twig/doc/filters/filter.rst       |    2 +-
 vendor/twig/twig/doc/filters/map.rst          |    1 -
 vendor/twig/twig/doc/filters/reduce.rst       |    3 +-
 vendor/twig/twig/doc/functions/block.rst      |    4 +-
 vendor/twig/twig/doc/functions/constant.rst   |    4 +-
 vendor/twig/twig/doc/intro.rst                |    2 +-
 vendor/twig/twig/doc/tags/block.rst           |    3 +-
 vendor/twig/twig/doc/tags/include.rst         |    2 +-
 vendor/twig/twig/doc/templates.rst            |   13 +-
 vendor/twig/twig/doc/tests/constant.rst       |    2 +-
 vendor/twig/twig/doc/tests/sameas.rst         |    2 +-
 vendor/twig/twig/drupal_test.sh               |    7 +-
 vendor/twig/twig/ext/twig/php_twig.h          |    2 +-
 vendor/twig/twig/lib/Twig/Loader/String.php   |    2 +-
 vendor/twig/twig/lib/Twig/Test/Method.php     |    5 +
 vendor/twig/twig/phpunit.xml.dist             |   33 -
 vendor/twig/twig/src/Environment.php          |   12 +-
 vendor/twig/twig/src/ExpressionParser.php     |   26 +-
 .../twig/src/Extension/AbstractExtension.php  |    2 +-
 .../twig/twig/src/Extension/CoreExtension.php |   74 +-
 .../twig/src/Extension/ProfilerExtension.php  |    2 +-
 vendor/twig/twig/src/Lexer.php                |   16 +-
 vendor/twig/twig/src/Loader/ArrayLoader.php   |    2 +-
 vendor/twig/twig/src/Loader/ChainLoader.php   |    2 +-
 .../twig/twig/src/Loader/FilesystemLoader.php |    4 +-
 .../twig/twig/src/Node/CheckSecurityNode.php  |   13 +-
 vendor/twig/twig/src/Node/EmbedNode.php       |    2 +-
 .../Expression/BlockReferenceExpression.php   |    2 +-
 .../src/Node/Expression/CallExpression.php    |   14 +-
 .../src/Node/Expression/GetAttrExpression.php |    2 +-
 .../src/Node/Expression/NameExpression.php    |    2 +-
 .../Expression/NullCoalesceExpression.php     |   14 +-
 .../src/Node/Expression/Test/DefinedTest.php  |    2 +-
 .../src/Node/Expression/TestExpression.php    |    2 +-
 vendor/twig/twig/src/Node/ForNode.php         |    2 +-
 vendor/twig/twig/src/Node/IfNode.php          |    2 +-
 vendor/twig/twig/src/Node/IncludeNode.php     |    2 +-
 vendor/twig/twig/src/Node/ModuleNode.php      |    2 +-
 vendor/twig/twig/src/Node/Node.php            |   14 +-
 vendor/twig/twig/src/Node/SandboxNode.php     |    7 +
 vendor/twig/twig/src/Node/WithNode.php        |    2 +-
 .../src/NodeVisitor/SandboxNodeVisitor.php    |    4 +-
 vendor/twig/twig/src/Parser.php               |    4 +-
 .../twig/twig/src/Sandbox/SecurityPolicy.php  |    4 +-
 vendor/twig/twig/src/Template.php             |   12 +-
 .../twig/src/Test/IntegrationTestCase.php     |    2 +-
 .../twig/src/TokenParser/ApplyTokenParser.php |    2 +-
 vendor/twig/twig/src/TwigTest.php             |    6 +
 vendor/twig/twig/tests/AutoloaderTest.php     |   26 -
 .../twig/twig/tests/Cache/FilesystemTest.php  |  193 -
 vendor/twig/twig/tests/CompilerTest.php       |   38 -
 .../twig/tests/ContainerRuntimeLoaderTest.php |   44 -
 .../twig/twig/tests/CustomExtensionTest.php   |   94 -
 vendor/twig/twig/tests/EnvironmentTest.php    |  678 ---
 vendor/twig/twig/tests/ErrorTest.php          |  234 --
 .../twig/twig/tests/ExpressionParserTest.php  |  382 --
 vendor/twig/twig/tests/Extension/CoreTest.php |  371 --
 .../twig/twig/tests/Extension/SandboxTest.php |  365 --
 .../twig/tests/FactoryRuntimeLoaderTest.php   |   36 -
 vendor/twig/twig/tests/FileCachingTest.php    |   66 -
 .../FileExtensionEscapingStrategyTest.php     |   55 -
 vendor/twig/twig/tests/FilesystemHelper.php   |   32 -
 .../twig/tests/Fixtures/autoescape/block.test |   21 -
 .../twig/tests/Fixtures/autoescape/name.test  |   22 -
 .../twig/twig/tests/Fixtures/errors/base.html |    1 -
 .../twig/tests/Fixtures/errors/index.html     |    7 -
 .../tests/Fixtures/errors/leak-output.php     |   33 -
 .../child_contents_outside_blocks.test        |   15 -
 .../exception_in_extension_extends.test       |   12 -
 .../exception_in_extension_include.test       |   12 -
 ...ltiline_array_with_undefined_variable.test |   18 -
 ...e_array_with_undefined_variable_again.test |   18 -
 ...line_function_with_undefined_variable.test |   12 -
 ...tiline_function_with_unknown_argument.test |    9 -
 ...multiline_tag_with_undefined_variable.test |   12 -
 .../strict_comparison_operator.test           |    6 -
 .../syntax_error_in_reused_template.test      |   10 -
 .../Fixtures/exceptions/unclosed_tag.test     |   20 -
 .../Fixtures/exceptions/undefined_parent.test |   10 -
 .../undefined_template_in_child_template.test |   15 -
 .../Fixtures/exceptions/undefined_trait.test  |    9 -
 .../tests/Fixtures/expressions/_self.test     |    8 -
 .../tests/Fixtures/expressions/array.test     |   61 -
 .../Fixtures/expressions/array_call.test      |   14 -
 .../tests/Fixtures/expressions/binary.test    |   46 -
 .../tests/Fixtures/expressions/bitwise.test   |   14 -
 .../call_argument_defined_twice.test          |    8 -
 .../call_positional_arg_after_named_arg.test  |    8 -
 .../Fixtures/expressions/comparison.test      |   14 -
 .../Fixtures/expressions/divisibleby.test     |   17 -
 .../tests/Fixtures/expressions/dotdot.test    |   20 -
 .../tests/Fixtures/expressions/ends_with.test |   26 -
 .../tests/Fixtures/expressions/floats.test    |   16 -
 .../tests/Fixtures/expressions/grouping.test  |    8 -
 .../tests/Fixtures/expressions/literals.test  |   22 -
 .../Fixtures/expressions/magic_call.test      |   27 -
 .../tests/Fixtures/expressions/matches.test   |   12 -
 .../Fixtures/expressions/method_call.test     |   28 -
 .../expressions/negative_numbers.test         |   18 -
 .../Fixtures/expressions/not_arrow_fn.test    |    8 -
 .../expressions/operators_as_variables.test   |   16 -
 .../tests/Fixtures/expressions/postfix.test   |   22 -
 .../tests/Fixtures/expressions/power.test     |   20 -
 .../tests/Fixtures/expressions/sameas.test    |   21 -
 .../Fixtures/expressions/starts_with.test     |   27 -
 .../string_operator_as_var_assignment.test    |   18 -
 .../tests/Fixtures/expressions/strings.test   |   10 -
 .../expressions/ternary_operator.test         |   18 -
 .../expressions/ternary_operator_noelse.test  |   10 -
 .../expressions/ternary_operator_nothen.test  |   10 -
 .../two_word_operators_as_variables.test      |    8 -
 .../tests/Fixtures/expressions/unary.test     |   12 -
 .../expressions/unary_macro_arguments.test    |   22 -
 .../expressions/unary_precedence.test         |   14 -
 .../twig/twig/tests/Fixtures/filters/abs.test |   30 -
 .../twig/tests/Fixtures/filters/batch.test    |   31 -
 .../tests/Fixtures/filters/batch_float.test   |   29 -
 .../filters/batch_with_empty_fill.test        |   37 -
 .../filters/batch_with_exact_elements.test    |   33 -
 .../Fixtures/filters/batch_with_fill.test     |   37 -
 .../Fixtures/filters/batch_with_keys.test     |   10 -
 .../filters/batch_with_more_elements.test     |   23 -
 .../filters/batch_with_zero_elements.test     |   10 -
 .../Fixtures/filters/convert_encoding.test    |   10 -
 .../twig/tests/Fixtures/filters/date.test     |   90 -
 .../Fixtures/filters/date_default_format.test |   14 -
 .../filters/date_default_format_interval.test |   16 -
 .../Fixtures/filters/date_immutable.test      |   37 -
 .../tests/Fixtures/filters/date_interval.test |   19 -
 .../tests/Fixtures/filters/date_modify.test   |   14 -
 .../Fixtures/filters/date_namedargs.test      |   13 -
 .../twig/tests/Fixtures/filters/default.test  |  150 -
 .../Fixtures/filters/dynamic_filter.test      |   10 -
 .../twig/tests/Fixtures/filters/escape.test   |    8 -
 .../Fixtures/filters/escape_html_attr.test    |    8 -
 .../Fixtures/filters/escape_javascript.test   |    8 -
 .../filters/escape_non_supported_charset.test |    8 -
 .../twig/tests/Fixtures/filters/filter.test   |   46 -
 .../tests/Fixtures/filters/filter_php_55.test |   23 -
 .../tests/Fixtures/filters/filter_php_56.test |   27 -
 .../twig/tests/Fixtures/filters/first.test    |   17 -
 .../tests/Fixtures/filters/force_escape.test  |   18 -
 .../twig/tests/Fixtures/filters/format.test   |    8 -
 .../twig/tests/Fixtures/filters/join.test     |   38 -
 .../tests/Fixtures/filters/json_encode.test   |   12 -
 .../twig/tests/Fixtures/filters/last.test     |   17 -
 .../twig/tests/Fixtures/filters/length.test   |   40 -
 .../tests/Fixtures/filters/length_utf8.test   |   12 -
 .../twig/twig/tests/Fixtures/filters/map.test |   41 -
 .../twig/tests/Fixtures/filters/merge.test    |   25 -
 .../twig/tests/Fixtures/filters/nl2br.test    |   14 -
 .../tests/Fixtures/filters/number_format.test |   18 -
 .../filters/number_format_default.test        |   21 -
 .../twig/tests/Fixtures/filters/reduce.test   |   14 -
 .../twig/tests/Fixtures/filters/replace.test  |   12 -
 .../Fixtures/filters/replace_invalid_arg.test |    8 -
 .../twig/tests/Fixtures/filters/reverse.test  |   18 -
 .../twig/tests/Fixtures/filters/round.test    |   22 -
 .../twig/tests/Fixtures/filters/slice.test    |   54 -
 .../twig/tests/Fixtures/filters/sort.test     |   12 -
 .../tests/Fixtures/filters/spaceless.test     |    8 -
 .../tests/Fixtures/filters/special_chars.test |    8 -
 .../twig/tests/Fixtures/filters/split.test    |   22 -
 .../tests/Fixtures/filters/split_utf8.test    |   24 -
 .../tests/Fixtures/filters/static_calls.test  |   10 -
 .../twig/tests/Fixtures/filters/trim.test     |   24 -
 .../tests/Fixtures/filters/urlencode.test     |   16 -
 .../filters/urlencode_deprecated.test         |   16 -
 .../tests/Fixtures/functions/attribute.test   |   18 -
 .../twig/tests/Fixtures/functions/block.test  |   12 -
 .../functions/block_with_template.test        |   22 -
 .../functions/block_without_name.test         |   12 -
 .../tests/Fixtures/functions/constant.test    |   10 -
 .../twig/tests/Fixtures/functions/cycle.test  |   16 -
 .../twig/tests/Fixtures/functions/date.test   |   27 -
 .../Fixtures/functions/date_namedargs.test    |   11 -
 .../twig/tests/Fixtures/functions/dump.test   |   16 -
 .../tests/Fixtures/functions/dump_array.test  |   19 -
 .../Fixtures/functions/dynamic_function.test  |   10 -
 .../functions/include/assignment.test         |   13 -
 .../functions/include/autoescaping.test       |   10 -
 .../Fixtures/functions/include/basic.test     |   17 -
 .../functions/include/expression.test         |   17 -
 .../functions/include/ignore_missing.test     |   10 -
 .../include/ignore_missing_exists.test        |   11 -
 .../include/include_missing_extends.test      |   13 -
 .../Fixtures/functions/include/missing.test   |    8 -
 .../functions/include/missing_nested.test     |   16 -
 .../Fixtures/functions/include/sandbox.test   |   13 -
 .../functions/include/sandbox_disabling.test  |   16 -
 .../sandbox_disabling_ignore_missing.test     |   13 -
 .../functions/include/template_instance.test  |   10 -
 .../functions/include/templates_as_array.test |   12 -
 .../functions/include/with_context.test       |   16 -
 .../functions/include/with_variables.test     |   12 -
 .../include_template_from_string.test         |   11 -
 .../tests/Fixtures/functions/magic_call.test  |    8 -
 .../Fixtures/functions/magic_call53.test      |   12 -
 .../twig/tests/Fixtures/functions/max.test    |   12 -
 .../twig/tests/Fixtures/functions/min.test    |   12 -
 .../twig/tests/Fixtures/functions/range.test  |    8 -
 .../recursive_block_with_inheritance.test     |   21 -
 .../twig/tests/Fixtures/functions/source.test |   17 -
 .../Fixtures/functions/special_chars.test     |    8 -
 .../Fixtures/functions/static_calls.test      |   10 -
 .../functions/template_from_string.test       |   15 -
 .../functions/template_from_string_error.test |    8 -
 .../tests/Fixtures/macros/default_values.test |   16 -
 .../tests/Fixtures/macros/nested_calls.test   |   18 -
 .../Fixtures/macros/reserved_variables.test   |   14 -
 .../twig/tests/Fixtures/macros/simple.test    |   22 -
 .../twig/tests/Fixtures/macros/varargs.test   |   21 -
 .../Fixtures/macros/varargs_argument.test     |    7 -
 .../tests/Fixtures/macros/with_filters.test   |   14 -
 .../regression/block_names_unicity.test       |   19 -
 .../regression/combined_debug_info.test       |   15 -
 .../Fixtures/regression/empty_token.test      |    8 -
 .../tests/Fixtures/regression/issue_1143.test |   23 -
 .../Fixtures/regression/multi_word_tests.test |   10 -
 .../regression/simple_xml_element.test        |   19 -
 .../regression/strings_like_numbers.test      |    8 -
 .../twig/tests/Fixtures/tags/apply/basic.test |   10 -
 .../Fixtures/tags/apply/json_encode.test      |    8 -
 .../tests/Fixtures/tags/apply/multiple.test   |   10 -
 .../tests/Fixtures/tags/apply/nested.test     |   16 -
 .../twig/tests/Fixtures/tags/apply/scope.test |   15 -
 .../Fixtures/tags/apply/with_for_tag.test     |   13 -
 .../Fixtures/tags/apply/with_if_tag.test      |   29 -
 .../tests/Fixtures/tags/autoescape/basic.test |   26 -
 .../Fixtures/tags/autoescape/blocks.test      |   12 -
 .../tags/autoescape/double_escaping.test      |   10 -
 .../Fixtures/tags/autoescape/functions.test   |   83 -
 .../Fixtures/tags/autoescape/literal.test     |   87 -
 .../Fixtures/tags/autoescape/nested.test      |   26 -
 .../Fixtures/tags/autoescape/objects.test     |   26 -
 .../tests/Fixtures/tags/autoescape/raw.test   |   10 -
 .../tags/autoescape/strategy.legacy.test      |   11 -
 .../Fixtures/tags/autoescape/strategy.test    |   11 -
 .../tests/Fixtures/tags/autoescape/type.test  |   69 -
 .../tags/autoescape/with_filters.test         |  131 -
 .../autoescape/with_filters_arguments.test    |   23 -
 .../autoescape/with_pre_escape_filters.test   |   68 -
 .../with_preserves_safety_filters.test        |   50 -
 .../twig/tests/Fixtures/tags/block/basic.test |   11 -
 .../tags/block/block_unique_name.test         |   11 -
 .../Fixtures/tags/block/special_chars.test    |   10 -
 .../tags/deprecated/block.legacy.test         |   20 -
 .../tags/deprecated/macro.legacy.test         |   21 -
 .../tags/deprecated/template.legacy.test      |   12 -
 .../twig/tests/Fixtures/tags/embed/basic.test |   35 -
 .../tags/embed/complex_dynamic_parent.test    |   35 -
 .../Fixtures/tags/embed/dynamic_parent.test   |   35 -
 .../tests/Fixtures/tags/embed/error_line.test |   16 -
 .../tests/Fixtures/tags/embed/multiple.test   |   50 -
 .../tests/Fixtures/tags/embed/nested.test     |   42 -
 .../Fixtures/tags/embed/with_extends.test     |   60 -
 .../tests/Fixtures/tags/filter/basic.test     |   10 -
 .../Fixtures/tags/filter/json_encode.test     |    8 -
 .../tests/Fixtures/tags/filter/multiple.test  |   10 -
 .../tests/Fixtures/tags/filter/nested.test    |   16 -
 .../tests/Fixtures/tags/filter/scope.test     |   11 -
 .../Fixtures/tags/filter/with_for_tag.test    |   13 -
 .../Fixtures/tags/filter/with_if_tag.test     |   29 -
 .../tests/Fixtures/tags/for/condition.test    |   14 -
 .../twig/tests/Fixtures/tags/for/context.test |   18 -
 .../twig/tests/Fixtures/tags/for/else.test    |   23 -
 .../Fixtures/tags/for/inner_variables.test    |   17 -
 .../twig/tests/Fixtures/tags/for/keys.test    |   11 -
 .../Fixtures/tags/for/keys_and_values.test    |   11 -
 .../tests/Fixtures/tags/for/loop_context.test |   19 -
 .../Fixtures/tags/for/loop_context_local.test |   10 -
 .../Fixtures/tags/for/loop_not_defined.test   |   10 -
 .../tags/for/loop_not_defined_cond.test       |    9 -
 .../tests/Fixtures/tags/for/nested_else.test  |   17 -
 .../twig/tests/Fixtures/tags/for/objects.test |   43 -
 .../Fixtures/tags/for/objects_countable.test  |   47 -
 .../tests/Fixtures/tags/for/recursive.test    |   18 -
 .../twig/tests/Fixtures/tags/for/values.test  |   11 -
 .../twig/twig/tests/Fixtures/tags/from.test   |   14 -
 .../twig/tests/Fixtures/tags/if/basic.test    |   22 -
 .../tests/Fixtures/tags/if/expression.test    |   22 -
 .../tests/Fixtures/tags/include/basic.test    |   16 -
 .../Fixtures/tags/include/expression.test     |   16 -
 .../Fixtures/tags/include/ignore_missing.test |   10 -
 .../tags/include/ignore_missing_exists.test   |   11 -
 .../tags/include/include_missing_extends.test |   13 -
 .../tests/Fixtures/tags/include/missing.test  |    8 -
 .../Fixtures/tags/include/missing_nested.test |   16 -
 .../tests/Fixtures/tags/include/only.test     |   20 -
 .../tags/include/template_instance.test       |   10 -
 .../tags/include/templates_as_array.test      |   12 -
 .../Fixtures/tags/include/with_variables.test |   14 -
 .../Fixtures/tags/inheritance/basic.test      |   14 -
 .../Fixtures/tags/inheritance/block_expr.test |   30 -
 .../tags/inheritance/block_expr2.test         |   32 -
 .../tags/inheritance/conditional.test         |   14 -
 .../Fixtures/tags/inheritance/dynamic.test    |   14 -
 .../Fixtures/tags/inheritance/empty.test      |   10 -
 .../tags/inheritance/extends_as_array.test    |   12 -
 .../extends_as_array_with_empty_name.test     |   12 -
 .../extends_as_array_with_null_name.test      |   12 -
 .../tags/inheritance/extends_in_block.test    |   10 -
 .../tags/inheritance/extends_in_macro.test    |   10 -
 .../Fixtures/tags/inheritance/multiple.test   |   12 -
 .../tags/inheritance/multiple_dynamic.test    |   22 -
 .../tags/inheritance/nested_blocks.test       |   22 -
 .../nested_blocks_parent_only.test            |   15 -
 .../tags/inheritance/nested_inheritance.test  |   16 -
 .../Fixtures/tags/inheritance/parent.test     |   12 -
 .../parent_as_template_wrapper.test           |   12 -
 .../tags/inheritance/parent_change.test       |   16 -
 .../tags/inheritance/parent_isolation.test    |   20 -
 .../tags/inheritance/parent_nested.test       |   28 -
 .../inheritance/parent_without_extends.test   |    8 -
 .../parent_without_extends_but_traits.test    |   14 -
 .../tags/inheritance/template_instance.test   |   14 -
 .../tests/Fixtures/tags/inheritance/use.test  |   44 -
 .../twig/tests/Fixtures/tags/macro/basic.test |   17 -
 .../Fixtures/tags/macro/endmacro_name.test    |   16 -
 .../tests/Fixtures/tags/macro/external.test   |   17 -
 .../twig/tests/Fixtures/tags/macro/from.test  |   18 -
 .../tags/macro/from_in_block_is_local.test    |   18 -
 .../tags/macro/from_local_override.test       |   28 -
 .../tags/macro/from_macro_in_a_macro.test     |   18 -
 .../tags/macro/from_nested_blocks.test        |   18 -
 .../from_nested_blocks_with_global_macro.test |   18 -
 .../tags/macro/from_syntax_error.test         |    8 -
 .../tags/macro/from_with_reserved_name.test   |    8 -
 .../tests/Fixtures/tags/macro/global.test     |   14 -
 .../tags/macro/import_and_blocks.test         |   36 -
 .../macro/import_from_string_template.test    |   10 -
 .../tags/macro/import_in_block_is_local.test  |   18 -
 .../tags/macro/import_local_override.test     |   28 -
 .../tags/macro/import_macro_in_a_macro.test   |   18 -
 .../macro/import_nested_blocks.legacy.test    |   18 -
 ...ested_blocks_with_global_macro.legacy.test |   18 -
 .../tags/macro/import_self_parent.test        |   23 -
 .../tags/macro/import_syntax_error.test       |   10 -
 .../tags/macro/import_with_reserved_name.test |   10 -
 .../Fixtures/tags/macro/reserved_name.test    |   10 -
 .../Fixtures/tags/macro/self_import.test      |   17 -
 .../Fixtures/tags/macro/special_chars.test    |   14 -
 .../Fixtures/tags/macro/super_globals.test    |   14 -
 .../tests/Fixtures/tags/raw/basic.legacy.test |   10 -
 .../tags/raw/mixed_usage_with_raw.legacy.test |   10 -
 .../tags/raw/whitespace_control.legacy.test   |   56 -
 .../tests/Fixtures/tags/sandbox/array.test    |   16 -
 .../Fixtures/tags/sandbox/not_valid1.test     |   11 -
 .../Fixtures/tags/sandbox/not_valid2.test     |   14 -
 .../tests/Fixtures/tags/sandbox/simple.test   |   22 -
 .../twig/tests/Fixtures/tags/set/basic.test   |   20 -
 .../Fixtures/tags/set/capture-empty.test      |    9 -
 .../twig/tests/Fixtures/tags/set/capture.test |   10 -
 .../Fixtures/tags/set/capture_scope.test      |   10 -
 .../tests/Fixtures/tags/set/expression.test   |   12 -
 .../tests/Fixtures/tags/set/inheritance.test  |   24 -
 .../tags/set/inheritance_overriding.test      |   24 -
 .../tests/Fixtures/tags/set/mutating.test     |   17 -
 .../tests/Fixtures/tags/spaceless/simple.test |   12 -
 .../tests/Fixtures/tags/special_chars.test    |    8 -
 .../twig/tests/Fixtures/tags/use/aliases.test |   12 -
 .../twig/tests/Fixtures/tags/use/basic.test   |   12 -
 .../twig/tests/Fixtures/tags/use/deep.test    |   22 -
 .../tests/Fixtures/tags/use/deep_empty.test   |   10 -
 .../tests/Fixtures/tags/use/inheritance.test  |   25 -
 .../tests/Fixtures/tags/use/inheritance2.test |   24 -
 .../tests/Fixtures/tags/use/multiple.test     |   21 -
 .../Fixtures/tags/use/multiple_aliases.test   |   23 -
 .../tests/Fixtures/tags/use/parent_block.test |   24 -
 .../Fixtures/tags/use/parent_block2.test      |   24 -
 .../Fixtures/tags/use/parent_block3.test      |   38 -
 .../Fixtures/tags/use/use_with_parent.test    |   24 -
 .../tests/Fixtures/tags/verbatim/basic.test   |   10 -
 .../tags/verbatim/mixed_usage_with_raw.test   |   10 -
 .../tags/verbatim/whitespace_control.test     |   56 -
 .../twig/tests/Fixtures/tags/with/basic.test  |   13 -
 .../tests/Fixtures/tags/with/expression.test  |   10 -
 .../tests/Fixtures/tags/with/globals.test     |   10 -
 .../tests/Fixtures/tags/with/iterable.test    |   10 -
 .../twig/tests/Fixtures/tags/with/nested.test |   15 -
 .../Fixtures/tags/with/with_no_hash.test      |   10 -
 .../tests/Fixtures/tags/with/with_only.test   |   10 -
 .../twig/twig/tests/Fixtures/tests/array.test |   24 -
 .../twig/tests/Fixtures/tests/constant.test   |   14 -
 .../twig/tests/Fixtures/tests/defined.test    |  129 -
 .../Fixtures/tests/defined_for_attribute.test |   35 -
 .../Fixtures/tests/defined_for_blocks.test    |   38 -
 .../defined_for_blocks_with_template.test     |   17 -
 .../Fixtures/tests/defined_for_constants.test |   14 -
 .../tests/defined_on_complex_expr.test        |    8 -
 .../tests/Fixtures/tests/dynamic_test.test    |   14 -
 .../twig/twig/tests/Fixtures/tests/empty.test |   54 -
 .../twig/twig/tests/Fixtures/tests/even.test  |   14 -
 vendor/twig/twig/tests/Fixtures/tests/in.test |  118 -
 .../tests/Fixtures/tests/in_with_objects.test |   19 -
 .../twig/tests/Fixtures/tests/iterable.test   |   19 -
 .../tests/Fixtures/tests/null_coalesce.test   |   30 -
 .../twig/twig/tests/Fixtures/tests/odd.test   |   10 -
 .../tests/Fixtures/whitespace/trim_block.test |   68 -
 .../whitespace/trim_delimiter_as_strings.test |   10 -
 .../tests/Fixtures/whitespace/trim_left.test  |   32 -
 .../Fixtures/whitespace/trim_line_left.test   |   33 -
 .../Fixtures/whitespace/trim_line_right.test  |   32 -
 .../tests/Fixtures/whitespace/trim_right.test |   28 -
 vendor/twig/twig/tests/IntegrationTest.php    |  386 --
 .../autoescape/filename.legacy.test           |   18 -
 .../functions/undefined_block.legacy.test     |   12 -
 .../tests/LegacyFixtures/test.legacy.test     |    8 -
 .../twig/twig/tests/LegacyIntegrationTest.php |   59 -
 vendor/twig/twig/tests/LexerTest.php          |  378 --
 vendor/twig/twig/tests/Loader/ArrayTest.php   |  139 -
 vendor/twig/twig/tests/Loader/ChainTest.php   |  133 -
 .../twig/twig/tests/Loader/FilesystemTest.php |  247 --
 .../array_inheritance_empty_parent.html.twig  |    3 -
 ...y_inheritance_nonexistent_parent.html.twig |    3 -
 .../array_inheritance_null_parent.html.twig   |    3 -
 .../array_inheritance_valid_parent.html.twig  |    3 -
 .../Fixtures/inheritance/parent.html.twig     |    1 -
 .../inheritance/spare_parent.html.twig        |    1 -
 .../tests/Loader/Fixtures/named/index.html    |    1 -
 .../Loader/Fixtures/named_bis/index.html      |    1 -
 .../Loader/Fixtures/named_final/index.html    |    1 -
 .../Fixtures/named_quater/named_absolute.html |    1 -
 .../Loader/Fixtures/named_ter/index.html      |    1 -
 .../tests/Loader/Fixtures/normal/index.html   |    1 -
 .../Loader/Fixtures/normal_bis/index.html     |    1 -
 .../Loader/Fixtures/normal_final/index.html   |    1 -
 .../Loader/Fixtures/normal_ter/index.html     |    1 -
 .../Loader/Fixtures/phar/phar-sample.phar     |  Bin 6786 -> 0 bytes
 .../Fixtures/themes/theme1/blocks.html.twig   |    3 -
 .../Fixtures/themes/theme2/blocks.html.twig   |    3 -
 .../twig/twig/tests/NativeExtensionTest.php   |   43 -
 .../twig/twig/tests/Node/AutoEscapeTest.php   |   39 -
 .../twig/tests/Node/BlockReferenceTest.php    |   36 -
 vendor/twig/twig/tests/Node/BlockTest.php     |   45 -
 .../twig/twig/tests/Node/DeprecatedTest.php   |   82 -
 vendor/twig/twig/tests/Node/DoTest.php        |   38 -
 .../twig/tests/Node/Expression/ArrayTest.php  |   43 -
 .../tests/Node/Expression/AssignNameTest.php  |   34 -
 .../tests/Node/Expression/Binary/AddTest.php  |   40 -
 .../tests/Node/Expression/Binary/AndTest.php  |   40 -
 .../Node/Expression/Binary/ConcatTest.php     |   40 -
 .../tests/Node/Expression/Binary/DivTest.php  |   40 -
 .../Node/Expression/Binary/FloorDivTest.php   |   40 -
 .../tests/Node/Expression/Binary/ModTest.php  |   40 -
 .../tests/Node/Expression/Binary/MulTest.php  |   40 -
 .../tests/Node/Expression/Binary/OrTest.php   |   40 -
 .../tests/Node/Expression/Binary/SubTest.php  |   40 -
 .../twig/tests/Node/Expression/CallTest.php   |  139 -
 .../tests/Node/Expression/ConditionalTest.php |   44 -
 .../tests/Node/Expression/ConstantTest.php    |   35 -
 .../twig/tests/Node/Expression/FilterTest.php |  161 -
 .../tests/Node/Expression/FunctionTest.php    |  119 -
 .../tests/Node/Expression/GetAttrTest.php     |   59 -
 .../twig/tests/Node/Expression/NameTest.php   |   49 -
 .../Node/Expression/NullCoalesceTest.php      |   38 -
 .../Node/Expression/PHP53/FilterInclude.php   |    8 -
 .../Node/Expression/PHP53/FunctionInclude.php |    8 -
 .../Node/Expression/PHP53/TestInclude.php     |    8 -
 .../twig/tests/Node/Expression/ParentTest.php |   33 -
 .../twig/tests/Node/Expression/TestTest.php   |   92 -
 .../tests/Node/Expression/Unary/NegTest.php   |   38 -
 .../tests/Node/Expression/Unary/NotTest.php   |   37 -
 .../tests/Node/Expression/Unary/PosTest.php   |   37 -
 vendor/twig/twig/tests/Node/ForTest.php       |  201 -
 vendor/twig/twig/tests/Node/IfTest.php        |   97 -
 vendor/twig/twig/tests/Node/ImportTest.php    |   47 -
 vendor/twig/twig/tests/Node/IncludeTest.php   |   95 -
 vendor/twig/twig/tests/Node/MacroTest.php     |   83 -
 vendor/twig/twig/tests/Node/ModuleTest.php    |  270 --
 vendor/twig/twig/tests/Node/PrintTest.php     |   35 -
 vendor/twig/twig/tests/Node/SandboxTest.php   |   49 -
 vendor/twig/twig/tests/Node/SetTest.php       |   80 -
 vendor/twig/twig/tests/Node/SpacelessTest.php |   44 -
 vendor/twig/twig/tests/Node/TextTest.php      |   33 -
 vendor/twig/twig/tests/NodeTraverserTest.php  |   49 -
 .../twig/tests/NodeVisitor/OptimizerTest.php  |  116 -
 vendor/twig/twig/tests/ParserTest.php         |  218 -
 .../tests/Profiler/Dumper/AbstractTest.php    |  107 -
 .../tests/Profiler/Dumper/BlackfireTest.php   |   36 -
 .../twig/tests/Profiler/Dumper/HtmlTest.php   |   34 -
 .../twig/tests/Profiler/Dumper/TextTest.php   |   34 -
 .../twig/twig/tests/Profiler/ProfileTest.php  |  114 -
 vendor/twig/twig/tests/TemplateTest.php       |  809 ----
 .../twig/twig/tests/TemplateWrapperTest.php   |   70 -
 vendor/twig/twig/tests/TokenStreamTest.php    |   85 -
 .../tests/Util/DeprecationCollectorTest.php   |   48 -
 vendor/twig/twig/tests/escapingTest.php       |  327 --
 1455 files changed, 8896 insertions(+), 72818 deletions(-)
 delete mode 100644 vendor/pimple/pimple/ext/pimple/.gitignore
 delete mode 100644 vendor/pimple/pimple/ext/pimple/README.md
 delete mode 100644 vendor/pimple/pimple/ext/pimple/config.m4
 delete mode 100644 vendor/pimple/pimple/ext/pimple/config.w32
 delete mode 100644 vendor/pimple/pimple/ext/pimple/php_pimple.h
 delete mode 100644 vendor/pimple/pimple/ext/pimple/pimple.c
 delete mode 100644 vendor/pimple/pimple/ext/pimple/pimple_compat.h
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/001.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/002.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/003.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/004.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/005.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/006.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/007.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/008.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/009.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/010.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/011.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/012.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/013.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/014.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/015.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/016.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/017.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/018.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/019.phpt
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/bench.phpb
 delete mode 100644 vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
 delete mode 100644 vendor/psr/log/.gitignore
 delete mode 100644 vendor/symfony/debug/.gitignore
 delete mode 100644 vendor/symfony/debug/Tests/DebugClassLoaderTest.php
 delete mode 100644 vendor/symfony/debug/Tests/ErrorHandlerTest.php
 delete mode 100644 vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php
 delete mode 100644 vendor/symfony/debug/Tests/ExceptionHandlerTest.php
 delete mode 100644 vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
 delete mode 100644 vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php
 delete mode 100644 vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/ClassAlias.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/FinalClasses.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/FinalMethod.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/InternalClass.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/InternalInterface.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/InternalTrait.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/PEARClass.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/Throwing.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/VirtualClass.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/casemismatch.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
 delete mode 100644 vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
 delete mode 100644 vendor/symfony/debug/Tests/HeaderMock.php
 delete mode 100644 vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt
 delete mode 100644 vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
 delete mode 100644 vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
 delete mode 100644 vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
 delete mode 100644 vendor/symfony/debug/phpunit.xml.dist
 delete mode 100644 vendor/symfony/event-dispatcher/.gitignore
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/EventTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php
 delete mode 100644 vendor/symfony/event-dispatcher/phpunit.xml.dist
 delete mode 100644 vendor/symfony/http-foundation/.gitignore
 delete mode 100644 vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ApacheRequestTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/CookieTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/FakeFile.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/FileTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/directory/.empty
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/other-file.example
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/test
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/FileBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/HeaderBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/IpUtilsTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/JsonResponseTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ParameterBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/RedirectResponseTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/RequestMatcherTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/RequestStackTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/RequestTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ResponseTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ResponseTestCase.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/ServerBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/SessionTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/StreamedResponseTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/UrlHelperTest.php
 delete mode 100644 vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng
 delete mode 100644 vendor/symfony/http-foundation/Tests/schema/iana-registry.rng
 delete mode 100644 vendor/symfony/http-foundation/phpunit.xml.dist
 delete mode 100644 vendor/symfony/http-kernel/.gitignore
 delete mode 100644 vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/Resources/.gitkeep
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/Resources/FooBundle/foo.txt
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/HttpKernelTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/KernelTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Logger.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/TestHttpKernel.php
 delete mode 100644 vendor/symfony/http-kernel/Tests/UriSignerTest.php
 delete mode 100644 vendor/symfony/http-kernel/phpunit.xml.dist
 delete mode 100644 vendor/symfony/mime/.gitignore
 delete mode 100644 vendor/symfony/mime/NamedAddress.php
 delete mode 100644 vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php
 delete mode 100644 vendor/symfony/mime/Tests/AddressTest.php
 delete mode 100644 vendor/symfony/mime/Tests/CharacterStreamTest.php
 delete mode 100644 vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php
 delete mode 100644 vendor/symfony/mime/Tests/EmailTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php
 delete mode 100644 vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/mimetypes/directory/.empty
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/mimetypes/other-file.example
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/mimetypes/test
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt
 delete mode 100644 vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt
 delete mode 100644 vendor/symfony/mime/Tests/Header/DateHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/HeadersTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/PathHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php
 delete mode 100644 vendor/symfony/mime/Tests/MessageConverterTest.php
 delete mode 100644 vendor/symfony/mime/Tests/MessageTest.php
 delete mode 100644 vendor/symfony/mime/Tests/MimeTypesTest.php
 delete mode 100644 vendor/symfony/mime/Tests/NamedAddressTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/DataPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/MessagePartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/Part/TextPartTest.php
 delete mode 100644 vendor/symfony/mime/Tests/RawMessageTest.php
 delete mode 100644 vendor/symfony/mime/phpunit.xml.dist
 delete mode 100644 vendor/symfony/routing/.gitignore
 delete mode 100644 vendor/symfony/routing/Tests/Annotation/RouteTest.php
 delete mode 100644 vendor/symfony/routing/Tests/CompiledRouteTest.php
 delete mode 100644 vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/annotated.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/bad_format.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/bar.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/routing.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/controller/routing.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/defaults.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/defaults.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/empty.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/file_resource.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/foo.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/foo1.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/bar.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/bar.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/baz.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/baz.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/incomplete.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/list_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/list_null_values.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/utf8.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/map_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/map_null_values.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/missing_id.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/missing_path.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalid.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalid.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/null_values.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_dsl.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/special_route_name.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validpattern.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validpattern.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validpattern.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validresource.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validresource.xml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/validresource.yml
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php
 delete mode 100644 vendor/symfony/routing/Tests/Fixtures/withdoctype.xml
 delete mode 100644 vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/FileLocatorStub.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RequestContextTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RouteCollectionTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RouteCompilerTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RouteTest.php
 delete mode 100644 vendor/symfony/routing/Tests/RouterTest.php
 delete mode 100644 vendor/symfony/routing/phpunit.xml.dist
 delete mode 100644 vendor/twig/twig/phpunit.xml.dist
 delete mode 100644 vendor/twig/twig/tests/AutoloaderTest.php
 delete mode 100644 vendor/twig/twig/tests/Cache/FilesystemTest.php
 delete mode 100644 vendor/twig/twig/tests/CompilerTest.php
 delete mode 100644 vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php
 delete mode 100644 vendor/twig/twig/tests/CustomExtensionTest.php
 delete mode 100644 vendor/twig/twig/tests/EnvironmentTest.php
 delete mode 100644 vendor/twig/twig/tests/ErrorTest.php
 delete mode 100644 vendor/twig/twig/tests/ExpressionParserTest.php
 delete mode 100644 vendor/twig/twig/tests/Extension/CoreTest.php
 delete mode 100644 vendor/twig/twig/tests/Extension/SandboxTest.php
 delete mode 100644 vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php
 delete mode 100644 vendor/twig/twig/tests/FileCachingTest.php
 delete mode 100644 vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php
 delete mode 100644 vendor/twig/twig/tests/FilesystemHelper.php
 delete mode 100644 vendor/twig/twig/tests/Fixtures/autoescape/block.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/autoescape/name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/errors/base.html
 delete mode 100644 vendor/twig/twig/tests/Fixtures/errors/index.html
 delete mode 100644 vendor/twig/twig/tests/Fixtures/errors/leak-output.php
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/_self.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/array_call.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/binary.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/bitwise.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/comparison.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/dotdot.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/ends_with.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/floats.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/grouping.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/literals.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/magic_call.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/matches.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/method_call.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/postfix.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/power.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/sameas.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/starts_with.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/strings.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/unary.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/abs.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_float.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_default_format.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_immutable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_interval.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_modify.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/default.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/escape.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/filter.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/first.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/force_escape.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/format.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/join.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/json_encode.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/last.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/length.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/length_utf8.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/map.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/merge.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/nl2br.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/number_format.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/number_format_default.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/reduce.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/replace.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/reverse.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/round.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/slice.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/sort.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/spaceless.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/special_chars.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/split.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/split_utf8.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/static_calls.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/trim.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/urlencode.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/attribute.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/block.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/block_with_template.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/block_without_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/constant.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/cycle.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/date.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/dump.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/dump_array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/assignment.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/expression.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/missing.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/with_context.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/magic_call.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/magic_call53.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/max.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/min.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/range.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/source.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/special_chars.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/static_calls.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/template_from_string.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/default_values.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/nested_calls.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/simple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/varargs.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/macros/with_filters.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/empty_token.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/issue_1143.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/scope.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/block/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/scope.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/condition.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/context.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/else.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/keys.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/objects.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/recursive.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/for/values.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/from.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/if/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/if/expression.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/expression.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/missing.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/only.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/external.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/global.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/capture.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/expression.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/set/mutating.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/special_chars.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/aliases.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/deep.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/multiple.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/basic.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/expression.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/globals.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/iterable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/nested.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tags/with/with_only.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/array.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/constant.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/empty.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/even.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/in.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/iterable.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/tests/odd.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test
 delete mode 100644 vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test
 delete mode 100644 vendor/twig/twig/tests/IntegrationTest.php
 delete mode 100644 vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test
 delete mode 100644 vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test
 delete mode 100644 vendor/twig/twig/tests/LegacyFixtures/test.legacy.test
 delete mode 100644 vendor/twig/twig/tests/LegacyIntegrationTest.php
 delete mode 100644 vendor/twig/twig/tests/LexerTest.php
 delete mode 100644 vendor/twig/twig/tests/Loader/ArrayTest.php
 delete mode 100644 vendor/twig/twig/tests/Loader/ChainTest.php
 delete mode 100644 vendor/twig/twig/tests/Loader/FilesystemTest.php
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/named/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/normal/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig
 delete mode 100644 vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig
 delete mode 100644 vendor/twig/twig/tests/NativeExtensionTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/AutoEscapeTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/BlockReferenceTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/BlockTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/DeprecatedTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/DoTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/ArrayTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/AssignNameTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/CallTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/ConditionalTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/ConstantTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/FilterTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/FunctionTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/GetAttrTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/NameTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/ParentTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/TestTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/ForTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/IfTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/ImportTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/IncludeTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/MacroTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/ModuleTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/PrintTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/SandboxTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/SetTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/SpacelessTest.php
 delete mode 100644 vendor/twig/twig/tests/Node/TextTest.php
 delete mode 100644 vendor/twig/twig/tests/NodeTraverserTest.php
 delete mode 100644 vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php
 delete mode 100644 vendor/twig/twig/tests/ParserTest.php
 delete mode 100644 vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php
 delete mode 100644 vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php
 delete mode 100644 vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php
 delete mode 100644 vendor/twig/twig/tests/Profiler/Dumper/TextTest.php
 delete mode 100644 vendor/twig/twig/tests/Profiler/ProfileTest.php
 delete mode 100644 vendor/twig/twig/tests/TemplateTest.php
 delete mode 100644 vendor/twig/twig/tests/TemplateWrapperTest.php
 delete mode 100644 vendor/twig/twig/tests/TokenStreamTest.php
 delete mode 100644 vendor/twig/twig/tests/Util/DeprecationCollectorTest.php
 delete mode 100644 vendor/twig/twig/tests/escapingTest.php

diff --git a/composer.lock b/composer.lock
index 87176746..c6fb649a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,31 +4,33 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d908f7b1863f5836c88a010d83d20bb3",
+    "content-hash": "07e9ab44da6fe4d44a38b49361c384ed",
     "packages": [
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
+            "version": "6.5.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
                 "shasum": ""
             },
             "require": {
+                "ext-json": "*",
                 "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.17.0"
             },
             "require-dev": {
                 "ext-curl": "*",
                 "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
+                "psr/log": "^1.1"
             },
             "suggest": {
                 "psr/log": "Required for using the Log middleware"
@@ -36,16 +38,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "6.5-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
                     "GuzzleHttp\\": "src/"
-                }
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -69,27 +71,31 @@
                 "rest",
                 "web service"
             ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/6.5"
+            },
+            "time": "2020-06-16T21:01:06+00:00"
         },
         {
             "name": "guzzlehttp/promises",
-            "version": "v1.3.1",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/promises.git",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0"
+                "php": ">=5.5"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.0"
+                "symfony/phpunit-bridge": "^4.4 || ^5.1"
             },
             "type": "library",
             "extra": {
@@ -120,20 +126,24 @@
             "keywords": [
                 "promise"
             ],
-            "time": "2016-12-20T10:07:11+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/1.4.0"
+            },
+            "time": "2020-09-30T07:37:28+00:00"
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.6.1",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
-                "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
                 "shasum": ""
             },
             "require": {
@@ -146,15 +156,15 @@
             },
             "require-dev": {
                 "ext-zlib": "*",
-                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
+                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
             },
             "suggest": {
-                "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6-dev"
+                    "dev-master": "1.7-dev"
                 }
             },
             "autoload": {
@@ -191,16 +201,21 @@
                 "uri",
                 "url"
             ],
-            "time": "2019-07-01T23:21:34+00:00"
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+            },
+            "time": "2020-09-30T07:37:11+00:00"
         },
         {
             "name": "hab/paginator",
             "version": "dev-master",
             "source": {
                 "type": "git",
-                "url": "git@github.com:dmj/php-paginator.git",
+                "url": "https://github.com/dmj/php-paginator.git",
                 "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
             },
+            "default-branch": true,
             "type": "library",
             "autoload": {
                 "psr-4": {
@@ -214,45 +229,51 @@
             "version": "dev-master",
             "source": {
                 "type": "git",
-                "url": "git@github.com:dmj/php-solr.git",
-                "reference": "a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe"
+                "url": "https://github.com/dmj/php-solr.git",
+                "reference": "ef528a52d57493ad2ae575037e42442075135f62"
             },
             "require": {
                 "guzzlehttp/guzzle": "~6.0"
             },
+            "require-dev": {
+                "phan/phan": "^2.4",
+                "phpstan/phpstan": "^0.11.19",
+                "phpunit/phpunit": "^8.4"
+            },
+            "default-branch": true,
             "type": "library",
             "autoload": {
                 "psr-0": {
                     "HAB": "src/"
                 }
             },
-            "time": "2019-08-07T06:46:21+00:00"
+            "time": "2020-07-16T13:14:20+00:00"
         },
         {
             "name": "pimple/pimple",
-            "version": "v3.2.3",
+            "version": "v3.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/silexphp/Pimple.git",
-                "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
-                "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
+                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0",
+                "php": "^7.2.5",
                 "psr/container": "^1.0"
             },
             "require-dev": {
-                "symfony/phpunit-bridge": "^3.2"
+                "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.2.x-dev"
+                    "dev-master": "3.3.x-dev"
                 }
             },
             "autoload": {
@@ -271,12 +292,16 @@
                 }
             ],
             "description": "Pimple, a simple Dependency Injection Container",
-            "homepage": "http://pimple.sensiolabs.org",
+            "homepage": "https://pimple.symfony.com",
             "keywords": [
                 "container",
                 "dependency injection"
             ],
-            "time": "2018-01-21T07:42:36+00:00"
+            "support": {
+                "issues": "https://github.com/silexphp/Pimple/issues",
+                "source": "https://github.com/silexphp/Pimple/tree/master"
+            },
+            "time": "2020-03-03T09:12:48+00:00"
         },
         {
             "name": "psr/container",
@@ -325,6 +350,10 @@
                 "container-interop",
                 "psr"
             ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/master"
+            },
             "time": "2017-02-14T16:28:37+00:00"
         },
         {
@@ -375,20 +404,23 @@
                 "request",
                 "response"
             ],
+            "support": {
+                "source": "https://github.com/php-fig/http-message/tree/master"
+            },
             "time": "2016-08-06T14:39:51+00:00"
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -397,7 +429,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -422,7 +454,10 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/1.1.3"
+            },
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
@@ -462,6 +497,10 @@
                 }
             ],
             "description": "A polyfill for getallheaders.",
+            "support": {
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+            },
             "time": "2019-03-08T08:55:37+00:00"
         },
         {
@@ -548,39 +587,39 @@
             "keywords": [
                 "microframework"
             ],
+            "support": {
+                "issues": "https://github.com/silexphp/Silex/issues",
+                "source": "https://github.com/silexphp/Silex/tree/v2.3.0"
+            },
             "abandoned": "symfony/flex",
             "time": "2018-04-20T05:17:01+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-                "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "psr/log": "~1.0"
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
                 "symfony/http-kernel": "<3.4"
             },
             "require-dev": {
-                "symfony/http-kernel": "~3.4|~4.0"
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Debug\\": ""
@@ -605,24 +644,110 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-09-19T15:51:53+00:00"
+            "support": {
+                "source": "https://github.com/symfony/debug/tree/v4.4.16"
+            },
+            "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-10-24T11:50:19+00:00"
+        },
+        {
+            "name": "symfony/error-handler",
+            "version": "v4.4.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/error-handler.git",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/363cca01cabf98e4f1c447b14d0a68617f003613",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/debug": "^4.4.5",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^4.4|^5.0",
+                "symfony/serializer": "^4.4|^5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ErrorHandler\\": ""
+                },
+                "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 ErrorHandler Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/error-handler/tree/v4.4.16"
+            },
+            "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-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "6229f58993e5a157f6096fc7145c0717d0be8807"
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807",
-                "reference": "6229f58993e5a157f6096fc7145c0717d0be8807",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/event-dispatcher-contracts": "^1.1"
             },
             "conflict": {
@@ -634,23 +759,19 @@
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "^3.4|^4.0",
-                "symfony/service-contracts": "^1.1",
-                "symfony/stopwatch": "~3.4|~4.0"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
                 "symfony/http-kernel": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\EventDispatcher\\": ""
@@ -675,24 +796,41 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-01T16:40:32+00:00"
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.16"
+            },
+            "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-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/event-dispatcher-contracts",
-            "version": "v1.1.7",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-                "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "suggest": {
                 "psr/event-dispatcher": "",
@@ -702,6 +840,10 @@
             "extra": {
                 "branch-alias": {
                     "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
@@ -733,37 +875,128 @@
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-09-17T09:54:03+00:00"
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9"
+            },
+            "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-07-06T13:19:58+00:00"
+        },
+        {
+            "name": "symfony/http-client-contracts",
+            "version": "v2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-client-contracts.git",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "suggest": {
+                "symfony/http-client-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-version": "2.3",
+                "branch-alias": {
+                    "dev-main": "2.3-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\HttpClient\\": ""
+                }
+            },
+            "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 HTTP clients",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1"
+            },
+            "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-10-14T17:08:19+00:00"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "76590ced16d4674780863471bae10452b79210a5"
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5",
-                "reference": "76590ced16d4674780863471bae10452b79210a5",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/827a00811ef699e809a201ceafac0b2b246bf38a",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/mime": "^4.3",
+                "php": ">=7.1.3",
+                "symfony/mime": "^4.3|^5.0",
                 "symfony/polyfill-mbstring": "~1.1"
             },
             "require-dev": {
                 "predis/predis": "~1.0",
-                "symfony/expression-language": "~3.4|~4.0"
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpFoundation\\": ""
@@ -788,37 +1021,56 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-04T19:48:13+00:00"
+            "support": {
+                "source": "https://github.com/symfony/http-foundation/tree/v4.4.16"
+            },
+            "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-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "5f08141850932e8019c01d8988bf3ed6367d2991"
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5f08141850932e8019c01d8988bf3ed6367d2991",
-                "reference": "5f08141850932e8019c01d8988bf3ed6367d2991",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "psr/log": "~1.0",
-                "symfony/debug": "~3.4|~4.0",
-                "symfony/event-dispatcher": "^4.3",
-                "symfony/http-foundation": "^4.1.1",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-php73": "^1.9"
+                "symfony/error-handler": "^4.4",
+                "symfony/event-dispatcher": "^4.4",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/polyfill-ctype": "^1.8",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
                 "symfony/browser-kit": "<4.3",
                 "symfony/config": "<3.4",
+                "symfony/console": ">=5",
                 "symfony/dependency-injection": "<4.3",
                 "symfony/translation": "<4.2",
-                "symfony/var-dumper": "<4.1.1",
                 "twig/twig": "<1.34|<2.4,>=2"
             },
             "provide": {
@@ -826,36 +1078,29 @@
             },
             "require-dev": {
                 "psr/cache": "~1.0",
-                "symfony/browser-kit": "^4.3",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/console": "~3.4|~4.0",
-                "symfony/css-selector": "~3.4|~4.0",
-                "symfony/dependency-injection": "^4.3",
-                "symfony/dom-crawler": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/finder": "~3.4|~4.0",
-                "symfony/process": "~3.4|~4.0",
-                "symfony/routing": "~3.4|~4.0",
-                "symfony/stopwatch": "~3.4|~4.0",
-                "symfony/templating": "~3.4|~4.0",
-                "symfony/translation": "~4.2",
-                "symfony/translation-contracts": "^1.1",
-                "symfony/var-dumper": "^4.1.1",
-                "twig/twig": "^1.34|^2.4"
+                "symfony/browser-kit": "^4.3|^5.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/console": "^3.4|^4.0",
+                "symfony/css-selector": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^4.3|^5.0",
+                "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/routing": "^3.4|^4.0|^5.0",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0",
+                "symfony/templating": "^3.4|^4.0|^5.0",
+                "symfony/translation": "^4.2|^5.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "twig/twig": "^1.34|^2.4|^3.0"
             },
             "suggest": {
                 "symfony/browser-kit": "",
                 "symfony/config": "",
                 "symfony/console": "",
-                "symfony/dependency-injection": "",
-                "symfony/var-dumper": ""
+                "symfony/dependency-injection": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpKernel\\": ""
@@ -880,37 +1125,53 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "https://symfony.com",
-            "time": "2019-10-07T15:06:41+00:00"
+            "support": {
+                "source": "https://github.com/symfony/http-kernel/tree/v4.4.16"
+            },
+            "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-10-28T05:50:56+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v4.3.5",
+            "version": "v5.1.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "32f71570547b91879fdbd9cf50317d556ae86916"
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916",
-                "reference": "32f71570547b91879fdbd9cf50317d556ae86916",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.2.5",
                 "symfony/polyfill-intl-idn": "^1.10",
-                "symfony/polyfill-mbstring": "^1.0"
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/mailer": "<4.4"
             },
             "require-dev": {
                 "egulias/email-validator": "^2.1.10",
-                "symfony/dependency-injection": "~3.4|^4.1"
+                "symfony/dependency-injection": "^4.4|^5.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Mime\\": ""
@@ -939,24 +1200,41 @@
                 "mime",
                 "mime-type"
             ],
-            "time": "2019-09-19T17:00:15+00:00"
+            "support": {
+                "source": "https://github.com/symfony/mime/tree/v5.1.8"
+            },
+            "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-10-24T12:01:57+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
-                "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "suggest": {
                 "ext-ctype": "For best performance"
@@ -964,7 +1242,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -997,26 +1279,43 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.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-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-intl-idn",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-                "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3",
-                "symfony/polyfill-mbstring": "^1.3",
-                "symfony/polyfill-php72": "^1.9"
+                "php": ">=7.1",
+                "symfony/polyfill-intl-normalizer": "^1.10",
+                "symfony/polyfill-php72": "^1.10"
             },
             "suggest": {
                 "ext-intl": "For best performance"
@@ -1024,7 +1323,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1044,6 +1347,10 @@
                     "name": "Laurent Bassin",
                     "email": "laurent@bassin.info"
                 },
+                {
+                    "name": "Trevor Rowbotham",
+                    "email": "trevor.rowbotham@pm.me"
+                },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
@@ -1059,24 +1366,125 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.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-10-23T14:02:19+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.20.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "727d1096295d807c309fb01a851577302394c897"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+                "reference": "727d1096295d807c309fb01a851577302394c897",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.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-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-                "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "suggest": {
                 "ext-mbstring": "For best performance"
@@ -1084,7 +1492,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1118,29 +1530,50 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.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-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-php72",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "04ce3335667451138df4307d6a9b61565560199e"
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
-                "reference": "04ce3335667451138df4307d6a9b61565560199e",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1173,29 +1606,50 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.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-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/polyfill-php73",
-            "version": "v1.12.0",
+            "version": "v1.20.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
-                "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.12-dev"
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1231,24 +1685,124 @@
                 "portable",
                 "shim"
             ],
-            "time": "2019-08-06T08:03:45+00:00"
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.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-10-23T14:02:19+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.20.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.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-10-23T14:02:19+00:00"
         },
         {
             "name": "symfony/routing",
-            "version": "v4.3.5",
+            "version": "v4.4.16",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea"
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/3b174ef04fe66696524efad1e5f7a6c663d822ea",
-                "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/826794f2e9305fe73cba859c60d2a336851bd202",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "conflict": {
                 "symfony/config": "<4.2",
@@ -1258,11 +1812,11 @@
             "require-dev": {
                 "doctrine/annotations": "~1.2",
                 "psr/log": "~1.0",
-                "symfony/config": "~4.2",
-                "symfony/dependency-injection": "~3.4|~4.0",
-                "symfony/expression-language": "~3.4|~4.0",
-                "symfony/http-foundation": "~3.4|~4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation loader",
@@ -1272,11 +1826,6 @@
                 "symfony/yaml": "For using the YAML loader"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Routing\\": ""
@@ -1307,20 +1856,37 @@
                 "uri",
                 "url"
             ],
-            "time": "2019-10-04T20:57:10+00:00"
+            "support": {
+                "source": "https://github.com/symfony/routing/tree/v4.4.16"
+            },
+            "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-10-24T11:50:19+00:00"
         },
         {
             "name": "symfony/twig-bridge",
-            "version": "v3.4.32",
+            "version": "v3.4.46",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/twig-bridge.git",
-                "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259"
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9f55b34b539a3a0ea51c2ed96609173c5b326259",
-                "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259",
+                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
                 "shasum": ""
             },
             "require": {
@@ -1369,11 +1935,6 @@
                 "symfony/yaml": "For using the YamlExtension"
             },
             "type": "symfony-bridge",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Bridge\\Twig\\": ""
@@ -1398,35 +1959,139 @@
             ],
             "description": "Symfony Twig Bridge",
             "homepage": "https://symfony.com",
-            "time": "2019-10-01T15:13:36+00:00"
+            "support": {
+                "source": "https://github.com/symfony/twig-bridge/tree/v3.4.46"
+            },
+            "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-10-24T10:57:07+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v5.1.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.3",
+                "symfony/console": "<4.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^2.4|^3.0"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+            },
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "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 mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-dumper/tree/v5.1.8"
+            },
+            "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-10-27T10:11:13+00:00"
         },
         {
             "name": "twig/twig",
-            "version": "v1.42.3",
+            "version": "v1.44.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e"
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-                "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5.0",
+                "php": ">=7.2.5",
                 "symfony/polyfill-ctype": "^1.8"
             },
             "require-dev": {
                 "psr/container": "^1.0",
-                "symfony/debug": "^3.4|^4.2",
-                "symfony/phpunit-bridge": "^4.4@dev|^5.0"
+                "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.42-dev"
+                    "dev-master": "1.44-dev"
                 }
             },
             "autoload": {
@@ -1450,7 +2115,6 @@
                 },
                 {
                     "name": "Twig Team",
-                    "homepage": "https://twig.symfony.com/contributors",
                     "role": "Contributors"
                 },
                 {
@@ -1464,7 +2128,21 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2019-08-24T12:51:03+00:00"
+            "support": {
+                "issues": "https://github.com/twigphp/Twig/issues",
+                "source": "https://github.com/twigphp/Twig/tree/v1.44.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-27T19:22:48+00:00"
         }
     ],
     "packages-dev": [],
@@ -1477,5 +2155,6 @@
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": [],
-    "platform-dev": []
+    "platform-dev": [],
+    "plugin-api-version": "2.0.0"
 }
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index fce8549f..1a58957d 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Jordi Boggiano <j.boggiano@seld.be>
- * @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
 {
@@ -60,7 +60,7 @@ class ClassLoader
     public function getPrefixes()
     {
         if (!empty($this->prefixesPsr0)) {
-            return call_user_func_array('array_merge', $this->prefixesPsr0);
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
         }
 
         return array();
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 5db5c977..83006fac 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,5 +6,11 @@ $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
 return array(
+    'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+    'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+    'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+    'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
 );
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 78110623..167ee059 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -7,10 +7,13 @@ $baseDir = dirname($vendorDir);
 
 return array(
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
     '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
     'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
     '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
     '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
+    '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
     'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 8f5ae403..5adc4e24 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -7,17 +7,22 @@ $baseDir = dirname($vendorDir);
 
 return array(
     'Twig\\' => array($vendorDir . '/twig/twig/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\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
     'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
     'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+    'Symfony\\Contracts\\HttpClient\\' => array($vendorDir . '/symfony/http-client-contracts'),
     'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'),
+    'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
     'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
     'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'),
     'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'),
     'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'),
     'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
+    'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'),
     'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
     'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'),
     'Silex\\' => array($vendorDir . '/silex/silex/src/Silex'),
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 9e4d4100..1a3ea5ef 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -13,19 +13,24 @@ class ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931
         }
     }
 
+    /**
+     * @return \Composer\Autoload\ClassLoader
+     */
     public static function getLoader()
     {
         if (null !== self::$loader) {
             return self::$loader;
         }
 
+        require __DIR__ . '/platform_check.php';
+
         spl_autoload_register(array('ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
         spl_autoload_unregister(array('ComposerAutoloaderInit8a9318ad96e1e6602a968c996fe31931', '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\ComposerStaticInit8a9318ad96e1e6602a968c996fe31931::getInitializer($loader));
         } else {
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index b33df1c8..82dce882 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -8,10 +8,13 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
 {
     public static $files = array (
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
         '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
         'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
         '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
+        '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
         'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
@@ -25,17 +28,22 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         ),
         'S' => 
         array (
+            'Symfony\\Polyfill\\Php80\\' => 23,
             'Symfony\\Polyfill\\Php73\\' => 23,
             'Symfony\\Polyfill\\Php72\\' => 23,
             'Symfony\\Polyfill\\Mbstring\\' => 26,
+            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
             'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
             'Symfony\\Polyfill\\Ctype\\' => 23,
+            'Symfony\\Contracts\\HttpClient\\' => 29,
             'Symfony\\Contracts\\EventDispatcher\\' => 34,
+            'Symfony\\Component\\VarDumper\\' => 28,
             'Symfony\\Component\\Routing\\' => 26,
             'Symfony\\Component\\Mime\\' => 23,
             'Symfony\\Component\\HttpKernel\\' => 29,
             'Symfony\\Component\\HttpFoundation\\' => 33,
             'Symfony\\Component\\EventDispatcher\\' => 34,
+            'Symfony\\Component\\ErrorHandler\\' => 31,
             'Symfony\\Component\\Debug\\' => 24,
             'Symfony\\Bridge\\Twig\\' => 20,
             'Silex\\' => 6,
@@ -63,6 +71,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/twig/twig/src',
         ),
+        'Symfony\\Polyfill\\Php80\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+        ),
         'Symfony\\Polyfill\\Php73\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
@@ -75,6 +87,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
         ),
+        'Symfony\\Polyfill\\Intl\\Normalizer\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
+        ),
         'Symfony\\Polyfill\\Intl\\Idn\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
@@ -83,10 +99,18 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
         ),
+        'Symfony\\Contracts\\HttpClient\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/http-client-contracts',
+        ),
         'Symfony\\Contracts\\EventDispatcher\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts',
         ),
+        'Symfony\\Component\\VarDumper\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/var-dumper',
+        ),
         'Symfony\\Component\\Routing\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/routing',
@@ -107,6 +131,10 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
         array (
             0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
         ),
+        'Symfony\\Component\\ErrorHandler\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/error-handler',
+        ),
         'Symfony\\Component\\Debug\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/debug',
@@ -178,7 +206,13 @@ class ComposerStaticInit8a9318ad96e1e6602a968c996fe31931
     );
 
     public static $classMap = array (
+        'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
         'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
+        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
+        'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+        'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+        'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
     );
 
     public static function getInitializer(ClassLoader $loader)
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0ec58302..9d619da2 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,1512 +1,2219 @@
-[
-    {
-        "name": "guzzlehttp/guzzle",
-        "version": "6.3.3",
-        "version_normalized": "6.3.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/guzzle.git",
-            "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-            "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-            "shasum": ""
-        },
-        "require": {
-            "guzzlehttp/promises": "^1.0",
-            "guzzlehttp/psr7": "^1.4",
-            "php": ">=5.5"
-        },
-        "require-dev": {
-            "ext-curl": "*",
-            "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-            "psr/log": "^1.0"
-        },
-        "suggest": {
-            "psr/log": "Required for using the Log middleware"
-        },
-        "time": "2018-04-22T15:46:56+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "6.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "src/functions_include.php"
-            ],
-            "psr-4": {
-                "GuzzleHttp\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle is a PHP HTTP client library",
-        "homepage": "http://guzzlephp.org/",
-        "keywords": [
-            "client",
-            "curl",
-            "framework",
-            "http",
-            "http client",
-            "rest",
-            "web service"
-        ]
-    },
-    {
-        "name": "guzzlehttp/promises",
-        "version": "v1.3.1",
-        "version_normalized": "1.3.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/promises.git",
-            "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-            "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "^4.0"
-        },
-        "time": "2016-12-20T10:07:11+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Promise\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
-        ],
-        "description": "Guzzle promises library",
-        "keywords": [
-            "promise"
-        ]
-    },
-    {
-        "name": "guzzlehttp/psr7",
-        "version": "1.6.1",
-        "version_normalized": "1.6.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/guzzle/psr7.git",
-            "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
-            "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0",
-            "psr/http-message": "~1.0",
-            "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
-        },
-        "require-dev": {
-            "ext-zlib": "*",
-            "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
-        },
-        "suggest": {
-            "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
-        },
-        "time": "2019-07-01T23:21:34+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.6-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Psr7\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            },
-            {
-                "name": "Tobias Schultze",
-                "homepage": "https://github.com/Tobion"
-            }
-        ],
-        "description": "PSR-7 message implementation that also provides common utility methods",
-        "keywords": [
-            "http",
-            "message",
-            "psr-7",
-            "request",
-            "response",
-            "stream",
-            "uri",
-            "url"
-        ]
-    },
-    {
-        "name": "hab/paginator",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": "git@github.com:dmj/php-paginator.git",
-            "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
-        },
-        "time": "2017-03-22T08:37:43+00:00",
-        "type": "library",
-        "installation-source": "source",
-        "autoload": {
-            "psr-4": {
-                "HAB\\Paginator\\": "lib/"
-            }
-        }
-    },
-    {
-        "name": "hab/solr",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "source": {
-            "type": "git",
-            "url": "git@github.com:dmj/php-solr.git",
-            "reference": "a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe"
-        },
-        "require": {
-            "guzzlehttp/guzzle": "~6.0"
-        },
-        "time": "2019-08-07T06:46:21+00:00",
-        "type": "library",
-        "installation-source": "source",
-        "autoload": {
-            "psr-0": {
-                "HAB": "src/"
-            }
-        }
-    },
-    {
-        "name": "pimple/pimple",
-        "version": "v3.2.3",
-        "version_normalized": "3.2.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/silexphp/Pimple.git",
-            "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
-            "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0",
-            "psr/container": "^1.0"
-        },
-        "require-dev": {
-            "symfony/phpunit-bridge": "^3.2"
-        },
-        "time": "2018-01-21T07:42:36+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.2.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Pimple": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            }
-        ],
-        "description": "Pimple, a simple Dependency Injection Container",
-        "homepage": "http://pimple.sensiolabs.org",
-        "keywords": [
-            "container",
-            "dependency injection"
-        ]
-    },
-    {
-        "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"
-        ]
-    },
-    {
-        "name": "psr/http-message",
-        "version": "1.0.1",
-        "version_normalized": "1.0.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/http-message.git",
-            "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
-            "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2016-08-06T14:39:51+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Psr\\Http\\Message\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
-            }
-        ],
-        "description": "Common interface for HTTP messages",
-        "homepage": "https://github.com/php-fig/http-message",
-        "keywords": [
-            "http",
-            "http-message",
-            "psr",
-            "psr-7",
-            "request",
-            "response"
-        ]
-    },
-    {
-        "name": "psr/log",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/php-fig/log.git",
-            "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-            "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2018-11-20T15:27:04+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.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"
-        ]
-    },
-    {
-        "name": "ralouphie/getallheaders",
-        "version": "3.0.3",
-        "version_normalized": "3.0.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/ralouphie/getallheaders.git",
-            "reference": "120b605dfeb996808c31b6477290a714d356e822"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
-            "reference": "120b605dfeb996808c31b6477290a714d356e822",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.6"
-        },
-        "require-dev": {
-            "php-coveralls/php-coveralls": "^2.1",
-            "phpunit/phpunit": "^5 || ^6.5"
-        },
-        "time": "2019-03-08T08:55:37+00:00",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "files": [
-                "src/getallheaders.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Ralph Khattar",
-                "email": "ralph.khattar@gmail.com"
-            }
-        ],
-        "description": "A polyfill for getallheaders."
-    },
-    {
-        "name": "silex/silex",
-        "version": "v2.3.0",
-        "version_normalized": "2.3.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/silexphp/Silex.git",
-            "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-            "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=7.1.3",
-            "pimple/pimple": "^3.0",
-            "symfony/event-dispatcher": "^4.0",
-            "symfony/http-foundation": "^4.0",
-            "symfony/http-kernel": "^4.0",
-            "symfony/routing": "^4.0"
-        },
-        "replace": {
-            "silex/api": "self.version",
-            "silex/providers": "self.version"
-        },
-        "require-dev": {
-            "doctrine/dbal": "^2.2",
-            "monolog/monolog": "^1.4.1",
-            "swiftmailer/swiftmailer": "^5",
-            "symfony/asset": "^4.0",
-            "symfony/browser-kit": "^4.0",
-            "symfony/config": "^4.0",
-            "symfony/css-selector": "^4.0",
-            "symfony/debug": "^4.0",
-            "symfony/doctrine-bridge": "^4.0",
-            "symfony/dom-crawler": "^4.0",
-            "symfony/expression-language": "^4.0",
-            "symfony/finder": "^4.0",
-            "symfony/form": "^4.0",
-            "symfony/intl": "^4.0",
-            "symfony/monolog-bridge": "^4.0",
-            "symfony/options-resolver": "^4.0",
-            "symfony/phpunit-bridge": "^3.2",
-            "symfony/process": "^4.0",
-            "symfony/security": "^4.0",
-            "symfony/serializer": "^4.0",
-            "symfony/translation": "^4.0",
-            "symfony/twig-bridge": "^4.0",
-            "symfony/validator": "^4.0",
-            "symfony/var-dumper": "^4.0",
-            "symfony/web-link": "^4.0",
-            "twig/twig": "^2.0"
-        },
-        "time": "2018-04-20T05:17:01+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.3.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Silex\\": "src/Silex"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Igor Wiedler",
-                "email": "igor@wiedler.ch"
-            }
-        ],
-        "description": "The PHP micro-framework based on the Symfony Components",
-        "homepage": "http://silex.sensiolabs.org",
-        "keywords": [
-            "microframework"
-        ],
-        "abandoned": "symfony/flex"
-    },
-    {
-        "name": "symfony/debug",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/debug.git",
-            "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-            "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "psr/log": "~1.0"
-        },
-        "conflict": {
-            "symfony/http-kernel": "<3.4"
-        },
-        "require-dev": {
-            "symfony/http-kernel": "~3.4|~4.0"
-        },
-        "time": "2019-09-19T15:51:53+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Debug\\": ""
-            },
-            "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 Debug Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/event-dispatcher",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher.git",
-            "reference": "6229f58993e5a157f6096fc7145c0717d0be8807"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6229f58993e5a157f6096fc7145c0717d0be8807",
-            "reference": "6229f58993e5a157f6096fc7145c0717d0be8807",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/event-dispatcher-contracts": "^1.1"
-        },
-        "conflict": {
-            "symfony/dependency-injection": "<3.4"
-        },
-        "provide": {
-            "psr/event-dispatcher-implementation": "1.0",
-            "symfony/event-dispatcher-implementation": "1.1"
-        },
-        "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/config": "~3.4|~4.0",
-            "symfony/dependency-injection": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/http-foundation": "^3.4|^4.0",
-            "symfony/service-contracts": "^1.1",
-            "symfony/stopwatch": "~3.4|~4.0"
-        },
-        "suggest": {
-            "symfony/dependency-injection": "",
-            "symfony/http-kernel": ""
-        },
-        "time": "2019-10-01T16:40:32+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-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"
-    },
-    {
-        "name": "symfony/event-dispatcher-contracts",
-        "version": "v1.1.7",
-        "version_normalized": "1.1.7.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-            "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-            "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3"
-        },
-        "suggest": {
-            "psr/event-dispatcher": "",
-            "symfony/event-dispatcher-implementation": ""
-        },
-        "time": "2019-09-17T09:54:03+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.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"
-        ]
-    },
-    {
-        "name": "symfony/http-foundation",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-foundation.git",
-            "reference": "76590ced16d4674780863471bae10452b79210a5"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5",
-            "reference": "76590ced16d4674780863471bae10452b79210a5",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/mime": "^4.3",
-            "symfony/polyfill-mbstring": "~1.1"
-        },
-        "require-dev": {
-            "predis/predis": "~1.0",
-            "symfony/expression-language": "~3.4|~4.0"
-        },
-        "time": "2019-10-04T19:48:13+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpFoundation\\": ""
-            },
-            "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 HttpFoundation Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/http-kernel",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/http-kernel.git",
-            "reference": "5f08141850932e8019c01d8988bf3ed6367d2991"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5f08141850932e8019c01d8988bf3ed6367d2991",
-            "reference": "5f08141850932e8019c01d8988bf3ed6367d2991",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "psr/log": "~1.0",
-            "symfony/debug": "~3.4|~4.0",
-            "symfony/event-dispatcher": "^4.3",
-            "symfony/http-foundation": "^4.1.1",
-            "symfony/polyfill-ctype": "~1.8",
-            "symfony/polyfill-php73": "^1.9"
-        },
-        "conflict": {
-            "symfony/browser-kit": "<4.3",
-            "symfony/config": "<3.4",
-            "symfony/dependency-injection": "<4.3",
-            "symfony/translation": "<4.2",
-            "symfony/var-dumper": "<4.1.1",
-            "twig/twig": "<1.34|<2.4,>=2"
-        },
-        "provide": {
-            "psr/log-implementation": "1.0"
-        },
-        "require-dev": {
-            "psr/cache": "~1.0",
-            "symfony/browser-kit": "^4.3",
-            "symfony/config": "~3.4|~4.0",
-            "symfony/console": "~3.4|~4.0",
-            "symfony/css-selector": "~3.4|~4.0",
-            "symfony/dependency-injection": "^4.3",
-            "symfony/dom-crawler": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/finder": "~3.4|~4.0",
-            "symfony/process": "~3.4|~4.0",
-            "symfony/routing": "~3.4|~4.0",
-            "symfony/stopwatch": "~3.4|~4.0",
-            "symfony/templating": "~3.4|~4.0",
-            "symfony/translation": "~4.2",
-            "symfony/translation-contracts": "^1.1",
-            "symfony/var-dumper": "^4.1.1",
-            "twig/twig": "^1.34|^2.4"
-        },
-        "suggest": {
-            "symfony/browser-kit": "",
-            "symfony/config": "",
-            "symfony/console": "",
-            "symfony/dependency-injection": "",
-            "symfony/var-dumper": ""
-        },
-        "time": "2019-10-07T15:06:41+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\HttpKernel\\": ""
-            },
-            "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 HttpKernel Component",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "symfony/mime",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/mime.git",
-            "reference": "32f71570547b91879fdbd9cf50317d556ae86916"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916",
-            "reference": "32f71570547b91879fdbd9cf50317d556ae86916",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3",
-            "symfony/polyfill-intl-idn": "^1.10",
-            "symfony/polyfill-mbstring": "^1.0"
-        },
-        "require-dev": {
-            "egulias/email-validator": "^2.1.10",
-            "symfony/dependency-injection": "~3.4|^4.1"
-        },
-        "time": "2019-09-19T17:00:15+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Mime\\": ""
-            },
-            "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": "A library to manipulate MIME messages",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "mime",
-            "mime-type"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-ctype",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-ctype.git",
-            "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
-            "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "suggest": {
-            "ext-ctype": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "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"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-intl-idn",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-intl-idn.git",
-            "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-            "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "symfony/polyfill-mbstring": "^1.3",
-            "symfony/polyfill-php72": "^1.9"
-        },
-        "suggest": {
-            "ext-intl": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Polyfill\\Intl\\Idn\\": ""
-            },
-            "files": [
-                "bootstrap.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Laurent Bassin",
-                "email": "laurent@bassin.info"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "compatibility",
-            "idn",
-            "intl",
-            "polyfill",
-            "portable",
-            "shim"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-mbstring",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-mbstring.git",
-            "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-            "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "suggest": {
-            "ext-mbstring": "For best performance"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "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"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-php72",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-php72.git",
-            "reference": "04ce3335667451138df4307d6a9b61565560199e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
-            "reference": "04ce3335667451138df4307d6a9b61565560199e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-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"
-        ]
-    },
-    {
-        "name": "symfony/polyfill-php73",
-        "version": "v1.12.0",
-        "version_normalized": "1.12.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/polyfill-php73.git",
-            "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
-            "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2019-08-06T08:03:45+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.12-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Polyfill\\Php73\\": ""
+{
+    "packages": [
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "6.5.5",
+            "version_normalized": "6.5.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "guzzlehttp/promises": "^1.0",
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "^1.17.0"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+                "psr/log": "^1.1"
+            },
+            "suggest": {
+                "psr/log": "Required for using the Log middleware"
             },
-            "files": [
-                "bootstrap.php"
+            "time": "2020-06-16T21:01:06+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.5-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
             ],
-            "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"
-        ]
-    },
-    {
-        "name": "symfony/routing",
-        "version": "v4.3.5",
-        "version_normalized": "4.3.5.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/routing.git",
-            "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/routing/zipball/3b174ef04fe66696524efad1e5f7a6c663d822ea",
-            "reference": "3b174ef04fe66696524efad1e5f7a6c663d822ea",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^7.1.3"
-        },
-        "conflict": {
-            "symfony/config": "<4.2",
-            "symfony/dependency-injection": "<3.4",
-            "symfony/yaml": "<3.4"
-        },
-        "require-dev": {
-            "doctrine/annotations": "~1.2",
-            "psr/log": "~1.0",
-            "symfony/config": "~4.2",
-            "symfony/dependency-injection": "~3.4|~4.0",
-            "symfony/expression-language": "~3.4|~4.0",
-            "symfony/http-foundation": "~3.4|~4.0",
-            "symfony/yaml": "~3.4|~4.0"
-        },
-        "suggest": {
-            "doctrine/annotations": "For using the annotation loader",
-            "symfony/config": "For using the all-in-one router or any loader",
-            "symfony/expression-language": "For using expression matching",
-            "symfony/http-foundation": "For using a Symfony Request object",
-            "symfony/yaml": "For using the YAML loader"
-        },
-        "time": "2019-10-04T20:57:10+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "4.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Component\\Routing\\": ""
-            },
-            "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 Routing Component",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "router",
-            "routing",
-            "uri",
-            "url"
-        ]
-    },
-    {
-        "name": "symfony/twig-bridge",
-        "version": "v3.4.32",
-        "version_normalized": "3.4.32.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/twig-bridge.git",
-            "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9f55b34b539a3a0ea51c2ed96609173c5b326259",
-            "reference": "9f55b34b539a3a0ea51c2ed96609173c5b326259",
-            "shasum": ""
-        },
-        "require": {
-            "php": "^5.5.9|>=7.0.8",
-            "twig/twig": "^1.41|^2.10"
-        },
-        "conflict": {
-            "symfony/console": "<3.4",
-            "symfony/form": "<3.4.31|>=4.0,<4.3.4"
-        },
-        "require-dev": {
-            "fig/link-util": "^1.0",
-            "symfony/asset": "~2.8|~3.0|~4.0",
-            "symfony/console": "~3.4|~4.0",
-            "symfony/dependency-injection": "~2.8|~3.0|~4.0",
-            "symfony/expression-language": "~2.8|~3.0|~4.0",
-            "symfony/finder": "~2.8|~3.0|~4.0",
-            "symfony/form": "^3.4.31|^4.3.4",
-            "symfony/http-foundation": "^3.3.11|~4.0",
-            "symfony/http-kernel": "~3.2|~4.0",
-            "symfony/polyfill-intl-icu": "~1.0",
-            "symfony/routing": "~2.8|~3.0|~4.0",
-            "symfony/security": "^2.8.31|^3.3.13|~4.0",
-            "symfony/security-acl": "~2.8|~3.0",
-            "symfony/stopwatch": "~2.8|~3.0|~4.0",
-            "symfony/templating": "~2.8|~3.0|~4.0",
-            "symfony/translation": "~2.8|~3.0|~4.0",
-            "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
-            "symfony/web-link": "~3.3|~4.0",
-            "symfony/workflow": "~3.3|~4.0",
-            "symfony/yaml": "~2.8|~3.0|~4.0"
-        },
-        "suggest": {
-            "symfony/asset": "For using the AssetExtension",
-            "symfony/expression-language": "For using the ExpressionExtension",
-            "symfony/finder": "",
-            "symfony/form": "For using the FormExtension",
-            "symfony/http-kernel": "For using the HttpKernelExtension",
-            "symfony/routing": "For using the RoutingExtension",
-            "symfony/security": "For using the SecurityExtension",
-            "symfony/stopwatch": "For using the StopwatchExtension",
-            "symfony/templating": "For using the TwigEngine",
-            "symfony/translation": "For using the TranslationExtension",
-            "symfony/var-dumper": "For using the DumpExtension",
-            "symfony/web-link": "For using the WebLinkExtension",
-            "symfony/yaml": "For using the YamlExtension"
-        },
-        "time": "2019-10-01T15:13:36+00:00",
-        "type": "symfony-bridge",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Symfony\\Bridge\\Twig\\": ""
-            },
-            "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 Twig Bridge",
-        "homepage": "https://symfony.com"
-    },
-    {
-        "name": "twig/twig",
-        "version": "v1.42.3",
-        "version_normalized": "1.42.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/twigphp/Twig.git",
-            "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/twigphp/Twig/zipball/201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-            "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.5.0",
-            "symfony/polyfill-ctype": "^1.8"
-        },
-        "require-dev": {
-            "psr/container": "^1.0",
-            "symfony/debug": "^3.4|^4.2",
-            "symfony/phpunit-bridge": "^4.4@dev|^5.0"
-        },
-        "time": "2019-08-24T12:51:03+00:00",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.42-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Twig_": "lib/"
-            },
-            "psr-4": {
-                "Twig\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Twig Team",
-                "homepage": "https://twig.symfony.com/contributors",
-                "role": "Contributors"
-            },
-            {
-                "name": "Armin Ronacher",
-                "email": "armin.ronacher@active-4.com",
-                "role": "Project Founder"
-            }
-        ],
-        "description": "Twig, the flexible, fast, and secure template language for PHP",
-        "homepage": "https://twig.symfony.com",
-        "keywords": [
-            "templating"
-        ]
-    }
-]
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/6.5"
+            },
+            "install-path": "../guzzlehttp/guzzle"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "1.4.0",
+            "version_normalized": "1.4.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
+                "reference": "60d379c243457e073cff02bc323a2a86cb355631",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^4.4 || ^5.1"
+            },
+            "time": "2020-09-30T07:37:28+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/1.4.0"
+            },
+            "install-path": "../guzzlehttp/promises"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "1.7.0",
+            "version_normalized": "1.7.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0",
+                "psr/http-message": "~1.0",
+                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+            },
+            "provide": {
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "ext-zlib": "*",
+                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+            },
+            "suggest": {
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+            },
+            "time": "2020-09-30T07:37:11+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.7-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+            },
+            "install-path": "../guzzlehttp/psr7"
+        },
+        {
+            "name": "hab/paginator",
+            "version": "dev-master",
+            "version_normalized": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dmj/php-paginator.git",
+                "reference": "82429eeee25412b638da3b18d519fc9cb9b4568a"
+            },
+            "time": "2017-03-22T08:37:43+00:00",
+            "default-branch": true,
+            "type": "library",
+            "installation-source": "source",
+            "autoload": {
+                "psr-4": {
+                    "HAB\\Paginator\\": "lib/"
+                }
+            },
+            "install-path": "../hab/paginator"
+        },
+        {
+            "name": "hab/solr",
+            "version": "dev-master",
+            "version_normalized": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/dmj/php-solr.git",
+                "reference": "ef528a52d57493ad2ae575037e42442075135f62"
+            },
+            "require": {
+                "guzzlehttp/guzzle": "~6.0"
+            },
+            "require-dev": {
+                "phan/phan": "^2.4",
+                "phpstan/phpstan": "^0.11.19",
+                "phpunit/phpunit": "^8.4"
+            },
+            "time": "2020-07-16T13:14:20+00:00",
+            "default-branch": true,
+            "type": "library",
+            "installation-source": "source",
+            "autoload": {
+                "psr-0": {
+                    "HAB": "src/"
+                }
+            },
+            "install-path": "../hab/solr"
+        },
+        {
+            "name": "pimple/pimple",
+            "version": "v3.3.0",
+            "version_normalized": "3.3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/silexphp/Pimple.git",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5",
+                "psr/container": "^1.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
+            },
+            "time": "2020-03-03T09:12:48+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.3.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-0": {
+                    "Pimple": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Pimple, a simple Dependency Injection Container",
+            "homepage": "https://pimple.symfony.com",
+            "keywords": [
+                "container",
+                "dependency injection"
+            ],
+            "support": {
+                "issues": "https://github.com/silexphp/Pimple/issues",
+                "source": "https://github.com/silexphp/Pimple/tree/master"
+            },
+            "install-path": "../pimple/pimple"
+        },
+        {
+            "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/http-message",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "time": "2016-08-06T14:39:51+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "install-path": "../psr/http-message"
+        },
+        {
+            "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"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/1.1.3"
+            },
+            "install-path": "../psr/log"
+        },
+        {
+            "name": "ralouphie/getallheaders",
+            "version": "3.0.3",
+            "version_normalized": "3.0.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ralouphie/getallheaders.git",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
+            },
+            "time": "2019-03-08T08:55:37+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "src/getallheaders.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
+                }
+            ],
+            "description": "A polyfill for getallheaders.",
+            "install-path": "../ralouphie/getallheaders"
+        },
+        {
+            "name": "silex/silex",
+            "version": "v2.3.0",
+            "version_normalized": "2.3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/silexphp/Silex.git",
+                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131",
+                "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "pimple/pimple": "^3.0",
+                "symfony/event-dispatcher": "^4.0",
+                "symfony/http-foundation": "^4.0",
+                "symfony/http-kernel": "^4.0",
+                "symfony/routing": "^4.0"
+            },
+            "replace": {
+                "silex/api": "self.version",
+                "silex/providers": "self.version"
+            },
+            "require-dev": {
+                "doctrine/dbal": "^2.2",
+                "monolog/monolog": "^1.4.1",
+                "swiftmailer/swiftmailer": "^5",
+                "symfony/asset": "^4.0",
+                "symfony/browser-kit": "^4.0",
+                "symfony/config": "^4.0",
+                "symfony/css-selector": "^4.0",
+                "symfony/debug": "^4.0",
+                "symfony/doctrine-bridge": "^4.0",
+                "symfony/dom-crawler": "^4.0",
+                "symfony/expression-language": "^4.0",
+                "symfony/finder": "^4.0",
+                "symfony/form": "^4.0",
+                "symfony/intl": "^4.0",
+                "symfony/monolog-bridge": "^4.0",
+                "symfony/options-resolver": "^4.0",
+                "symfony/phpunit-bridge": "^3.2",
+                "symfony/process": "^4.0",
+                "symfony/security": "^4.0",
+                "symfony/serializer": "^4.0",
+                "symfony/translation": "^4.0",
+                "symfony/twig-bridge": "^4.0",
+                "symfony/validator": "^4.0",
+                "symfony/var-dumper": "^4.0",
+                "symfony/web-link": "^4.0",
+                "twig/twig": "^2.0"
+            },
+            "time": "2018-04-20T05:17:01+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Silex\\": "src/Silex"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                }
+            ],
+            "description": "The PHP micro-framework based on the Symfony Components",
+            "homepage": "http://silex.sensiolabs.org",
+            "keywords": [
+                "microframework"
+            ],
+            "abandoned": "symfony/flex",
+            "install-path": "../silex/silex"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "reference": "c87adf3fc1cd0bf4758316a3a150d50a8f957ef4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/http-kernel": "<3.4"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "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 Debug Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/debug/tree/v4.4.16"
+            },
+            "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/debug"
+        },
+        {
+            "name": "symfony/error-handler",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/error-handler.git",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/363cca01cabf98e4f1c447b14d0a68617f003613",
+                "reference": "363cca01cabf98e4f1c447b14d0a68617f003613",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/debug": "^4.4.5",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/var-dumper": "^4.4|^5.0"
+            },
+            "require-dev": {
+                "symfony/http-kernel": "^4.4|^5.0",
+                "symfony/serializer": "^4.4|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ErrorHandler\\": ""
+                },
+                "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 ErrorHandler Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/error-handler/tree/v4.4.16"
+            },
+            "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/error-handler"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "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",
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.16"
+            },
+            "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": "v1.1.9",
+            "version_normalized": "1.1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "time": "2020-07-06T13:19:58+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9"
+            },
+            "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/http-client-contracts",
+            "version": "v2.3.1",
+            "version_normalized": "2.3.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-client-contracts.git",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
+                "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "suggest": {
+                "symfony/http-client-implementation": ""
+            },
+            "time": "2020-10-14T17:08:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-version": "2.3",
+                "branch-alias": {
+                    "dev-main": "2.3-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\HttpClient\\": ""
+                }
+            },
+            "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 HTTP clients",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1"
+            },
+            "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/http-client-contracts"
+        },
+        {
+            "name": "symfony/http-foundation",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-foundation.git",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/827a00811ef699e809a201ceafac0b2b246bf38a",
+                "reference": "827a00811ef699e809a201ceafac0b2b246bf38a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/mime": "^4.3|^5.0",
+                "symfony/polyfill-mbstring": "~1.1"
+            },
+            "require-dev": {
+                "predis/predis": "~1.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\HttpFoundation\\": ""
+                },
+                "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 HttpFoundation Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/http-foundation/tree/v4.4.16"
+            },
+            "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/http-foundation"
+        },
+        {
+            "name": "symfony/http-kernel",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/http-kernel.git",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "reference": "109b2a46e470a487ec8b0ffea4b0bb993aaf42ed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "~1.0",
+                "symfony/error-handler": "^4.4",
+                "symfony/event-dispatcher": "^4.4",
+                "symfony/http-client-contracts": "^1.1|^2",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/polyfill-ctype": "^1.8",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/browser-kit": "<4.3",
+                "symfony/config": "<3.4",
+                "symfony/console": ">=5",
+                "symfony/dependency-injection": "<4.3",
+                "symfony/translation": "<4.2",
+                "twig/twig": "<1.34|<2.4,>=2"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
+            "require-dev": {
+                "psr/cache": "~1.0",
+                "symfony/browser-kit": "^4.3|^5.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/console": "^3.4|^4.0",
+                "symfony/css-selector": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^4.3|^5.0",
+                "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/routing": "^3.4|^4.0|^5.0",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0",
+                "symfony/templating": "^3.4|^4.0|^5.0",
+                "symfony/translation": "^4.2|^5.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "twig/twig": "^1.34|^2.4|^3.0"
+            },
+            "suggest": {
+                "symfony/browser-kit": "",
+                "symfony/config": "",
+                "symfony/console": "",
+                "symfony/dependency-injection": ""
+            },
+            "time": "2020-10-28T05:50:56+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\HttpKernel\\": ""
+                },
+                "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 HttpKernel Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/http-kernel/tree/v4.4.16"
+            },
+            "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/http-kernel"
+        },
+        {
+            "name": "symfony/mime",
+            "version": "v5.1.8",
+            "version_normalized": "5.1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/mime.git",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-intl-idn": "^1.10",
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/mailer": "<4.4"
+            },
+            "require-dev": {
+                "egulias/email-validator": "^2.1.10",
+                "symfony/dependency-injection": "^4.4|^5.0"
+            },
+            "time": "2020-10-24T12:01:57+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Mime\\": ""
+                },
+                "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": "A library to manipulate MIME messages",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "mime",
+                "mime-type"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/mime/tree/v5.1.8"
+            },
+            "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/mime"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-ctype"
+        },
+        {
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1",
+                "symfony/polyfill-intl-normalizer": "^1.10",
+                "symfony/polyfill-php72": "^1.10"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Trevor Rowbotham",
+                    "email": "trevor.rowbotham@pm.me"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "idn",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-intl-idn"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "727d1096295d807c309fb01a851577302394c897"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+                "reference": "727d1096295d807c309fb01a851577302394c897",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-intl-normalizer"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+                "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-mbstring"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php72\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php72"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php73"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.20.0",
+            "version_normalized": "1.20.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2020-10-23T14:02:19+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.20-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.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"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php80"
+        },
+        {
+            "name": "symfony/routing",
+            "version": "v4.4.16",
+            "version_normalized": "4.4.16.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/routing.git",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/826794f2e9305fe73cba859c60d2a336851bd202",
+                "reference": "826794f2e9305fe73cba859c60d2a336851bd202",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "conflict": {
+                "symfony/config": "<4.2",
+                "symfony/dependency-injection": "<3.4",
+                "symfony/yaml": "<3.4"
+            },
+            "require-dev": {
+                "doctrine/annotations": "~1.2",
+                "psr/log": "~1.0",
+                "symfony/config": "^4.2|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "doctrine/annotations": "For using the annotation loader",
+                "symfony/config": "For using the all-in-one router or any loader",
+                "symfony/expression-language": "For using expression matching",
+                "symfony/http-foundation": "For using a Symfony Request object",
+                "symfony/yaml": "For using the YAML loader"
+            },
+            "time": "2020-10-24T11:50:19+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Routing\\": ""
+                },
+                "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 Routing Component",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "router",
+                "routing",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/routing/tree/v4.4.16"
+            },
+            "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/routing"
+        },
+        {
+            "name": "symfony/twig-bridge",
+            "version": "v3.4.46",
+            "version_normalized": "3.4.46.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/twig-bridge.git",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "reference": "090d19d6f1ea5b9e1d79f372785aa5e5c9cd4042",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "twig/twig": "^1.41|^2.10"
+            },
+            "conflict": {
+                "symfony/console": "<3.4",
+                "symfony/form": "<3.4.31|>=4.0,<4.3.4"
+            },
+            "require-dev": {
+                "fig/link-util": "^1.0",
+                "symfony/asset": "~2.8|~3.0|~4.0",
+                "symfony/console": "~3.4|~4.0",
+                "symfony/dependency-injection": "~2.8|~3.0|~4.0",
+                "symfony/expression-language": "~2.8|~3.0|~4.0",
+                "symfony/finder": "~2.8|~3.0|~4.0",
+                "symfony/form": "^3.4.31|^4.3.4",
+                "symfony/http-foundation": "^3.3.11|~4.0",
+                "symfony/http-kernel": "~3.2|~4.0",
+                "symfony/polyfill-intl-icu": "~1.0",
+                "symfony/routing": "~2.8|~3.0|~4.0",
+                "symfony/security": "^2.8.31|^3.3.13|~4.0",
+                "symfony/security-acl": "~2.8|~3.0",
+                "symfony/stopwatch": "~2.8|~3.0|~4.0",
+                "symfony/templating": "~2.8|~3.0|~4.0",
+                "symfony/translation": "~2.8|~3.0|~4.0",
+                "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0",
+                "symfony/web-link": "~3.3|~4.0",
+                "symfony/workflow": "~3.3|~4.0",
+                "symfony/yaml": "~2.8|~3.0|~4.0"
+            },
+            "suggest": {
+                "symfony/asset": "For using the AssetExtension",
+                "symfony/expression-language": "For using the ExpressionExtension",
+                "symfony/finder": "",
+                "symfony/form": "For using the FormExtension",
+                "symfony/http-kernel": "For using the HttpKernelExtension",
+                "symfony/routing": "For using the RoutingExtension",
+                "symfony/security": "For using the SecurityExtension",
+                "symfony/stopwatch": "For using the StopwatchExtension",
+                "symfony/templating": "For using the TwigEngine",
+                "symfony/translation": "For using the TranslationExtension",
+                "symfony/var-dumper": "For using the DumpExtension",
+                "symfony/web-link": "For using the WebLinkExtension",
+                "symfony/yaml": "For using the YamlExtension"
+            },
+            "time": "2020-10-24T10:57:07+00:00",
+            "type": "symfony-bridge",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Bridge\\Twig\\": ""
+                },
+                "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 Twig Bridge",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/twig-bridge/tree/v3.4.46"
+            },
+            "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/twig-bridge"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v5.1.8",
+            "version_normalized": "5.1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.3",
+                "symfony/console": "<4.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^2.4|^3.0"
+            },
+            "suggest": {
+                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+                "ext-intl": "To show region name in time zone dump",
+                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+            },
+            "time": "2020-10-27T10:11:13+00:00",
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "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 mechanism for exploring and dumping PHP variables",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-dumper/tree/v5.1.8"
+            },
+            "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/var-dumper"
+        },
+        {
+            "name": "twig/twig",
+            "version": "v1.44.1",
+            "version_normalized": "1.44.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/twigphp/Twig.git",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "require-dev": {
+                "psr/container": "^1.0",
+                "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+            },
+            "time": "2020-10-27T19:22:48+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.44-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-0": {
+                    "Twig_": "lib/"
+                },
+                "psr-4": {
+                    "Twig\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
+                },
+                {
+                    "name": "Twig Team",
+                    "role": "Contributors"
+                },
+                {
+                    "name": "Armin Ronacher",
+                    "email": "armin.ronacher@active-4.com",
+                    "role": "Project Founder"
+                }
+            ],
+            "description": "Twig, the flexible, fast, and secure template language for PHP",
+            "homepage": "https://twig.symfony.com",
+            "keywords": [
+                "templating"
+            ],
+            "support": {
+                "issues": "https://github.com/twigphp/Twig/issues",
+                "source": "https://github.com/twigphp/Twig/tree/v1.44.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../twig/twig"
+        }
+    ],
+    "dev": true,
+    "dev-package-names": []
+}
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
index 17badd75..464cf1c5 100644
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ b/vendor/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,5 +1,56 @@
 # Change Log
 
+## 6.5.5 - 2020-06-16
+
+* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
+
+## 6.5.4 - 2020-05-25
+
+* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
+
+## 6.5.3 - 2020-04-18
+
+* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
+* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548)
+
+## 6.5.2 - 2019-12-23
+
+* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489)
+
+## 6.5.1 - 2019-12-21
+
+* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454)
+* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424)
+
+## 6.5.0 - 2019-12-07
+
+* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
+* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
+* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
+* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
+  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
+  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
+  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
+* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
+* Deprecated `ClientInterface::VERSION`
+
+## 6.4.1 - 2019-10-23
+
+* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that 
+* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar`
+
+## 6.4.0 - 2019-10-23
+
+* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108)
+* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081)
+* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161)
+* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163)
+* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242)
+* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284)
+* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273)
+* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335)
+* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362)
+
 ## 6.3.3 - 2018-04-22
 
 * Fix: Default headers when decode_content is specified
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
index bcd18b8e..5fdb6c5f 100644
--- a/vendor/guzzlehttp/guzzle/README.md
+++ b/vendor/guzzlehttp/guzzle/README.md
@@ -21,19 +21,18 @@ trivial to integrate with web services.
 
 ```php
 $client = new \GuzzleHttp\Client();
-$res = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
-echo $res->getStatusCode();
-// 200
-echo $res->getHeaderLine('content-type');
-// 'application/json; charset=utf8'
-echo $res->getBody();
-// '{"id": 1420053, "name": "guzzle", ...}'
-
-// Send an asynchronous request.
+$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
+
+echo $response->getStatusCode(); # 200
+echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8'
+echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}'
+
+# Send an asynchronous request.
 $request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
 $promise = $client->sendAsync($request)->then(function ($response) {
     echo 'I completed! ' . $response->getBody();
 });
+
 $promise->wait();
 ```
 
@@ -57,7 +56,7 @@ curl -sS https://getcomposer.org/installer | php
 Next, run the Composer command to install the latest stable version of Guzzle:
 
 ```bash
-php composer.phar require guzzlehttp/guzzle
+composer require guzzlehttp/guzzle
 ```
 
 After installing, you need to require Composer's autoloader:
@@ -69,7 +68,7 @@ require 'vendor/autoload.php';
 You can then later update Guzzle using composer:
 
  ```bash
-composer.phar update
+composer update
  ```
 
 
@@ -79,13 +78,13 @@ composer.phar update
 |---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------|
 | 3.x     | EOL        | `guzzle/guzzle`     | `Guzzle`     | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No    | >= 5.3.3    |
 | 4.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A                 | No    | >= 5.4      |
-| 5.x     | Maintained | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >= 5.4      |
+| 5.x     | EOL        | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No    | >= 5.4      |
 | 6.x     | Latest     | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes   | >= 5.5      |
 
 [guzzle-3-repo]: https://github.com/guzzle/guzzle3
 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x
 [guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
 [guzzle-6-repo]: https://github.com/guzzle/guzzle
-[guzzle-3-docs]: http://guzzle3.readthedocs.org/en/latest/
+[guzzle-3-docs]: http://guzzle3.readthedocs.org
 [guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
 [guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json
index 1f328e30..c01864f0 100644
--- a/vendor/guzzlehttp/guzzle/composer.json
+++ b/vendor/guzzlehttp/guzzle/composer.json
@@ -2,7 +2,15 @@
     "name": "guzzlehttp/guzzle",
     "type": "library",
     "description": "Guzzle is a PHP HTTP client library",
-    "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
+    "keywords": [
+        "framework",
+        "http",
+        "rest",
+        "web service",
+        "curl",
+        "client",
+        "HTTP client"
+    ],
     "homepage": "http://guzzlephp.org/",
     "license": "MIT",
     "authors": [
@@ -14,31 +22,38 @@
     ],
     "require": {
         "php": ">=5.5",
-        "guzzlehttp/psr7": "^1.4",
-        "guzzlehttp/promises": "^1.0"
+        "ext-json": "*",
+        "symfony/polyfill-intl-idn": "^1.17.0",
+        "guzzlehttp/promises": "^1.0",
+        "guzzlehttp/psr7": "^1.6.1"
     },
     "require-dev": {
         "ext-curl": "*",
         "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-        "psr/log": "^1.0"
+        "psr/log": "^1.1"
+    },
+    "suggest": {
+        "psr/log": "Required for using the Log middleware"
+    },
+    "config": {
+        "sort-packages": true
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "6.5-dev"
+        }
     },
     "autoload": {
-        "files": ["src/functions_include.php"],
         "psr-4": {
             "GuzzleHttp\\": "src/"
-        }
+        },
+        "files": [
+            "src/functions_include.php"
+        ]
     },
     "autoload-dev": {
         "psr-4": {
             "GuzzleHttp\\Tests\\": "tests/"
         }
-    },
-    "suggest": {
-        "psr/log": "Required for using the Log middleware"
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "6.3-dev"
-        }
     }
 }
diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php
index 80417918..315a022c 100644
--- a/vendor/guzzlehttp/guzzle/src/Client.php
+++ b/vendor/guzzlehttp/guzzle/src/Client.php
@@ -2,11 +2,12 @@
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJar;
+use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Promise;
 use GuzzleHttp\Psr7;
-use Psr\Http\Message\UriInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\UriInterface;
 
 /**
  * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
@@ -46,9 +47,8 @@ class Client implements ClientInterface
      *   wire. The function is called with a Psr7\Http\Message\RequestInterface
      *   and array of transfer options, and must return a
      *   GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
-     *   Psr7\Http\Message\ResponseInterface on success. "handler" is a
-     *   constructor only option that cannot be overridden in per/request
-     *   options. If no handler is provided, a default handler will be created
+     *   Psr7\Http\Message\ResponseInterface on success.
+     *   If no handler is provided, a default handler will be created
      *   that enables all of the request options below by attaching all of the
      *   default middleware to the handler.
      * - base_uri: (string|UriInterface) Base URI of the client that is merged
@@ -75,6 +75,12 @@ class Client implements ClientInterface
         $this->configureDefaults($config);
     }
 
+    /**
+     * @param string $method
+     * @param array  $args
+     *
+     * @return Promise\PromiseInterface
+     */
     public function __call($method, $args)
     {
         if (count($args) < 1) {
@@ -89,6 +95,14 @@ class Client implements ClientInterface
             : $this->request($method, $uri, $opts);
     }
 
+    /**
+     * Asynchronously send an HTTP request.
+     *
+     * @param array $options Request options to apply to the given
+     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
+     *
+     * @return Promise\PromiseInterface
+     */
     public function sendAsync(RequestInterface $request, array $options = [])
     {
         // Merge the base URI into the request URI if needed.
@@ -100,12 +114,35 @@ class Client implements ClientInterface
         );
     }
 
+    /**
+     * Send an HTTP request.
+     *
+     * @param array $options Request options to apply to the given
+     *                       request and to the transfer. See \GuzzleHttp\RequestOptions.
+     *
+     * @return ResponseInterface
+     * @throws GuzzleException
+     */
     public function send(RequestInterface $request, array $options = [])
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->sendAsync($request, $options)->wait();
     }
 
+    /**
+     * Create and send an asynchronous HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well. Use an array to provide a URL
+     * template and additional variables to use in the URL template expansion.
+     *
+     * @param string              $method  HTTP method
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
+     *
+     * @return Promise\PromiseInterface
+     */
     public function requestAsync($method, $uri = '', array $options = [])
     {
         $options = $this->prepareDefaults($options);
@@ -125,12 +162,37 @@ class Client implements ClientInterface
         return $this->transfer($request, $options);
     }
 
+    /**
+     * Create and send an HTTP request.
+     *
+     * Use an absolute path to override the base path of the client, or a
+     * relative path to append to the base path of the client. The URL can
+     * contain the query string as well.
+     *
+     * @param string              $method  HTTP method.
+     * @param string|UriInterface $uri     URI object or string.
+     * @param array               $options Request options to apply. See \GuzzleHttp\RequestOptions.
+     *
+     * @return ResponseInterface
+     * @throws GuzzleException
+     */
     public function request($method, $uri = '', array $options = [])
     {
         $options[RequestOptions::SYNCHRONOUS] = true;
         return $this->requestAsync($method, $uri, $options)->wait();
     }
 
+    /**
+     * Get a client configuration option.
+     *
+     * These options include default request options of the client, a "handler"
+     * (if utilized by the concrete client), and a "base_uri" if utilized by
+     * the concrete client.
+     *
+     * @param string|null $option The config option to retrieve.
+     *
+     * @return mixed
+     */
     public function getConfig($option = null)
     {
         return $option === null
@@ -138,6 +200,11 @@ class Client implements ClientInterface
             : (isset($this->config[$option]) ? $this->config[$option] : null);
     }
 
+    /**
+     * @param  string|null $uri
+     *
+     * @return UriInterface
+     */
     private function buildUri($uri, array $config)
     {
         // for BC we accept null which would otherwise fail in uri_for
@@ -147,6 +214,11 @@ class Client implements ClientInterface
             $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
         }
 
+        if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
+            $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
+            $uri = Utils::idnUriConvert($uri, $idnOptions);
+        }
+
         return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
     }
 
@@ -154,6 +226,7 @@ class Client implements ClientInterface
      * Configures the default options for a client.
      *
      * @param array $config
+     * @return void
      */
     private function configureDefaults(array $config)
     {
@@ -162,7 +235,8 @@ class Client implements ClientInterface
             'http_errors'     => true,
             'decode_content'  => true,
             'verify'          => true,
-            'cookies'         => false
+            'cookies'         => false,
+            'idn_conversion'  => true,
         ];
 
         // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -170,7 +244,7 @@ class Client implements ClientInterface
         // We can only trust the HTTP_PROXY environment variable in a CLI
         // process due to the fact that PHP has no reliable mechanism to
         // get environment variables that start with "HTTP_".
-        if (php_sapi_name() == 'cli' && getenv('HTTP_PROXY')) {
+        if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
             $defaults['proxy']['http'] = getenv('HTTP_PROXY');
         }
 
@@ -210,7 +284,7 @@ class Client implements ClientInterface
      *
      * @return array
      */
-    private function prepareDefaults($options)
+    private function prepareDefaults(array $options)
     {
         $defaults = $this->config;
 
@@ -225,7 +299,7 @@ class Client implements ClientInterface
         if (array_key_exists('headers', $options)) {
             // Allows default headers to be unset.
             if ($options['headers'] === null) {
-                $defaults['_conditional'] = null;
+                $defaults['_conditional'] = [];
                 unset($options['headers']);
             } elseif (!is_array($options['headers'])) {
                 throw new \InvalidArgumentException('headers must be an array');
@@ -251,8 +325,7 @@ class Client implements ClientInterface
      * The URI of the request is not modified and the request options are used
      * as-is without merging in default options.
      *
-     * @param RequestInterface $request
-     * @param array            $options
+     * @param array $options See \GuzzleHttp\RequestOptions.
      *
      * @return Promise\PromiseInterface
      */
@@ -271,6 +344,7 @@ class Client implements ClientInterface
         }
 
         $request = $this->applyOptions($request, $options);
+        /** @var HandlerStack $handler */
         $handler = $options['handler'];
 
         try {
@@ -411,6 +485,11 @@ class Client implements ClientInterface
         return $request;
     }
 
+    /**
+     * Throw Exception with pre-set message.
+     * @return void
+     * @throws \InvalidArgumentException Invalid body.
+     */
     private function invalidBody()
     {
         throw new \InvalidArgumentException('Passing in the "body" request '
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
index 2dbcffa4..638b75dc 100644
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
@@ -1,8 +1,8 @@
 <?php
 namespace GuzzleHttp;
 
-use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Exception\GuzzleException;
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
@@ -12,7 +12,10 @@ use Psr\Http\Message\UriInterface;
  */
 interface ClientInterface
 {
-    const VERSION = '6.3.3';
+    /**
+     * @deprecated Will be removed in Guzzle 7.0.0
+     */
+    const VERSION = '6.5.5';
 
     /**
      * Send an HTTP request.
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
index 78f2b79f..38f98ad7 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -94,8 +94,8 @@ class CookieJar implements CookieJarInterface
      */
     public function getCookieByName($name)
     {
-        // don't allow a null name
-        if ($name === null) {
+        // don't allow a non string name
+        if ($name === null || !is_scalar($name)) {
             return null;
         }
         foreach ($this->cookies as $cookie) {
@@ -103,6 +103,8 @@ class CookieJar implements CookieJarInterface
                 return $cookie;
             }
         }
+
+        return null;
     }
 
     public function toArray()
@@ -120,7 +122,7 @@ class CookieJar implements CookieJarInterface
         } elseif (!$path) {
             $this->cookies = array_filter(
                 $this->cookies,
-                function (SetCookie $cookie) use ($path, $domain) {
+                function (SetCookie $cookie) use ($domain) {
                     return !$cookie->matchesDomain($domain);
                 }
             );
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
index 2cf298a8..6ee11885 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
@@ -58,9 +58,9 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
      * arguments, then the cookie with the specified name, path and domain is
      * removed.
      *
-     * @param string $domain Clears cookies matching a domain
-     * @param string $path   Clears cookies matching a domain and path
-     * @param string $name   Clears cookies matching a domain, path, and name
+     * @param string|null $domain Clears cookies matching a domain
+     * @param string|null $path   Clears cookies matching a domain and path
+     * @param string|null $name   Clears cookies matching a domain, path, and name
      *
      * @return CookieJarInterface
      */
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
index 9887c1d5..3fb8600e 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
@@ -23,6 +23,7 @@ class FileCookieJar extends CookieJar
      */
     public function __construct($cookieFile, $storeSessionCookies = false)
     {
+        parent::__construct();
         $this->filename = $cookieFile;
         $this->storeSessionCookies = $storeSessionCookies;
 
@@ -56,7 +57,7 @@ class FileCookieJar extends CookieJar
         }
 
         $jsonStr = \GuzzleHttp\json_encode($json);
-        if (false === file_put_contents($filename, $jsonStr)) {
+        if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
             throw new \RuntimeException("Unable to save file {$filename}");
         }
     }
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
index 4497bcf0..0224a244 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -22,6 +22,7 @@ class SessionCookieJar extends CookieJar
      */
     public function __construct($sessionKey, $storeSessionCookies = false)
     {
+        parent::__construct();
         $this->sessionKey = $sessionKey;
         $this->storeSessionCookies = $storeSessionCookies;
         $this->load();
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
index f6993943..3d776a70 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
@@ -227,7 +227,7 @@ class SetCookie
     /**
      * Get whether or not this is a secure cookie
      *
-     * @return null|bool
+     * @return bool|null
      */
     public function getSecure()
     {
@@ -247,7 +247,7 @@ class SetCookie
     /**
      * Get whether or not this is a session cookie
      *
-     * @return null|bool
+     * @return bool|null
      */
     public function getDiscard()
     {
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
index f95c09f2..4cfd393c 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
@@ -4,4 +4,6 @@ namespace GuzzleHttp\Exception;
 /**
  * Exception when a client error is encountered (4xx codes)
  */
-class ClientException extends BadResponseException {}
+class ClientException extends BadResponseException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
index 510778f6..27b2722b 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
@@ -1,13 +1,23 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-/**
- * @method string getMessage()
- * @method \Throwable|null getPrevious()
- * @method mixed getCode()
- * @method string getFile()
- * @method int getLine()
- * @method array getTrace()
- * @method string getTraceAsString()
- */
-interface GuzzleException {}
+use Throwable;
+
+if (interface_exists(Throwable::class)) {
+    interface GuzzleException extends Throwable
+    {
+    }
+} else {
+    /**
+     * @method string getMessage()
+     * @method \Throwable|null getPrevious()
+     * @method mixed getCode()
+     * @method string getFile()
+     * @method int getLine()
+     * @method array getTrace()
+     * @method string getTraceAsString()
+     */
+    interface GuzzleException
+    {
+    }
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
index 39de327e..12dd081e 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -1,9 +1,9 @@
 <?php
 namespace GuzzleHttp\Exception;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
-use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\UriInterface;
 
 /**
@@ -14,7 +14,7 @@ class RequestException extends TransferException
     /** @var RequestInterface */
     private $request;
 
-    /** @var ResponseInterface */
+    /** @var ResponseInterface|null */
     private $response;
 
     /** @var array */
@@ -124,42 +124,17 @@ class RequestException extends TransferException
      */
     public static function getResponseBodySummary(ResponseInterface $response)
     {
-        $body = $response->getBody();
-
-        if (!$body->isSeekable()) {
-            return null;
-        }
-
-        $size = $body->getSize();
-
-        if ($size === 0) {
-            return null;
-        }
-
-        $summary = $body->read(120);
-        $body->rewind();
-
-        if ($size > 120) {
-            $summary .= ' (truncated...)';
-        }
-
-        // Matches any printable character, including unicode characters:
-        // letters, marks, numbers, punctuation, spacing, and separators.
-        if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
-            return null;
-        }
-
-        return $summary;
+        return \GuzzleHttp\Psr7\get_message_body_summary($response);
     }
 
     /**
-     * Obfuscates URI if there is an username and a password present
+     * Obfuscates URI if there is a username and a password present
      *
      * @param UriInterface $uri
      *
      * @return UriInterface
      */
-    private static function obfuscateUri($uri)
+    private static function obfuscateUri(UriInterface $uri)
     {
         $userInfo = $uri->getUserInfo();
 
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
index 7cdd3408..127094c1 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
@@ -4,4 +4,6 @@ namespace GuzzleHttp\Exception;
 /**
  * Exception when a server error is encountered (5xx codes)
  */
-class ServerException extends BadResponseException {}
+class ServerException extends BadResponseException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
index b60a9678..fff05251 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
@@ -1,4 +1,6 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-class TooManyRedirectsException extends RequestException {}
+class TooManyRedirectsException extends RequestException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
index b92071ca..7c11db3a 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
@@ -1,4 +1,6 @@
 <?php
 namespace GuzzleHttp\Exception;
 
-class TransferException extends \RuntimeException implements GuzzleException {}
+class TransferException extends \RuntimeException implements GuzzleException
+{
+}
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
index e0923714..4a28a96e 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
@@ -1,8 +1,8 @@
 <?php
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\ConnectException;
+use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Psr7;
 use GuzzleHttp\Psr7\LazyOpenStream;
@@ -14,6 +14,9 @@ use Psr\Http\Message\RequestInterface;
  */
 class CurlFactory implements CurlFactoryInterface
 {
+    const CURL_VERSION_STR = 'curl_version';
+    const LOW_CURL_VERSION_NUMBER = '7.21.2';
+
     /** @var array */
     private $handles = [];
 
@@ -117,6 +120,7 @@ class CurlFactory implements CurlFactoryInterface
     private static function invokeStats(EasyHandle $easy)
     {
         $curlStats = curl_getinfo($easy->handle);
+        $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
         $stats = new TransferStats(
             $easy->request,
             $easy->response,
@@ -136,7 +140,9 @@ class CurlFactory implements CurlFactoryInterface
         $ctx = [
             'errno' => $easy->errno,
             'error' => curl_error($easy->handle),
+            'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
         ] + curl_getinfo($easy->handle);
+        $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
         $factory->release($easy);
 
         // Retry when nothing is present or when curl failed to rewind.
@@ -172,13 +178,22 @@ class CurlFactory implements CurlFactoryInterface
                 )
             );
         }
-
-        $message = sprintf(
-            'cURL error %s: %s (%s)',
-            $ctx['errno'],
-            $ctx['error'],
-            'see http://curl.haxx.se/libcurl/c/libcurl-errors.html'
-        );
+        if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
+            $message = sprintf(
+                'cURL error %s: %s (%s)',
+                $ctx['errno'],
+                $ctx['error'],
+                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
+            );
+        } else {
+            $message = sprintf(
+                'cURL error %s: %s (%s) for %s',
+                $ctx['errno'],
+                $ctx['error'],
+                'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
+                $easy->request->getUri()
+            );
+        }
 
         // Create a connection exception if it was a specific error code.
         $error = isset($connectionErrors[$easy->errno])
@@ -439,11 +454,16 @@ class CurlFactory implements CurlFactoryInterface
         }
 
         if (isset($options['ssl_key'])) {
-            $sslKey = $options['ssl_key'];
-            if (is_array($sslKey)) {
-                $conf[CURLOPT_SSLKEYPASSWD] = $sslKey[1];
-                $sslKey = $sslKey[0];
+            if (is_array($options['ssl_key'])) {
+                if (count($options['ssl_key']) === 2) {
+                    list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
+                } else {
+                    list($sslKey) = $options['ssl_key'];
+                }
             }
+
+            $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
+
             if (!file_exists($sslKey)) {
                 throw new \InvalidArgumentException(
                     "SSL private key not found: {$sslKey}"
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
index 2754d8e4..564c95f4 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
@@ -3,7 +3,7 @@ namespace GuzzleHttp\Handler;
 
 use GuzzleHttp\Promise as P;
 use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Psr7;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -23,6 +23,7 @@ class CurlMultiHandler
     private $active;
     private $handles = [];
     private $delays = [];
+    private $options = [];
 
     /**
      * This handler accepts the following options:
@@ -30,6 +31,8 @@ class CurlMultiHandler
      * - handle_factory: An optional factory  used to create curl handles
      * - select_timeout: Optional timeout (in seconds) to block before timing
      *   out while selecting curl handles. Defaults to 1 second.
+     * - options: An associative array of CURLMOPT_* options and
+     *   corresponding values for curl_multi_setopt()
      *
      * @param array $options
      */
@@ -37,14 +40,31 @@ class CurlMultiHandler
     {
         $this->factory = isset($options['handle_factory'])
             ? $options['handle_factory'] : new CurlFactory(50);
-        $this->selectTimeout = isset($options['select_timeout'])
-            ? $options['select_timeout'] : 1;
+
+        if (isset($options['select_timeout'])) {
+            $this->selectTimeout = $options['select_timeout'];
+        } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
+            $this->selectTimeout = $selectTimeout;
+        } else {
+            $this->selectTimeout = 1;
+        }
+
+        $this->options = isset($options['options']) ? $options['options'] : [];
     }
 
     public function __get($name)
     {
         if ($name === '_mh') {
-            return $this->_mh = curl_multi_init();
+            $this->_mh = curl_multi_init();
+
+            foreach ($this->options as $option => $value) {
+                // A warning is raised in case of a wrong option.
+                curl_multi_setopt($this->_mh, $option, $value);
+            }
+
+            // Further calls to _mh will return the value directly, without entering the
+            // __get() method at all.
+            return $this->_mh;
         }
 
         throw new \BadMethodCallException();
@@ -82,7 +102,7 @@ class CurlMultiHandler
     {
         // Add any delayed handles if needed.
         if ($this->delays) {
-            $currentTime = microtime(true);
+            $currentTime = Utils::currentTime();
             foreach ($this->delays as $id => $delay) {
                 if ($currentTime >= $delay) {
                     unset($this->delays[$id]);
@@ -134,7 +154,7 @@ class CurlMultiHandler
         if (empty($easy->options['delay'])) {
             curl_multi_add_handle($this->_mh, $easy->handle);
         } else {
-            $this->delays[$id] = microtime(true) + ($easy->options['delay'] / 1000);
+            $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
         }
     }
 
@@ -186,7 +206,7 @@ class CurlMultiHandler
 
     private function timeToNext()
     {
-        $currentTime = microtime(true);
+        $currentTime = Utils::currentTime();
         $nextTime = PHP_INT_MAX;
         foreach ($this->delays as $time) {
             if ($time < $nextTime) {
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
index d892061c..5b312bc0 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
@@ -66,7 +66,7 @@ class MockHandler implements \Countable
             throw new \OutOfBoundsException('Mock queue is empty');
         }
 
-        if (isset($options['delay'])) {
+        if (isset($options['delay']) && is_numeric($options['delay'])) {
             usleep($options['delay'] * 1000);
         }
 
@@ -175,6 +175,11 @@ class MockHandler implements \Countable
         return count($this->queue);
     }
 
+    public function reset()
+    {
+        $this->queue = [];
+    }
+
     private function invokeStats(
         RequestInterface $request,
         array $options,
@@ -182,7 +187,8 @@ class MockHandler implements \Countable
         $reason = null
     ) {
         if (isset($options['on_stats'])) {
-            $stats = new TransferStats($request, $response, 0, $reason);
+            $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
+            $stats = new TransferStats($request, $response, $transferTime, $reason);
             call_user_func($options['on_stats'], $stats);
         }
     }
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
index b686545e..a15734a4 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
@@ -1,12 +1,13 @@
 <?php
 namespace GuzzleHttp\Handler;
 
-use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\ConnectException;
+use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Promise\FulfilledPromise;
 use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Psr7;
 use GuzzleHttp\TransferStats;
+use GuzzleHttp\Utils;
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
@@ -33,7 +34,7 @@ class StreamHandler
             usleep($options['delay'] * 1000);
         }
 
-        $startTime = isset($options['on_stats']) ? microtime(true) : null;
+        $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
 
         try {
             // Does not support the expect header.
@@ -42,7 +43,7 @@ class StreamHandler
             // Append a content-length header if body size is zero to match
             // cURL's behavior.
             if (0 === $request->getBody()->getSize()) {
-                $request = $request->withHeader('Content-Length', 0);
+                $request = $request->withHeader('Content-Length', '0');
             }
 
             return $this->createResponse(
@@ -82,7 +83,7 @@ class StreamHandler
             $stats = new TransferStats(
                 $request,
                 $response,
-                microtime(true) - $startTime,
+                Utils::currentTime() - $startTime,
                 $error,
                 []
             );
@@ -343,13 +344,25 @@ class StreamHandler
             if ('v4' === $options['force_ip_resolve']) {
                 $records = dns_get_record($uri->getHost(), DNS_A);
                 if (!isset($records[0]['ip'])) {
-                    throw new ConnectException(sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request);
+                    throw new ConnectException(
+                        sprintf(
+                            "Could not resolve IPv4 address for host '%s'",
+                            $uri->getHost()
+                        ),
+                        $request
+                    );
                 }
                 $uri = $uri->withHost($records[0]['ip']);
             } elseif ('v6' === $options['force_ip_resolve']) {
                 $records = dns_get_record($uri->getHost(), DNS_AAAA);
                 if (!isset($records[0]['ipv6'])) {
-                    throw new ConnectException(sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request);
+                    throw new ConnectException(
+                        sprintf(
+                            "Could not resolve IPv6 address for host '%s'",
+                            $uri->getHost()
+                        ),
+                        $request
+                    );
                 }
                 $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
             }
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
index 24c46fd9..6a49cc06 100644
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
@@ -1,7 +1,9 @@
 <?php
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise\PromiseInterface;
 use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
 
 /**
  * Creates a composed Guzzle handler function by stacking middlewares on top of
@@ -9,7 +11,7 @@ use Psr\Http\Message\RequestInterface;
  */
 class HandlerStack
 {
-    /** @var callable */
+    /** @var callable|null */
     private $handler;
 
     /** @var array */
@@ -59,6 +61,8 @@ class HandlerStack
      *
      * @param RequestInterface $request
      * @param array            $options
+     *
+     * @return ResponseInterface|PromiseInterface
      */
     public function __invoke(RequestInterface $request, array $options)
     {
@@ -206,7 +210,7 @@ class HandlerStack
     }
 
     /**
-     * @param $name
+     * @param string $name
      * @return int
      */
     private function findByName($name)
@@ -223,10 +227,10 @@ class HandlerStack
     /**
      * Splices a function into the middleware list at a specific position.
      *
-     * @param          $findName
-     * @param          $withName
+     * @param string   $findName
+     * @param string   $withName
      * @param callable $middleware
-     * @param          $before
+     * @param bool     $before
      */
     private function splice($findName, $withName, callable $middleware, $before)
     {
diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
index 663ac739..dc36bb52 100644
--- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
+++ b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php
@@ -168,6 +168,11 @@ class MessageFormatter
         );
     }
 
+    /**
+     * Get headers from message as string
+     *
+     * @return string
+     */
     private function headers(MessageInterface $message)
     {
         $result = '';
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
index d4ad75c9..bffc1974 100644
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ b/vendor/guzzlehttp/guzzle/src/Middleware.php
@@ -7,7 +7,6 @@ use GuzzleHttp\Promise\RejectedPromise;
 use GuzzleHttp\Psr7;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
 
 /**
  * Functions used to create and wrap handlers with handler middleware.
@@ -39,7 +38,7 @@ final class Middleware
                             $cookieJar->extractCookies($request, $response);
                             return $response;
                         }
-                );
+                    );
             };
         };
     }
@@ -58,7 +57,7 @@ final class Middleware
                     return $handler($request, $options);
                 }
                 return $handler($request, $options)->then(
-                    function (ResponseInterface $response) use ($request, $handler) {
+                    function (ResponseInterface $response) use ($request) {
                         $code = $response->getStatusCode();
                         if ($code < 400) {
                             return $response;
@@ -183,7 +182,7 @@ final class Middleware
      *
      * @return callable Returns a function that accepts the next handler.
      */
-    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO)
+    public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
     {
         return function (callable $handler) use ($logger, $formatter, $logLevel) {
             return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
index 8f1be33c..5838db4f 100644
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ b/vendor/guzzlehttp/guzzle/src/Pool.php
@@ -1,12 +1,13 @@
 <?php
 namespace GuzzleHttp;
 
+use GuzzleHttp\Promise\EachPromise;
+use GuzzleHttp\Promise\PromiseInterface;
 use GuzzleHttp\Promise\PromisorInterface;
 use Psr\Http\Message\RequestInterface;
-use GuzzleHttp\Promise\EachPromise;
 
 /**
- * Sends and iterator of requests concurrently using a capped pool size.
+ * Sends an iterator of requests concurrently using a capped pool size.
  *
  * The pool will read from an iterator until it is cancelled or until the
  * iterator is consumed. When a request is yielded, the request is sent after
@@ -69,6 +70,11 @@ class Pool implements PromisorInterface
         $this->each = new EachPromise($requests(), $config);
     }
 
+    /**
+     * Get promise
+     *
+     * @return PromiseInterface
+     */
     public function promise()
     {
         return $this->each->promise();
@@ -106,6 +112,11 @@ class Pool implements PromisorInterface
         return $res;
     }
 
+    /**
+     * Execute callback(s)
+     *
+     * @return void
+     */
     private static function cmpCallback(array &$options, $name, array &$results)
     {
         if (!isset($options[$name])) {
diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
index 2eb95f9b..568a1e90 100644
--- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
@@ -66,6 +66,11 @@ class PrepareBodyMiddleware
         return $fn(Psr7\modify_request($request, $modify), $options);
     }
 
+    /**
+     * Add expect header
+     *
+     * @return void
+     */
     private function addExpectHeader(
         RequestInterface $request,
         array $options,
diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
index 131b7717..e4644b7a 100644
--- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
@@ -13,7 +13,7 @@ use Psr\Http\Message\UriInterface;
  * Request redirect middleware.
  *
  * Apply this middleware like other middleware using
- * {@see GuzzleHttp\Middleware::redirect()}.
+ * {@see \GuzzleHttp\Middleware::redirect()}.
  */
 class RedirectMiddleware
 {
@@ -76,7 +76,7 @@ class RedirectMiddleware
     /**
      * @param RequestInterface  $request
      * @param array             $options
-     * @param ResponseInterface|PromiseInterface $response
+     * @param ResponseInterface $response
      *
      * @return ResponseInterface|PromiseInterface
      */
@@ -118,6 +118,11 @@ class RedirectMiddleware
         return $promise;
     }
 
+    /**
+     * Enable tracking on promise.
+     *
+     * @return PromiseInterface
+     */
     private function withTracking(PromiseInterface $promise, $uri, $statusCode)
     {
         return $promise->then(
@@ -135,6 +140,13 @@ class RedirectMiddleware
         );
     }
 
+    /**
+     * Check for too many redirects
+     *
+     * @return void
+     *
+     * @throws TooManyRedirectsException Too many redirects.
+     */
     private function guardMax(RequestInterface $request, array &$options)
     {
         $current = isset($options['__redirect_count'])
@@ -172,13 +184,19 @@ class RedirectMiddleware
         // would do.
         $statusCode = $response->getStatusCode();
         if ($statusCode == 303 ||
-            ($statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict'])
+            ($statusCode <= 302 && !$options['allow_redirects']['strict'])
         ) {
             $modify['method'] = 'GET';
             $modify['body'] = '';
         }
 
-        $modify['uri'] = $this->redirectUri($request, $response, $protocols);
+        $uri = $this->redirectUri($request, $response, $protocols);
+        if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
+            $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
+            $uri = Utils::idnUriConvert($uri, $idnOptions);
+        }
+
+        $modify['uri'] = $uri;
         Psr7\rewind_body($request);
 
         // Add the Referer header if it is told to do so and only
@@ -186,7 +204,7 @@ class RedirectMiddleware
         if ($options['allow_redirects']['referer']
             && $modify['uri']->getScheme() === $request->getUri()->getScheme()
         ) {
-            $uri = $request->getUri()->withUserInfo('', '');
+            $uri = $request->getUri()->withUserInfo('');
             $modify['set_headers']['Referer'] = (string) $uri;
         } else {
             $modify['remove_headers'][] = 'Referer';
diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
index c6aacfb1..355f658f 100644
--- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php
+++ b/vendor/guzzlehttp/guzzle/src/RequestOptions.php
@@ -22,7 +22,7 @@ final class RequestOptions
      * - strict: (bool, default=false) Set to true to use strict redirects
      *   meaning redirect POST requests with POST requests vs. doing what most
      *   browsers do which is redirect POST requests with GET requests
-     * - referer: (bool, default=true) Set to false to disable the Referer
+     * - referer: (bool, default=false) Set to true to enable the Referer
      *   header.
      * - protocols: (array, default=['http', 'https']) Allowed redirect
      *   protocols.
@@ -132,6 +132,14 @@ final class RequestOptions
      */
     const HTTP_ERRORS = 'http_errors';
 
+    /**
+     * idn: (bool|int, default=true) A combination of IDNA_* constants for
+     * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
+     * disable IDN support completely, or to true to use the default
+     * configuration (IDNA_DEFAULT constant).
+     */
+    const IDN_CONVERSION = 'idn_conversion';
+
     /**
      * json: (mixed) Adds JSON data to a request. The provided value is JSON
      * encoded and a Content-Type header of application/json will be added to
diff --git a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
index f27090fd..5acc8c5c 100644
--- a/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
+++ b/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
@@ -19,6 +19,9 @@ class RetryMiddleware
     /** @var callable */
     private $decider;
 
+    /** @var callable */
+    private $delay;
+
     /**
      * @param callable $decider     Function that accepts the number of retries,
      *                              a request, [response], and [exception] and
@@ -42,13 +45,13 @@ class RetryMiddleware
     /**
      * Default exponential backoff delay function.
      *
-     * @param $retries
+     * @param int $retries
      *
-     * @return int
+     * @return int milliseconds.
      */
     public static function exponentialDelay($retries)
     {
-        return (int) pow(2, $retries - 1);
+        return (int) pow(2, $retries - 1) * 1000;
     }
 
     /**
@@ -71,6 +74,11 @@ class RetryMiddleware
             );
     }
 
+    /**
+     * Execute fulfilled closure
+     *
+     * @return mixed
+     */
     private function onFulfilled(RequestInterface $req, array $options)
     {
         return function ($value) use ($req, $options) {
@@ -87,6 +95,11 @@ class RetryMiddleware
         };
     }
 
+    /**
+     * Execute rejected closure
+     *
+     * @return callable
+     */
     private function onRejected(RequestInterface $req, array $options)
     {
         return function ($reason) use ($req, $options) {
@@ -103,6 +116,9 @@ class RetryMiddleware
         };
     }
 
+    /**
+     * @return self
+     */
     private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
     {
         $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php
index 15f717e1..87fb3c00 100644
--- a/vendor/guzzlehttp/guzzle/src/TransferStats.php
+++ b/vendor/guzzlehttp/guzzle/src/TransferStats.php
@@ -18,11 +18,11 @@ final class TransferStats
     private $handlerErrorData;
 
     /**
-     * @param RequestInterface  $request          Request that was sent.
-     * @param ResponseInterface $response         Response received (if any)
-     * @param null              $transferTime     Total handler transfer time.
-     * @param mixed             $handlerErrorData Handler error data.
-     * @param array             $handlerStats     Handler specific stats.
+     * @param RequestInterface       $request          Request that was sent.
+     * @param ResponseInterface|null $response         Response received (if any)
+     * @param float|null             $transferTime     Total handler transfer time.
+     * @param mixed                  $handlerErrorData Handler error data.
+     * @param array                  $handlerStats     Handler specific stats.
      */
     public function __construct(
         RequestInterface $request,
@@ -93,7 +93,7 @@ final class TransferStats
     /**
      * Get the estimated time the request was being transferred by the handler.
      *
-     * @return float Time in seconds.
+     * @return float|null Time in seconds.
      */
     public function getTransferTime()
     {
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
index a3ac450d..c2afd8c7 100644
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ b/vendor/guzzlehttp/guzzle/src/functions.php
@@ -56,7 +56,7 @@ function describe_type($input)
 /**
  * Parses an array of header lines into an associative array of headers.
  *
- * @param array $lines Header lines array of strings in the following
+ * @param iterable $lines Header lines array of strings in the following
  *                     format: "Name: Value"
  * @return array
  */
@@ -97,8 +97,8 @@ function debug_resource($value = null)
  *
  * The returned handler is not wrapped by any default middlewares.
  *
- * @throws \RuntimeException if no viable Handler is available.
  * @return callable Returns the best handler for the given system.
+ * @throws \RuntimeException if no viable Handler is available.
  */
 function choose_handler()
 {
@@ -196,7 +196,8 @@ function default_ca_bundle()
         }
     }
 
-    throw new \RuntimeException(<<< EOT
+    throw new \RuntimeException(
+        <<< EOT
 No system CA bundle could be found in any of the the common system locations.
 PHP versions earlier than 5.6 are not properly configured to use the system's
 CA bundle by default. In order to verify peer certificates, you will need to
@@ -294,14 +295,14 @@ function is_host_in_noproxy($host, array $noProxyArray)
  * @param int    $options Bitmask of JSON decode options.
  *
  * @return mixed
- * @throws \InvalidArgumentException if the JSON cannot be decoded.
+ * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
  * @link http://www.php.net/manual/en/function.json-decode.php
  */
 function json_decode($json, $assoc = false, $depth = 512, $options = 0)
 {
     $data = \json_decode($json, $assoc, $depth, $options);
     if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new \InvalidArgumentException(
+        throw new Exception\InvalidArgumentException(
             'json_decode error: ' . json_last_error_msg()
         );
     }
@@ -317,14 +318,14 @@ function json_decode($json, $assoc = false, $depth = 512, $options = 0)
  * @param int    $depth   Set the maximum depth. Must be greater than zero.
  *
  * @return string
- * @throws \InvalidArgumentException if the JSON cannot be encoded.
+ * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
  * @link http://www.php.net/manual/en/function.json-encode.php
  */
 function json_encode($value, $options = 0, $depth = 512)
 {
     $json = \json_encode($value, $options, $depth);
     if (JSON_ERROR_NONE !== json_last_error()) {
-        throw new \InvalidArgumentException(
+        throw new Exception\InvalidArgumentException(
             'json_encode error: ' . json_last_error_msg()
         );
     }
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
index 551929f6..4b63b2c7 100644
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ b/vendor/guzzlehttp/promises/CHANGELOG.md
@@ -1,6 +1,22 @@
 # CHANGELOG
 
 
+## 1.4.0 - 2020-09-30
+
+### Added
+
+- Support for PHP 8
+- Optional `$recursive` flag to `all`
+- Replaced functions by static methods
+
+### Fixed
+
+- Fix empty `each` processing
+- Fix promise handling for Iterators of non-unique keys
+- Fixed `method_exists` crashes on PHP 8
+- Memory leak on exceptions
+
+
 ## 1.3.1 - 2016-12-20
 
 ### Fixed
diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md
index 7b607e28..a95c6059 100644
--- a/vendor/guzzlehttp/promises/README.md
+++ b/vendor/guzzlehttp/promises/README.md
@@ -26,7 +26,7 @@ for a general introduction to promises.
 - Promises can be cancelled.
 - Works with any object that has a `then` function.
 - C# style async/await coroutine promises using
-  `GuzzleHttp\Promise\coroutine()`.
+  `GuzzleHttp\Promise\Coroutine::of()`.
 
 
 # Quick start
@@ -88,7 +88,7 @@ $promise
     });
 
 // Resolving the promise triggers the $onFulfilled callbacks and outputs
-// "Hello, reader".
+// "Hello, reader."
 $promise->resolve('reader.');
 ```
 
@@ -150,7 +150,7 @@ use GuzzleHttp\Promise\Promise;
 
 $promise = new Promise();
 $promise->then(null, function ($reason) {
-    throw new \Exception($reason);
+    throw new Exception($reason);
 })->then(null, function ($reason) {
     assert($reason->getMessage() === 'Error!');
 });
@@ -182,7 +182,6 @@ invoked using the value returned from the `$onRejected` callback.
 
 ```php
 use GuzzleHttp\Promise\Promise;
-use GuzzleHttp\Promise\RejectedPromise;
 
 $promise = new Promise();
 $promise
@@ -220,7 +219,7 @@ the promise is rejected with the exception and the exception is thrown.
 
 ```php
 $promise = new Promise(function () use (&$promise) {
-    throw new \Exception('foo');
+    throw new Exception('foo');
 });
 
 $promise->wait(); // throws the exception.
@@ -397,7 +396,7 @@ $deferred = new React\Promise\Deferred();
 $reactPromise = $deferred->promise();
 
 // Create a Guzzle promise that is fulfilled with a React promise.
-$guzzlePromise = new \GuzzleHttp\Promise\Promise();
+$guzzlePromise = new GuzzleHttp\Promise\Promise();
 $guzzlePromise->then(function ($value) use ($reactPromise) {
     // Do something something with the value...
     // Return the React promise
@@ -424,7 +423,7 @@ instance.
 
 ```php
 // Get the global task queue
-$queue = \GuzzleHttp\Promise\queue();
+$queue = GuzzleHttp\Promise\Utils::queue();
 $queue->run();
 ```
 
@@ -502,3 +501,32 @@ $promise->then(function ($value) { echo $value; });
 $promise->resolve('foo');
 // prints "foo"
 ```
+
+
+## Upgrading from Function API
+
+A static API was first introduced in 1.4.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
+
+| Original Function | Replacement Method |
+|----------------|----------------|
+| `queue` | `Utils::queue` |
+| `task` | `Utils::task` |
+| `promise_for` | `Create::promiseFor` |
+| `rejection_for` | `Create::rejectionFor` |
+| `exception_for` | `Create::exceptionFor` |
+| `iter_for` | `Create::iterFor` |
+| `inspect` | `Utils::inspect` |
+| `inspect_all` | `Utils::inspectAll` |
+| `unwrap` | `Utils::unwrap` |
+| `all` | `Utils::all` |
+| `some` | `Utils::some` |
+| `any` | `Utils::any` |
+| `settle` | `Utils::settle` |
+| `each` | `Each::of` |
+| `each_limit` | `Each::ofLimit` |
+| `each_limit_all` | `Each::ofLimitAll` |
+| `!is_fulfilled` | `Is::pending` |
+| `is_fulfilled` | `Is::fulfilled` |
+| `is_rejected` | `Is::rejected` |
+| `is_settled` | `Is::settled` |
+| `coroutine` | `Coroutine::of` |
diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json
index ec41a61e..db44d9e3 100644
--- a/vendor/guzzlehttp/promises/composer.json
+++ b/vendor/guzzlehttp/promises/composer.json
@@ -11,10 +11,10 @@
         }
     ],
     "require": {
-        "php": ">=5.5.0"
+        "php": ">=5.5"
     },
     "require-dev": {
-        "phpunit/phpunit": "^4.0"
+        "symfony/phpunit-bridge": "^4.4 || ^5.1"
     },
     "autoload": {
         "psr-4": {
@@ -22,9 +22,14 @@
         },
         "files": ["src/functions_include.php"]
     },
+    "autoload-dev": {
+        "psr-4": {
+            "GuzzleHttp\\Promise\\Tests\\": "tests/"
+        }
+    },
     "scripts": {
-        "test": "vendor/bin/phpunit",
-        "test-ci": "vendor/bin/phpunit --coverage-text"
+        "test": "vendor/bin/simple-phpunit",
+        "test-ci": "vendor/bin/simple-phpunit --coverage-text"
     },
     "extra": {
         "branch-alias": {
diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php
index 6a5690c3..d2b5712b 100644
--- a/vendor/guzzlehttp/promises/src/AggregateException.php
+++ b/vendor/guzzlehttp/promises/src/AggregateException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/CancellationException.php b/vendor/guzzlehttp/promises/src/CancellationException.php
index cb360b80..56a1ed65 100644
--- a/vendor/guzzlehttp/promises/src/CancellationException.php
+++ b/vendor/guzzlehttp/promises/src/CancellationException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/Coroutine.php b/vendor/guzzlehttp/promises/src/Coroutine.php
index 6aa09587..670da477 100644
--- a/vendor/guzzlehttp/promises/src/Coroutine.php
+++ b/vendor/guzzlehttp/promises/src/Coroutine.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 use Exception;
@@ -9,7 +10,7 @@ use Throwable;
  * Creates a promise that is resolved using a generator that yields values or
  * promises (somewhat similar to C#'s async keyword).
  *
- * When called, the coroutine function will start an instance of the generator
+ * When called, the Coroutine::of method will start an instance of the generator
  * and returns a promise that is fulfilled with its final yielded value.
  *
  * Control is returned back to the generator when the yielded promise settles.
@@ -22,7 +23,7 @@ use Throwable;
  *         return new Promise\FulfilledPromise($value);
  *     }
  *
- *     $promise = Promise\coroutine(function () {
+ *     $promise = Promise\Coroutine::of(function () {
  *         $value = (yield createPromise('a'));
  *         try {
  *             $value = (yield createPromise($value . 'b'));
@@ -38,6 +39,7 @@ use Throwable;
  * @param callable $generatorFn Generator function to wrap into a promise.
  *
  * @return Promise
+ *
  * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration
  */
 final class Coroutine implements PromiseInterface
@@ -65,7 +67,23 @@ final class Coroutine implements PromiseInterface
                 $this->currentPromise->wait();
             }
         });
-        $this->nextCoroutine($this->generator->current());
+        try {
+            $this->nextCoroutine($this->generator->current());
+        } catch (\Exception $exception) {
+            $this->result->reject($exception);
+        } catch (Throwable $throwable) {
+            $this->result->reject($throwable);
+        }
+    }
+
+    /**
+     * Create a new coroutine.
+     *
+     * @return self
+     */
+    public static function of(callable $generatorFn)
+    {
+        return new self($generatorFn);
     }
 
     public function then(
@@ -108,7 +126,7 @@ final class Coroutine implements PromiseInterface
 
     private function nextCoroutine($yielded)
     {
-        $this->currentPromise = promise_for($yielded)
+        $this->currentPromise = Create::promiseFor($yielded)
             ->then([$this, '_handleSuccess'], [$this, '_handleFailure']);
     }
 
@@ -139,7 +157,7 @@ final class Coroutine implements PromiseInterface
     {
         unset($this->currentPromise);
         try {
-            $nextYield = $this->generator->throw(exception_for($reason));
+            $nextYield = $this->generator->throw(Create::exceptionFor($reason));
             // The throw was caught, so keep iterating on the coroutine
             $this->nextCoroutine($nextYield);
         } catch (Exception $exception) {
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
index d0ddf603..fbb8876c 100644
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ b/vendor/guzzlehttp/promises/src/EachPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -9,22 +10,22 @@ class EachPromise implements PromisorInterface
 {
     private $pending = [];
 
-    /** @var \Iterator */
+    /** @var \Iterator|null */
     private $iterable;
 
-    /** @var callable|int */
+    /** @var callable|int|null */
     private $concurrency;
 
-    /** @var callable */
+    /** @var callable|null */
     private $onFulfilled;
 
-    /** @var callable */
+    /** @var callable|null */
     private $onRejected;
 
-    /** @var Promise */
+    /** @var Promise|null */
     private $aggregate;
 
-    /** @var bool */
+    /** @var bool|null */
     private $mutex;
 
     /**
@@ -45,12 +46,12 @@ class EachPromise implements PromisorInterface
      *   allowed number of outstanding concurrently executing promises,
      *   creating a capped pool of promises. There is no limit by default.
      *
-     * @param mixed    $iterable Promises or values to iterate.
-     * @param array    $config   Configuration options
+     * @param mixed $iterable Promises or values to iterate.
+     * @param array $config   Configuration options
      */
     public function __construct($iterable, array $config = [])
     {
-        $this->iterable = iter_for($iterable);
+        $this->iterable = Create::iterFor($iterable);
 
         if (isset($config['concurrency'])) {
             $this->concurrency = $config['concurrency'];
@@ -65,6 +66,7 @@ class EachPromise implements PromisorInterface
         }
     }
 
+    /** @psalm-suppress InvalidNullableReturnType */
     public function promise()
     {
         if ($this->aggregate) {
@@ -73,14 +75,29 @@ class EachPromise implements PromisorInterface
 
         try {
             $this->createPromise();
+            /** @psalm-assert Promise $this->aggregate */
             $this->iterable->rewind();
-            $this->refillPending();
+            if (!$this->checkIfFinished()) {
+                $this->refillPending();
+            }
         } catch (\Throwable $e) {
+            /**
+             * @psalm-suppress NullReference
+             * @phpstan-ignore-next-line
+             */
             $this->aggregate->reject($e);
         } catch (\Exception $e) {
+            /**
+             * @psalm-suppress NullReference
+             * @phpstan-ignore-next-line
+             */
             $this->aggregate->reject($e);
         }
 
+        /**
+         * @psalm-suppress NullableReturnStatement
+         * @phpstan-ignore-next-line
+         */
         return $this->aggregate;
     }
 
@@ -89,17 +106,12 @@ class EachPromise implements PromisorInterface
         $this->mutex = false;
         $this->aggregate = new Promise(function () {
             reset($this->pending);
-            if (empty($this->pending) && !$this->iterable->valid()) {
-                $this->aggregate->resolve(null);
-                return;
-            }
-
             // Consume a potentially fluctuating list of promises while
             // ensuring that indexes are maintained (precluding array_shift).
             while ($promise = current($this->pending)) {
                 next($this->pending);
                 $promise->wait();
-                if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
+                if (Is::settled($this->aggregate)) {
                     return;
                 }
             }
@@ -148,22 +160,34 @@ class EachPromise implements PromisorInterface
             return false;
         }
 
-        $promise = promise_for($this->iterable->current());
-        $idx = $this->iterable->key();
+        $promise = Create::promiseFor($this->iterable->current());
+        $key = $this->iterable->key();
+
+        // Iterable keys may not be unique, so we add the promises at the end
+        // of the pending array and retrieve the array index being used
+        $this->pending[] = null;
+        end($this->pending);
+        $idx = key($this->pending);
 
         $this->pending[$idx] = $promise->then(
-            function ($value) use ($idx) {
+            function ($value) use ($idx, $key) {
                 if ($this->onFulfilled) {
                     call_user_func(
-                        $this->onFulfilled, $value, $idx, $this->aggregate
+                        $this->onFulfilled,
+                        $value,
+                        $key,
+                        $this->aggregate
                     );
                 }
                 $this->step($idx);
             },
-            function ($reason) use ($idx) {
+            function ($reason) use ($idx, $key) {
                 if ($this->onRejected) {
                     call_user_func(
-                        $this->onRejected, $reason, $idx, $this->aggregate
+                        $this->onRejected,
+                        $reason,
+                        $key,
+                        $this->aggregate
                     );
                 }
                 $this->step($idx);
@@ -201,7 +225,7 @@ class EachPromise implements PromisorInterface
     private function step($idx)
     {
         // If the promise was already resolved, then ignore this step.
-        if ($this->aggregate->getState() !== PromiseInterface::PENDING) {
+        if (Is::settled($this->aggregate)) {
             return;
         }
 
diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
index dbbeeb9f..98f72a62 100644
--- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php
+++ b/vendor/guzzlehttp/promises/src/FulfilledPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -13,9 +14,10 @@ class FulfilledPromise implements PromiseInterface
 
     public function __construct($value)
     {
-        if (method_exists($value, 'then')) {
+        if (is_object($value) && method_exists($value, 'then')) {
             throw new \InvalidArgumentException(
-                'You cannot create a FulfilledPromise with a promise.');
+                'You cannot create a FulfilledPromise with a promise.'
+            );
         }
 
         $this->value = $value;
@@ -30,11 +32,11 @@ class FulfilledPromise implements PromiseInterface
             return $this;
         }
 
-        $queue = queue();
+        $queue = Utils::queue();
         $p = new Promise([$queue, 'run']);
         $value = $this->value;
         $queue->add(static function () use ($p, $value, $onFulfilled) {
-            if ($p->getState() === self::PENDING) {
+            if (Is::pending($p)) {
                 try {
                     $p->resolve($onFulfilled($value));
                 } catch (\Throwable $e) {
diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php
index 844ada07..75939057 100644
--- a/vendor/guzzlehttp/promises/src/Promise.php
+++ b/vendor/guzzlehttp/promises/src/Promise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -41,14 +42,13 @@ class Promise implements PromiseInterface
 
         // Return a fulfilled promise and immediately invoke any callbacks.
         if ($this->state === self::FULFILLED) {
-            return $onFulfilled
-                ? promise_for($this->result)->then($onFulfilled)
-                : promise_for($this->result);
+            $promise = Create::promiseFor($this->result);
+            return $onFulfilled ? $promise->then($onFulfilled) : $promise;
         }
 
         // It's either cancelled or rejected, so return a rejected promise
         // and immediately invoke any callbacks.
-        $rejection = rejection_for($this->result);
+        $rejection = Create::rejectionFor($this->result);
         return $onRejected ? $rejection->then(null, $onRejected) : $rejection;
     }
 
@@ -61,19 +61,15 @@ class Promise implements PromiseInterface
     {
         $this->waitIfPending();
 
-        $inner = $this->result instanceof PromiseInterface
-            ? $this->result->wait($unwrap)
-            : $this->result;
-
+        if ($this->result instanceof PromiseInterface) {
+            return $this->result->wait($unwrap);
+        }
         if ($unwrap) {
-            if ($this->result instanceof PromiseInterface
-                || $this->state === self::FULFILLED
-            ) {
-                return $inner;
-            } else {
-                // It's rejected so "unwrap" and throw an exception.
-                throw exception_for($inner);
+            if ($this->state === self::FULFILLED) {
+                return $this->result;
             }
+            // It's rejected so "unwrap" and throw an exception.
+            throw Create::exceptionFor($this->result);
         }
     }
 
@@ -103,6 +99,7 @@ class Promise implements PromiseInterface
         }
 
         // Reject the promise only if it wasn't rejected in a then callback.
+        /** @psalm-suppress RedundantCondition */
         if ($this->state === self::PENDING) {
             $this->reject(new CancellationException('Promise has been cancelled'));
         }
@@ -148,17 +145,15 @@ class Promise implements PromiseInterface
 
         // If the value was not a settled promise or a thenable, then resolve
         // it in the task queue using the correct ID.
-        if (!method_exists($value, 'then')) {
+        if (!is_object($value) || !method_exists($value, 'then')) {
             $id = $state === self::FULFILLED ? 1 : 2;
             // It's a success, so resolve the handlers in the queue.
-            queue()->add(static function () use ($id, $value, $handlers) {
+            Utils::queue()->add(static function () use ($id, $value, $handlers) {
                 foreach ($handlers as $handler) {
                     self::callHandler($id, $value, $handler);
                 }
             });
-        } elseif ($value instanceof Promise
-            && $value->getState() === self::PENDING
-        ) {
+        } elseif ($value instanceof Promise && Is::pending($value)) {
             // We can just merge our handlers onto the next promise.
             $value->handlers = array_merge($value->handlers, $handlers);
         } else {
@@ -184,8 +179,6 @@ class Promise implements PromiseInterface
      * @param int   $index   1 (resolve) or 2 (reject).
      * @param mixed $value   Value to pass to the callback.
      * @param array $handler Array of handler data (promise and callbacks).
-     *
-     * @return array Returns the next group to resolve.
      */
     private static function callHandler($index, $value, array $handler)
     {
@@ -194,13 +187,21 @@ class Promise implements PromiseInterface
 
         // The promise may have been cancelled or resolved before placing
         // this thunk in the queue.
-        if ($promise->getState() !== self::PENDING) {
+        if (Is::settled($promise)) {
             return;
         }
 
         try {
             if (isset($handler[$index])) {
-                $promise->resolve($handler[$index]($value));
+                /*
+                 * If $f throws an exception, then $handler will be in the exception
+                 * stack trace. Since $handler contains a reference to the callable
+                 * itself we get a circular reference. We clear the $handler
+                 * here to avoid that memory leak.
+                 */
+                $f = $handler[$index];
+                unset($handler);
+                $promise->resolve($f($value));
             } elseif ($index === 1) {
                 // Forward resolution values as-is.
                 $promise->resolve($value);
@@ -224,15 +225,16 @@ class Promise implements PromiseInterface
         } elseif ($this->waitList) {
             $this->invokeWaitList();
         } else {
-            // If there's not wait function, then reject the promise.
+            // If there's no wait function, then reject the promise.
             $this->reject('Cannot wait on a promise that has '
                 . 'no internal wait function. You must provide a wait '
                 . 'function when constructing the promise to be able to '
                 . 'wait on a promise.');
         }
 
-        queue()->run();
+        Utils::queue()->run();
 
+        /** @psalm-suppress RedundantCondition */
         if ($this->state === self::PENDING) {
             $this->reject('Invoking the wait callback did not resolve the promise');
         }
@@ -263,17 +265,13 @@ class Promise implements PromiseInterface
         $this->waitList = null;
 
         foreach ($waitList as $result) {
-            while (true) {
+            do {
                 $result->waitIfPending();
+                $result = $result->result;
+            } while ($result instanceof Promise);
 
-                if ($result->result instanceof Promise) {
-                    $result = $result->result;
-                } else {
-                    if ($result->result instanceof PromiseInterface) {
-                        $result->result->wait(false);
-                    }
-                    break;
-                }
+            if ($result instanceof PromiseInterface) {
+                $result->wait(false);
             }
         }
     }
diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php
index 8f5f4b99..e5983314 100644
--- a/vendor/guzzlehttp/promises/src/PromiseInterface.php
+++ b/vendor/guzzlehttp/promises/src/PromiseInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -56,6 +57,7 @@ interface PromiseInterface
      * Resolve the promise with the given value.
      *
      * @param mixed $value
+     *
      * @throws \RuntimeException if the promise is already resolved.
      */
     public function resolve($value);
@@ -64,6 +66,7 @@ interface PromiseInterface
      * Reject the promise with the given reason.
      *
      * @param mixed $reason
+     *
      * @throws \RuntimeException if the promise is already resolved.
      */
     public function reject($reason);
@@ -86,6 +89,7 @@ interface PromiseInterface
      * @param bool $unwrap
      *
      * @return mixed
+     *
      * @throws \LogicException if the promise has no wait function or if the
      *                         promise does not settle after waiting.
      */
diff --git a/vendor/guzzlehttp/promises/src/PromisorInterface.php b/vendor/guzzlehttp/promises/src/PromisorInterface.php
index b07fe32b..2d2e3422 100644
--- a/vendor/guzzlehttp/promises/src/PromisorInterface.php
+++ b/vendor/guzzlehttp/promises/src/PromisorInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
diff --git a/vendor/guzzlehttp/promises/src/RejectedPromise.php b/vendor/guzzlehttp/promises/src/RejectedPromise.php
index 2bc6508e..d2918468 100644
--- a/vendor/guzzlehttp/promises/src/RejectedPromise.php
+++ b/vendor/guzzlehttp/promises/src/RejectedPromise.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -13,9 +14,10 @@ class RejectedPromise implements PromiseInterface
 
     public function __construct($reason)
     {
-        if (method_exists($reason, 'then')) {
+        if (is_object($reason) && method_exists($reason, 'then')) {
             throw new \InvalidArgumentException(
-                'You cannot create a RejectedPromise with a promise.');
+                'You cannot create a RejectedPromise with a promise.'
+            );
         }
 
         $this->reason = $reason;
@@ -30,11 +32,11 @@ class RejectedPromise implements PromiseInterface
             return $this;
         }
 
-        $queue = queue();
+        $queue = Utils::queue();
         $reason = $this->reason;
         $p = new Promise([$queue, 'run']);
         $queue->add(static function () use ($p, $reason, $onRejected) {
-            if ($p->getState() === self::PENDING) {
+            if (Is::pending($p)) {
                 try {
                     // Return a resolved promise if onRejected does not throw.
                     $p->resolve($onRejected($reason));
@@ -59,8 +61,10 @@ class RejectedPromise implements PromiseInterface
     public function wait($unwrap = true, $defaultDelivery = null)
     {
         if ($unwrap) {
-            throw exception_for($this->reason);
+            throw Create::exceptionFor($this->reason);
         }
+
+        return null;
     }
 
     public function getState()
diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php
index 07c1136d..e2f13770 100644
--- a/vendor/guzzlehttp/promises/src/RejectionException.php
+++ b/vendor/guzzlehttp/promises/src/RejectionException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -12,7 +13,7 @@ class RejectionException extends \RuntimeException
     private $reason;
 
     /**
-     * @param mixed $reason       Rejection reason.
+     * @param mixed  $reason      Rejection reason.
      * @param string $description Optional description
      */
     public function __construct($reason, $description = null)
diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php
index 6e8a2a08..f0fba2c5 100644
--- a/vendor/guzzlehttp/promises/src/TaskQueue.php
+++ b/vendor/guzzlehttp/promises/src/TaskQueue.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -8,7 +9,7 @@ namespace GuzzleHttp\Promise;
  * maintains a constant stack size. You can use the task queue asynchronously
  * by calling the `run()` function of the global task queue in an event loop.
  *
- *     GuzzleHttp\Promise\queue()->run();
+ *     GuzzleHttp\Promise\Utils::queue()->run();
  */
 class TaskQueue implements TaskQueueInterface
 {
@@ -42,8 +43,8 @@ class TaskQueue implements TaskQueueInterface
 
     public function run()
     {
-        /** @var callable $task */
         while ($task = array_shift($this->queue)) {
+            /** @var callable $task */
             $task();
         }
     }
diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
index ac8306e1..723d4d54 100644
--- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
+++ b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 interface TaskQueueInterface
@@ -13,8 +14,6 @@ interface TaskQueueInterface
     /**
      * Adds a task to the queue that will be executed the next time run is
      * called.
-     *
-     * @param callable $task
      */
     public function add(callable $task);
 
diff --git a/vendor/guzzlehttp/promises/src/functions.php b/vendor/guzzlehttp/promises/src/functions.php
index 4e27709a..c03d39d0 100644
--- a/vendor/guzzlehttp/promises/src/functions.php
+++ b/vendor/guzzlehttp/promises/src/functions.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Promise;
 
 /**
@@ -17,18 +18,12 @@ namespace GuzzleHttp\Promise;
  * @param TaskQueueInterface $assign Optionally specify a new queue instance.
  *
  * @return TaskQueueInterface
+ *
+ * @deprecated queue will be removed in guzzlehttp/promises:2.0. Use Utils::queue instead.
  */
 function queue(TaskQueueInterface $assign = null)
 {
-    static $queue;
-
-    if ($assign) {
-        $queue = $assign;
-    } elseif (!$queue) {
-        $queue = new TaskQueue();
-    }
-
-    return $queue;
+    return Utils::queue($assign);
 }
 
 /**
@@ -38,22 +33,12 @@ function queue(TaskQueueInterface $assign = null)
  * @param callable $task Task function to run.
  *
  * @return PromiseInterface
+ *
+ * @deprecated task will be removed in guzzlehttp/promises:2.0. Use Utils::task instead.
  */
 function task(callable $task)
 {
-    $queue = queue();
-    $promise = new Promise([$queue, 'run']);
-    $queue->add(function () use ($task, $promise) {
-        try {
-            $promise->resolve($task());
-        } catch (\Throwable $e) {
-            $promise->reject($e);
-        } catch (\Exception $e) {
-            $promise->reject($e);
-        }
-    });
-
-    return $promise;
+    return Utils::task($task);
 }
 
 /**
@@ -62,23 +47,12 @@ function task(callable $task)
  * @param mixed $value Promise or value.
  *
  * @return PromiseInterface
+ *
+ * @deprecated promise_for will be removed in guzzlehttp/promises:2.0. Use Create::promiseFor instead.
  */
 function promise_for($value)
 {
-    if ($value instanceof PromiseInterface) {
-        return $value;
-    }
-
-    // Return a Guzzle promise that shadows the given promise.
-    if (method_exists($value, 'then')) {
-        $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
-        $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
-        $promise = new Promise($wfn, $cfn);
-        $value->then([$promise, 'resolve'], [$promise, 'reject']);
-        return $promise;
-    }
-
-    return new FulfilledPromise($value);
+    return Create::promiseFor($value);
 }
 
 /**
@@ -88,14 +62,12 @@ function promise_for($value)
  * @param mixed $reason Promise or reason.
  *
  * @return PromiseInterface
+ *
+ * @deprecated rejection_for will be removed in guzzlehttp/promises:2.0. Use Create::rejectionFor instead.
  */
 function rejection_for($reason)
 {
-    if ($reason instanceof PromiseInterface) {
-        return $reason;
-    }
-
-    return new RejectedPromise($reason);
+    return Create::rejectionFor($reason);
 }
 
 /**
@@ -104,12 +76,12 @@ function rejection_for($reason)
  * @param mixed $reason
  *
  * @return \Exception|\Throwable
+ *
+ * @deprecated exception_for will be removed in guzzlehttp/promises:2.0. Use Create::exceptionFor instead.
  */
 function exception_for($reason)
 {
-    return $reason instanceof \Exception || $reason instanceof \Throwable
-        ? $reason
-        : new RejectionException($reason);
+    return Create::exceptionFor($reason);
 }
 
 /**
@@ -118,16 +90,12 @@ function exception_for($reason)
  * @param mixed $value
  *
  * @return \Iterator
+ *
+ * @deprecated iter_for will be removed in guzzlehttp/promises:2.0. Use Create::iterFor instead.
  */
 function iter_for($value)
 {
-    if ($value instanceof \Iterator) {
-        return $value;
-    } elseif (is_array($value)) {
-        return new \ArrayIterator($value);
-    } else {
-        return new \ArrayIterator([$value]);
-    }
+    return Create::iterFor($value);
 }
 
 /**
@@ -143,21 +111,12 @@ function iter_for($value)
  * @param PromiseInterface $promise Promise or value.
  *
  * @return array
+ *
+ * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspect instead.
  */
 function inspect(PromiseInterface $promise)
 {
-    try {
-        return [
-            'state' => PromiseInterface::FULFILLED,
-            'value' => $promise->wait()
-        ];
-    } catch (RejectionException $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()];
-    } catch (\Throwable $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-    } catch (\Exception $e) {
-        return ['state' => PromiseInterface::REJECTED, 'reason' => $e];
-    }
+    return Utils::inspect($promise);
 }
 
 /**
@@ -166,19 +125,17 @@ function inspect(PromiseInterface $promise)
  *
  * Returns an array of inspection state arrays.
  *
+ * @see inspect for the inspection state array format.
+ *
  * @param PromiseInterface[] $promises Traversable of promises to wait upon.
  *
  * @return array
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
+ *
+ * @deprecated inspect will be removed in guzzlehttp/promises:2.0. Use Utils::inspectAll instead.
  */
 function inspect_all($promises)
 {
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = inspect($promise);
-    }
-
-    return $results;
+    return Utils::inspectAll($promises);
 }
 
 /**
@@ -188,20 +145,18 @@ function inspect_all($promises)
  * the promises were provided). An exception is thrown if any of the promises
  * are rejected.
  *
- * @param mixed $promises Iterable of PromiseInterface objects to wait on.
+ * @param iterable<PromiseInterface> $promises Iterable of PromiseInterface objects to wait on.
  *
  * @return array
+ *
  * @throws \Exception on error
  * @throws \Throwable on error in PHP >=7
+ *
+ * @deprecated unwrap will be removed in guzzlehttp/promises:2.0. Use Utils::unwrap instead.
  */
 function unwrap($promises)
 {
-    $results = [];
-    foreach ($promises as $key => $promise) {
-        $results[$key] = $promise->wait();
-    }
-
-    return $results;
+    return Utils::unwrap($promises);
 }
 
 /**
@@ -212,25 +167,16 @@ function unwrap($promises)
  * respective positions to the original array. If any promise in the array
  * rejects, the returned promise is rejected with the rejection reason.
  *
- * @param mixed $promises Promises or values.
+ * @param mixed $promises  Promises or values.
+ * @param bool  $recursive If true, resolves new promises that might have been added to the stack during its own resolution.
  *
  * @return PromiseInterface
+ *
+ * @deprecated all will be removed in guzzlehttp/promises:2.0. Use Utils::all instead.
  */
-function all($promises)
+function all($promises, $recursive = false)
 {
-    $results = [];
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = $value;
-        },
-        function ($reason, $idx, Promise $aggregate) {
-            $aggregate->reject($reason);
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
+    return Utils::all($promises, $recursive);
 }
 
 /**
@@ -241,45 +187,19 @@ function all($promises)
  * fulfilled with an array that contains the fulfillment values of the winners
  * in order of resolution.
  *
- * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException}
- * if the number of fulfilled promises is less than the desired $count.
+ * This promise is rejected with a {@see AggregateException} if the number of
+ * fulfilled promises is less than the desired $count.
  *
  * @param int   $count    Total number of promises.
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
+ *
+ * @deprecated some will be removed in guzzlehttp/promises:2.0. Use Utils::some instead.
  */
 function some($count, $promises)
 {
-    $results = [];
-    $rejections = [];
-
-    return each(
-        $promises,
-        function ($value, $idx, PromiseInterface $p) use (&$results, $count) {
-            if ($p->getState() !== PromiseInterface::PENDING) {
-                return;
-            }
-            $results[$idx] = $value;
-            if (count($results) >= $count) {
-                $p->resolve(null);
-            }
-        },
-        function ($reason) use (&$rejections) {
-            $rejections[] = $reason;
-        }
-    )->then(
-        function () use (&$results, &$rejections, $count) {
-            if (count($results) !== $count) {
-                throw new AggregateException(
-                    'Not enough promises to fulfill count',
-                    $rejections
-                );
-            }
-            ksort($results);
-            return array_values($results);
-        }
-    );
+    return Utils::some($count, $promises);
 }
 
 /**
@@ -289,10 +209,12 @@ function some($count, $promises)
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
+ *
+ * @deprecated any will be removed in guzzlehttp/promises:2.0. Use Utils::any instead.
  */
 function any($promises)
 {
-    return some(1, $promises)->then(function ($values) { return $values[0]; });
+    return Utils::any($promises);
 }
 
 /**
@@ -301,27 +223,17 @@ function any($promises)
  *
  * The returned promise is fulfilled with an array of inspection state arrays.
  *
+ * @see inspect for the inspection state array format.
+ *
  * @param mixed $promises Promises or values.
  *
  * @return PromiseInterface
- * @see GuzzleHttp\Promise\inspect for the inspection state array format.
+ *
+ * @deprecated settle will be removed in guzzlehttp/promises:2.0. Use Utils::settle instead.
  */
 function settle($promises)
 {
-    $results = [];
-
-    return each(
-        $promises,
-        function ($value, $idx) use (&$results) {
-            $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value];
-        },
-        function ($reason, $idx) use (&$results) {
-            $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason];
-        }
-    )->then(function () use (&$results) {
-        ksort($results);
-        return $results;
-    });
+    return Utils::settle($promises);
 }
 
 /**
@@ -329,29 +241,28 @@ function settle($promises)
  * fulfilled with a null value when the iterator has been consumed or the
  * aggregate promise has been fulfilled or rejected.
  *
- * $onFulfilled is a function that accepts the fulfilled value, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
+ * $onFulfilled is a function that accepts the fulfilled value, iterator index,
+ * and the aggregate promise. The callback can invoke any necessary side
+ * effects and choose to resolve or reject the aggregate if needed.
  *
- * $onRejected is a function that accepts the rejection reason, iterator
- * index, and the aggregate promise. The callback can invoke any necessary side
- * effects and choose to resolve or reject the aggregate promise if needed.
+ * $onRejected is a function that accepts the rejection reason, iterator index,
+ * and the aggregate promise. The callback can invoke any necessary side
+ * effects and choose to resolve or reject the aggregate if needed.
  *
  * @param mixed    $iterable    Iterator or array to iterate over.
  * @param callable $onFulfilled
  * @param callable $onRejected
  *
  * @return PromiseInterface
+ *
+ * @deprecated each will be removed in guzzlehttp/promises:2.0. Use Each::of instead.
  */
 function each(
     $iterable,
     callable $onFulfilled = null,
     callable $onRejected = null
 ) {
-    return (new EachPromise($iterable, [
-        'fulfilled' => $onFulfilled,
-        'rejected'  => $onRejected
-    ]))->promise();
+    return Each::of($iterable, $onFulfilled, $onRejected);
 }
 
 /**
@@ -368,6 +279,8 @@ function each(
  * @param callable     $onRejected
  *
  * @return PromiseInterface
+ *
+ * @deprecated each_limit will be removed in guzzlehttp/promises:2.0. Use Each::ofLimit instead.
  */
 function each_limit(
     $iterable,
@@ -375,11 +288,7 @@ function each_limit(
     callable $onFulfilled = null,
     callable $onRejected = null
 ) {
-    return (new EachPromise($iterable, [
-        'fulfilled'   => $onFulfilled,
-        'rejected'    => $onRejected,
-        'concurrency' => $concurrency
-    ]))->promise();
+    return Each::ofLimit($iterable, $concurrency, $onFulfilled, $onRejected);
 }
 
 /**
@@ -392,66 +301,63 @@ function each_limit(
  * @param callable     $onFulfilled
  *
  * @return PromiseInterface
+ *
+ * @deprecated each_limit_all will be removed in guzzlehttp/promises:2.0. Use Each::ofLimitAll instead.
  */
 function each_limit_all(
     $iterable,
     $concurrency,
     callable $onFulfilled = null
 ) {
-    return each_limit(
-        $iterable,
-        $concurrency,
-        $onFulfilled,
-        function ($reason, $idx, PromiseInterface $aggregate) {
-            $aggregate->reject($reason);
-        }
-    );
+    return Each::ofLimitAll($iterable, $concurrency, $onFulfilled);
 }
 
 /**
  * Returns true if a promise is fulfilled.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_fulfilled will be removed in guzzlehttp/promises:2.0. Use Is::fulfilled instead.
  */
 function is_fulfilled(PromiseInterface $promise)
 {
-    return $promise->getState() === PromiseInterface::FULFILLED;
+    return Is::fulfilled($promise);
 }
 
 /**
  * Returns true if a promise is rejected.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_rejected will be removed in guzzlehttp/promises:2.0. Use Is::rejected instead.
  */
 function is_rejected(PromiseInterface $promise)
 {
-    return $promise->getState() === PromiseInterface::REJECTED;
+    return Is::rejected($promise);
 }
 
 /**
  * Returns true if a promise is fulfilled or rejected.
  *
- * @param PromiseInterface $promise
- *
  * @return bool
+ *
+ * @deprecated is_settled will be removed in guzzlehttp/promises:2.0. Use Is::settled instead.
  */
 function is_settled(PromiseInterface $promise)
 {
-    return $promise->getState() !== PromiseInterface::PENDING;
+    return Is::settled($promise);
 }
 
 /**
- * @see Coroutine
+ * Create a new coroutine.
  *
- * @param callable $generatorFn
+ * @see Coroutine
  *
  * @return PromiseInterface
+ *
+ * @deprecated coroutine will be removed in guzzlehttp/promises:2.0. Use Coroutine::of instead.
  */
 function coroutine(callable $generatorFn)
 {
-    return new Coroutine($generatorFn);
+    return Coroutine::of($generatorFn);
 }
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
index 8a3743db..b441d366 100644
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ b/vendor/guzzlehttp/psr7/CHANGELOG.md
@@ -9,8 +9,32 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
 
 ## [Unreleased]
 
+## [1.7.0] - 2020-09-30
 
-## [1.6.0]
+### Added
+
+- Replaced functions by static methods
+
+### Fixed
+
+- Converting a non-seekable stream to a string
+- Handle multiple Set-Cookie correctly
+- Ignore array keys in header values when merging
+- Allow multibyte characters to be parsed in `Message:bodySummary()`
+
+### Changed
+
+- Restored partial HHVM 3 support
+
+
+## [1.6.1] - 2019-07-02
+
+### Fixed
+
+- Accept null and bool header values again
+
+
+## [1.6.0] - 2019-06-30
 
 ### Added
 
diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md
index c60a6a38..acfabfdc 100644
--- a/vendor/guzzlehttp/psr7/README.md
+++ b/vendor/guzzlehttp/psr7/README.md
@@ -23,11 +23,11 @@ Reads from multiple streams, one after the other.
 ```php
 use GuzzleHttp\Psr7;
 
-$a = Psr7\stream_for('abc, ');
-$b = Psr7\stream_for('123.');
+$a = Psr7\Utils::streamFor('abc, ');
+$b = Psr7\Utils::streamFor('123.');
 $composed = new Psr7\AppendStream([$a, $b]);
 
-$composed->addStream(Psr7\stream_for(' Above all listen to me'));
+$composed->addStream(Psr7\Utils::streamFor(' Above all listen to me'));
 
 echo $composed; // abc, 123. Above all listen to me.
 ```
@@ -65,7 +65,7 @@ then on disk.
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for(fopen('http://www.google.com', 'r'));
+$original = Psr7\Utils::streamFor(fopen('http://www.google.com', 'r'));
 $stream = new Psr7\CachingStream($original);
 
 $stream->read(1024);
@@ -89,7 +89,7 @@ stream becomes too full.
 use GuzzleHttp\Psr7;
 
 // Create an empty stream
-$stream = Psr7\stream_for();
+$stream = Psr7\Utils::streamFor();
 
 // Start dropping data when the stream has more than 10 bytes
 $dropping = new Psr7\DroppingStream($stream, 10);
@@ -112,7 +112,7 @@ to create a concrete class for a simple extension point.
 
 use GuzzleHttp\Psr7;
 
-$stream = Psr7\stream_for('hi');
+$stream = Psr7\Utils::streamFor('hi');
 $fnStream = Psr7\FnStream::decorate($stream, [
     'rewind' => function () use ($stream) {
         echo 'About to rewind - ';
@@ -167,7 +167,7 @@ chunks (e.g. Amazon S3's multipart upload API).
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+'));
+$original = Psr7\Utils::streamFor(fopen('/tmp/test.txt', 'r+'));
 echo $original->getSize();
 // >>> 1048576
 
@@ -197,7 +197,7 @@ NoSeekStream wraps a stream and does not allow seeking.
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for('foo');
+$original = Psr7\Utils::streamFor('foo');
 $noSeek = new Psr7\NoSeekStream($original);
 
 echo $noSeek->read(3);
@@ -271,7 +271,7 @@ This decorator could be added to any existing stream and used like so:
 ```php
 use GuzzleHttp\Psr7;
 
-$original = Psr7\stream_for('foo');
+$original = Psr7\Utils::streamFor('foo');
 
 $eofStream = new EofCallbackStream($original, function () {
     echo 'EOF!';
@@ -297,228 +297,292 @@ stream from a PSR-7 stream.
 ```php
 use GuzzleHttp\Psr7\StreamWrapper;
 
-$stream = GuzzleHttp\Psr7\stream_for('hello!');
+$stream = GuzzleHttp\Psr7\Utils::streamFor('hello!');
 $resource = StreamWrapper::getResource($stream);
 echo fread($resource, 6); // outputs hello!
 ```
 
 
-# Function API
+# Static API
 
-There are various functions available under the `GuzzleHttp\Psr7` namespace.
+There are various static methods available under the `GuzzleHttp\Psr7` namespace.
 
 
-## `function str`
+## `GuzzleHttp\Psr7\Message::toString`
 
-`function str(MessageInterface $message)`
+`public static function toString(MessageInterface $message): string`
 
 Returns the string representation of an HTTP message.
 
 ```php
 $request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com');
-echo GuzzleHttp\Psr7\str($request);
+echo GuzzleHttp\Psr7\Message::toString($request);
 ```
 
 
-## `function uri_for`
+## `GuzzleHttp\Psr7\Message::bodySummary`
 
-`function uri_for($uri)`
+`public static function bodySummary(MessageInterface $message, int $truncateAt = 120): string|null`
 
-This function accepts a string or `Psr\Http\Message\UriInterface` and returns a
-UriInterface for the given value. If the value is already a `UriInterface`, it
-is returned as-is.
+Get a short summary of the message body.
 
-```php
-$uri = GuzzleHttp\Psr7\uri_for('http://example.com');
-assert($uri === GuzzleHttp\Psr7\uri_for($uri));
-```
+Will return `null` if the response is not printable.
 
 
-## `function stream_for`
+## `GuzzleHttp\Psr7\Message::rewindBody`
 
-`function stream_for($resource = '', array $options = [])`
+`public static function rewindBody(MessageInterface $message): void`
 
-Create a new stream based on the input type.
+Attempts to rewind a message body and throws an exception on failure.
 
-Options is an associative array that can contain the following keys:
+The body of the message will only be rewound if a call to `tell()`
+returns a value other than `0`.
 
-* - metadata: Array of custom metadata.
-* - size: Size of the stream.
 
-This method accepts the following `$resource` types:
+## `GuzzleHttp\Psr7\Message::parseMessage`
 
-- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
-- `string`: Creates a stream object that uses the given string as the contents.
-- `resource`: Creates a stream object that wraps the given PHP stream resource.
-- `Iterator`: If the provided value implements `Iterator`, then a read-only
-  stream object will be created that wraps the given iterable. Each time the
-  stream is read from, data from the iterator will fill a buffer and will be
-  continuously called until the buffer is equal to the requested read size.
-  Subsequent read calls will first read from the buffer and then call `next`
-  on the underlying iterator until it is exhausted.
-- `object` with `__toString()`: If the object has the `__toString()` method,
-  the object will be cast to a string and then a stream will be returned that
-  uses the string value.
-- `NULL`: When `null` is passed, an empty stream object is returned.
-- `callable` When a callable is passed, a read-only stream object will be
-  created that invokes the given callable. The callable is invoked with the
-  number of suggested bytes to read. The callable can return any number of
-  bytes, but MUST return `false` when there is no more data to return. The
-  stream object that wraps the callable will invoke the callable until the
-  number of requested bytes are available. Any additional bytes will be
-  buffered and used in subsequent reads.
+`public static function parseMessage(string $message): array`
 
-```php
-$stream = GuzzleHttp\Psr7\stream_for('foo');
-$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r'));
+Parses an HTTP message into an associative array.
 
-$generator = function ($bytes) {
-    for ($i = 0; $i < $bytes; $i++) {
-        yield ' ';
-    }
-}
+The array contains the "start-line" key containing the start line of
+the message, "headers" key containing an associative array of header
+array values, and a "body" key containing the body of the message.
 
-$stream = GuzzleHttp\Psr7\stream_for($generator(100));
-```
 
+## `GuzzleHttp\Psr7\Message::parseRequestUri`
 
-## `function parse_header`
+`public static function parseRequestUri(string $path, array $headers): string`
 
-`function parse_header($header)`
+Constructs a URI for an HTTP request message.
 
-Parse an array of header values containing ";" separated data into an array of
-associative arrays representing the header key value pair data of the header.
-When a parameter does not contain a value, but just contains a key, this
-function will inject a key with a '' string value.
 
+## `GuzzleHttp\Psr7\Message::parseRequest`
 
-## `function normalize_header`
+`public static function parseRequest(string $message): Request`
 
-`function normalize_header($header)`
+Parses a request message string into a request object.
 
-Converts an array of header values that may contain comma separated headers
-into an array of headers with no comma separated values.
 
+## `GuzzleHttp\Psr7\Message::parseResponse`
 
-## `function modify_request`
+`public static function parseResponse(string $message): Response`
 
-`function modify_request(RequestInterface $request, array $changes)`
+Parses a response message string into a response object.
 
-Clone and modify a request with the given changes. This method is useful for
-reducing the number of clones needed to mutate a message.
 
-The changes can be one of:
+## `GuzzleHttp\Psr7\Header::parse`
 
-- method: (string) Changes the HTTP method.
-- set_headers: (array) Sets the given headers.
-- remove_headers: (array) Remove the given headers.
-- body: (mixed) Sets the given body.
-- uri: (UriInterface) Set the URI.
-- query: (string) Set the query string value of the URI.
-- version: (string) Set the protocol version.
+`public static function parse(string|array $header): array`
 
+Parse an array of header values containing ";" separated data into an
+array of associative arrays representing the header key value pair data
+of the header. When a parameter does not contain a value, but just
+contains a key, this function will inject a key with a '' string value.
 
-## `function rewind_body`
 
-`function rewind_body(MessageInterface $message)`
+## `GuzzleHttp\Psr7\Header::normalize`
 
-Attempts to rewind a message body and throws an exception on failure. The body
-of the message will only be rewound if a call to `tell()` returns a value other
-than `0`.
+`public static function normalize(string|array $header): array`
 
+Converts an array of header values that may contain comma separated
+headers into an array of headers with no comma separated values.
 
-## `function try_fopen`
 
-`function try_fopen($filename, $mode)`
+## `GuzzleHttp\Psr7\Query::parse`
 
-Safely opens a PHP stream resource using a filename.
+`public static function parse(string $str, int|bool $urlEncoding = true): array`
+
+Parse a query string into an associative array.
+
+If multiple values are found for the same key, the value of that key
+value pair will become an array. This function does not parse nested
+PHP style arrays into an associative array (e.g., `foo[a]=1&foo[b]=2`
+will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`.
+
+
+## `GuzzleHttp\Psr7\Query::build`
+
+`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string`
+
+Build a query string from an array of key value pairs.
+
+This function can use the return value of `parse()` to build a query
+string. This function does not modify the provided keys when an array is
+encountered (like `http_build_query()` would).
+
+
+## `GuzzleHttp\Psr7\Utils::caselessRemove`
+
+`public static function caselessRemove(iterable<string> $keys, $keys, array $data): array`
 
-When fopen fails, PHP normally raises a warning. This function adds an error
-handler that checks for errors and throws an exception instead.
+Remove the items given by the keys, case insensitively from the data.
 
 
-## `function copy_to_string`
+## `GuzzleHttp\Psr7\Utils::copyToStream`
 
-`function copy_to_string(StreamInterface $stream, $maxLen = -1)`
+`public static function copyToStream(StreamInterface $source, StreamInterface $dest, int $maxLen = -1): void`
 
-Copy the contents of a stream into a string until the given number of bytes
-have been read.
+Copy the contents of a stream into another stream until the given number
+of bytes have been read.
 
 
-## `function copy_to_stream`
+## `GuzzleHttp\Psr7\Utils::copyToString`
 
-`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)`
+`public static function copyToString(StreamInterface $stream, int $maxLen = -1): string`
 
-Copy the contents of a stream into another stream until the given number of
+Copy the contents of a stream into a string until the given number of
 bytes have been read.
 
 
-## `function hash`
+## `GuzzleHttp\Psr7\Utils::hash`
 
-`function hash(StreamInterface $stream, $algo, $rawOutput = false)`
+`public static function hash(StreamInterface $stream, string $algo, bool $rawOutput = false): string`
 
-Calculate a hash of a Stream. This method reads the entire stream to calculate
-a rolling hash (based on PHP's hash_init functions).
+Calculate a hash of a stream.
 
+This method reads the entire stream to calculate a rolling hash, based on
+PHP's `hash_init` functions.
 
-## `function readline`
 
-`function readline(StreamInterface $stream, $maxLength = null)`
+## `GuzzleHttp\Psr7\Utils::modifyRequest`
+
+`public static function modifyRequest(RequestInterface $request, array $changes): RequestInterface`
+
+Clone and modify a request with the given changes.
+
+This method is useful for reducing the number of clones needed to mutate
+a message.
+
+- method: (string) Changes the HTTP method.
+- set_headers: (array) Sets the given headers.
+- remove_headers: (array) Remove the given headers.
+- body: (mixed) Sets the given body.
+- uri: (UriInterface) Set the URI.
+- query: (string) Set the query string value of the URI.
+- version: (string) Set the protocol version.
+
+
+## `GuzzleHttp\Psr7\Utils::readLine`
+
+`public static function readLine(StreamInterface $stream, int $maxLength = null): string`
 
 Read a line from the stream up to the maximum allowed buffer length.
 
 
-## `function parse_request`
+## `GuzzleHttp\Psr7\Utils::streamFor`
 
-`function parse_request($message)`
+`public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface`
 
-Parses a request message string into a request object.
+Create a new stream based on the input type.
 
+Options is an associative array that can contain the following keys:
 
-## `function parse_response`
+- metadata: Array of custom metadata.
+- size: Size of the stream.
 
-`function parse_response($message)`
+This method accepts the following `$resource` types:
 
-Parses a response message string into a response object.
+- `Psr\Http\Message\StreamInterface`: Returns the value as-is.
+- `string`: Creates a stream object that uses the given string as the contents.
+- `resource`: Creates a stream object that wraps the given PHP stream resource.
+- `Iterator`: If the provided value implements `Iterator`, then a read-only
+  stream object will be created that wraps the given iterable. Each time the
+  stream is read from, data from the iterator will fill a buffer and will be
+  continuously called until the buffer is equal to the requested read size.
+  Subsequent read calls will first read from the buffer and then call `next`
+  on the underlying iterator until it is exhausted.
+- `object` with `__toString()`: If the object has the `__toString()` method,
+  the object will be cast to a string and then a stream will be returned that
+  uses the string value.
+- `NULL`: When `null` is passed, an empty stream object is returned.
+- `callable` When a callable is passed, a read-only stream object will be
+  created that invokes the given callable. The callable is invoked with the
+  number of suggested bytes to read. The callable can return any number of
+  bytes, but MUST return `false` when there is no more data to return. The
+  stream object that wraps the callable will invoke the callable until the
+  number of requested bytes are available. Any additional bytes will be
+  buffered and used in subsequent reads.
 
+```php
+$stream = GuzzleHttp\Psr7\Utils::streamFor('foo');
+$stream = GuzzleHttp\Psr7\Utils::streamFor(fopen('/path/to/file', 'r'));
 
-## `function parse_query`
+$generator = function ($bytes) {
+    for ($i = 0; $i < $bytes; $i++) {
+        yield ' ';
+    }
+}
 
-`function parse_query($str, $urlEncoding = true)`
+$stream = GuzzleHttp\Psr7\Utils::streamFor($generator(100));
+```
 
-Parse a query string into an associative array.
 
-If multiple values are found for the same key, the value of that key value pair
-will become an array. This function does not parse nested PHP style arrays into
-an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into
-`['foo[a]' => '1', 'foo[b]' => '2']`).
+## `GuzzleHttp\Psr7\Utils::tryFopen`
 
+`public static function tryFopen(string $filename, string $mode): resource`
 
-## `function build_query`
+Safely opens a PHP stream resource using a filename.
 
-`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)`
+When fopen fails, PHP normally raises a warning. This function adds an
+error handler that checks for errors and throws an exception instead.
 
-Build a query string from an array of key value pairs.
 
-This function can use the return value of parse_query() to build a query string.
-This function does not modify the provided keys when an array is encountered
-(like http_build_query would).
+## `GuzzleHttp\Psr7\Utils::uriFor`
+
+`public static function uriFor(string|UriInterface $uri): UriInterface`
+
+Returns a UriInterface for the given value.
 
+This function accepts a string or UriInterface and returns a
+UriInterface for the given value. If the value is already a
+UriInterface, it is returned as-is.
 
-## `function mimetype_from_filename`
 
-`function mimetype_from_filename($filename)`
+## `GuzzleHttp\Psr7\MimeType::fromFilename`
+
+`public static function fromFilename(string $filename): string|null`
 
 Determines the mimetype of a file by looking at its extension.
 
 
-## `function mimetype_from_extension`
+## `GuzzleHttp\Psr7\MimeType::fromExtension`
 
-`function mimetype_from_extension($extension)`
+`public static function fromExtension(string $extension): string|null`
 
 Maps a file extensions to a mimetype.
 
 
+## Upgrading from Function API
+
+The static API was first introduced in 1.7.0, in order to mitigate problems with functions conflicting between global and local copies of the package. The function API will be removed in 2.0.0. A migration table has been provided here for your convenience:
+
+| Original Function | Replacement Method |
+|----------------|----------------|
+| `str` | `Message::toString` |
+| `uri_for` | `Utils::uriFor` |
+| `stream_for` | `Utils::streamFor` |
+| `parse_header` | `Header::parse` |
+| `normalize_header` | `Header::normalize` |
+| `modify_request` | `Utils::modifyRequest` |
+| `rewind_body` | `Message::rewindBody` |
+| `try_fopen` | `Utils::tryFopen` |
+| `copy_to_string` | `Utils::copyToString` |
+| `copy_to_stream` | `Utils::copyToStream` |
+| `hash` | `Utils::hash` |
+| `readline` | `Utils::readLine` |
+| `parse_request` | `Message::parseRequest` |
+| `parse_response` | `Message::parseResponse` |
+| `parse_query` | `Query::parse` |
+| `build_query` | `Query::build` |
+| `mimetype_from_filename` | `MimeType::fromFilename` |
+| `mimetype_from_extension` | `MimeType::fromExtension` |
+| `_parse_message` | `Message::parseMessage` |
+| `_parse_request_uri` | `Message::parseRequestUri` |
+| `get_message_body_summary` | `Message::bodySummary` |
+| `_caseless_remove` | `Utils::caselessRemove` |
+
+
 # Additional URI Methods
 
 Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class,
diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json
index 168a055b..58dcb07e 100644
--- a/vendor/guzzlehttp/psr7/composer.json
+++ b/vendor/guzzlehttp/psr7/composer.json
@@ -21,14 +21,14 @@
         "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
     },
     "require-dev": {
-        "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8",
+        "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10",
         "ext-zlib": "*"
     },
     "provide": {
         "psr/http-message-implementation": "1.0"
     },
     "suggest": {
-        "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+        "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
     },
     "autoload": {
         "psr-4": {
@@ -43,7 +43,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.6-dev"
+            "dev-master": "1.7-dev"
         }
     }
 }
diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php
index 472a0d61..86e7a23b 100644
--- a/vendor/guzzlehttp/psr7/src/AppendStream.php
+++ b/vendor/guzzlehttp/psr7/src/AppendStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -61,7 +62,7 @@ class AppendStream implements StreamInterface
 
     public function getContents()
     {
-        return copy_to_string($this);
+        return Utils::copyToString($this);
     }
 
     /**
@@ -98,6 +99,8 @@ class AppendStream implements StreamInterface
         }
 
         $this->streams = [];
+
+        return null;
     }
 
     public function tell()
diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php
index af4d4c22..627e4a5f 100644
--- a/vendor/guzzlehttp/psr7/src/BufferStream.php
+++ b/vendor/guzzlehttp/psr7/src/BufferStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -49,6 +50,8 @@ class BufferStream implements StreamInterface
     public function detach()
     {
         $this->close();
+
+        return null;
     }
 
     public function getSize()
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
index ed68f086..244d2a06 100644
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ b/vendor/guzzlehttp/psr7/src/CachingStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -131,7 +132,7 @@ class CachingStream implements StreamInterface
     private function cacheEntireStream()
     {
         $target = new FnStream(['write' => 'strlen']);
-        copy_to_stream($this, $target);
+        Utils::copyToStream($this, $target);
 
         return $this->tell();
     }
diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php
index 8935c80d..e125642d 100644
--- a/vendor/guzzlehttp/psr7/src/DroppingStream.php
+++ b/vendor/guzzlehttp/psr7/src/DroppingStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php
index 73daea6f..407577a3 100644
--- a/vendor/guzzlehttp/psr7/src/FnStream.php
+++ b/vendor/guzzlehttp/psr7/src/FnStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -34,6 +35,7 @@ class FnStream implements StreamInterface
 
     /**
      * Lazily determine which methods are not implemented.
+     *
      * @throws \BadMethodCallException
      */
     public function __get($name)
diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php
index 5e4f6028..c98b96f2 100644
--- a/vendor/guzzlehttp/psr7/src/InflateStream.php
+++ b/vendor/guzzlehttp/psr7/src/InflateStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
index 02cec3af..13c7af5c 100644
--- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
+++ b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -34,6 +35,6 @@ class LazyOpenStream implements StreamInterface
      */
     protected function createStream()
     {
-        return stream_for(try_fopen($this->filename, $this->mode));
+        return Utils::streamFor(Utils::tryFopen($this->filename, $this->mode));
     }
 }
diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php
index e4f239e3..bef9161e 100644
--- a/vendor/guzzlehttp/psr7/src/LimitStream.php
+++ b/vendor/guzzlehttp/psr7/src/LimitStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php
index a7966d10..99203bb4 100644
--- a/vendor/guzzlehttp/psr7/src/MessageTrait.php
+++ b/vendor/guzzlehttp/psr7/src/MessageTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -17,7 +18,7 @@ trait MessageTrait
     /** @var string */
     private $protocol = '1.1';
 
-    /** @var StreamInterface */
+    /** @var StreamInterface|null */
     private $stream;
 
     public function getProtocolVersion()
@@ -117,7 +118,7 @@ trait MessageTrait
     public function getBody()
     {
         if (!$this->stream) {
-            $this->stream = stream_for('');
+            $this->stream = Utils::streamFor('');
         }
 
         return $this->stream;
@@ -194,7 +195,7 @@ trait MessageTrait
             }
 
             return trim((string) $value, " \t");
-        }, $values);
+        }, array_values($values));
     }
 
     private function assertHeader($header)
diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php
index c0fd584f..0cbfea35 100644
--- a/vendor/guzzlehttp/psr7/src/MultipartStream.php
+++ b/vendor/guzzlehttp/psr7/src/MultipartStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -71,7 +72,7 @@ class MultipartStream implements StreamInterface
         }
 
         // Add the trailing boundary with CRLF
-        $stream->addStream(stream_for("--{$this->boundary}--\r\n"));
+        $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n"));
 
         return $stream;
     }
@@ -84,7 +85,7 @@ class MultipartStream implements StreamInterface
             }
         }
 
-        $element['contents'] = stream_for($element['contents']);
+        $element['contents'] = Utils::streamFor($element['contents']);
 
         if (empty($element['filename'])) {
             $uri = $element['contents']->getMetadata('uri');
@@ -100,9 +101,9 @@ class MultipartStream implements StreamInterface
             isset($element['headers']) ? $element['headers'] : []
         );
 
-        $stream->addStream(stream_for($this->getHeaders($headers)));
+        $stream->addStream(Utils::streamFor($this->getHeaders($headers)));
         $stream->addStream($body);
-        $stream->addStream(stream_for("\r\n"));
+        $stream->addStream(Utils::streamFor("\r\n"));
     }
 
     /**
@@ -131,7 +132,7 @@ class MultipartStream implements StreamInterface
         // Set a default Content-Type if one was not supplied
         $type = $this->getHeader($headers, 'content-type');
         if (!$type && ($filename === '0' || $filename)) {
-            if ($type = mimetype_from_filename($filename)) {
+            if ($type = MimeType::fromFilename($filename)) {
                 $headers['Content-Type'] = $type;
             }
         }
diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
index 23322180..4b04b4c0 100644
--- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php
+++ b/vendor/guzzlehttp/psr7/src/NoSeekStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
diff --git a/vendor/guzzlehttp/psr7/src/PumpStream.php b/vendor/guzzlehttp/psr7/src/PumpStream.php
index ffb5440d..fbd8726b 100644
--- a/vendor/guzzlehttp/psr7/src/PumpStream.php
+++ b/vendor/guzzlehttp/psr7/src/PumpStream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -51,7 +52,7 @@ class PumpStream implements StreamInterface
     public function __toString()
     {
         try {
-            return copy_to_string($this);
+            return Utils::copyToString($this);
         } catch (\Exception $e) {
             return '';
         }
@@ -66,6 +67,8 @@ class PumpStream implements StreamInterface
     {
         $this->tellPos = false;
         $this->source = null;
+
+        return null;
     }
 
     public function getSize()
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
index 59f337db..89fbb1e6 100644
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ b/vendor/guzzlehttp/psr7/src/Request.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use InvalidArgumentException;
@@ -51,7 +52,7 @@ class Request implements RequestInterface
         }
 
         if ($body !== '' && $body !== null) {
-            $this->stream = stream_for($body);
+            $this->stream = Utils::streamFor($body);
         }
     }
 
diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php
index e7e04d86..36b85fb7 100644
--- a/vendor/guzzlehttp/psr7/src/Response.php
+++ b/vendor/guzzlehttp/psr7/src/Response.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\ResponseInterface;
@@ -100,7 +101,7 @@ class Response implements ResponseInterface
         $this->statusCode = $status;
 
         if ($body !== '' && $body !== null) {
-            $this->stream = stream_for($body);
+            $this->stream = Utils::streamFor($body);
         }
 
         $this->setHeaders($headers);
@@ -134,7 +135,7 @@ class Response implements ResponseInterface
         if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
             $reasonPhrase = self::$phrases[$new->statusCode];
         }
-        $new->reasonPhrase = $reasonPhrase;
+        $new->reasonPhrase = (string) $reasonPhrase;
         return $new;
     }
 
diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php
index 1a09a6c8..72c5566c 100644
--- a/vendor/guzzlehttp/psr7/src/ServerRequest.php
+++ b/vendor/guzzlehttp/psr7/src/ServerRequest.php
@@ -79,8 +79,10 @@ class ServerRequest extends Request implements ServerRequestInterface
      * Return an UploadedFile instance array.
      *
      * @param array $files A array which respect $_FILES structure
-     * @throws InvalidArgumentException for unrecognized values
+     *
      * @return array
+     *
+     * @throws InvalidArgumentException for unrecognized values
      */
     public static function normalizeFiles(array $files)
     {
diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php
index d9e7409c..3865d6d6 100644
--- a/vendor/guzzlehttp/psr7/src/Stream.php
+++ b/vendor/guzzlehttp/psr7/src/Stream.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -76,8 +77,10 @@ class Stream implements StreamInterface
     public function __toString()
     {
         try {
-            $this->seek(0);
-            return (string) stream_get_contents($this->stream);
+            if ($this->isSeekable()) {
+                $this->seek(0);
+            }
+            return $this->getContents();
         } catch (\Exception $e) {
             return '';
         }
@@ -193,7 +196,7 @@ class Stream implements StreamInterface
     public function seek($offset, $whence = SEEK_SET)
     {
         $whence = (int) $whence;
-        
+
         if (!isset($this->stream)) {
             throw new \RuntimeException('Stream is detached');
         }
diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
index daec6f52..093023b1 100644
--- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
+++ b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -52,7 +53,7 @@ trait StreamDecoratorTrait
 
     public function getContents()
     {
-        return copy_to_string($this);
+        return Utils::copyToString($this);
     }
 
     /**
@@ -140,6 +141,7 @@ trait StreamDecoratorTrait
      * Implement in subclasses to dynamically create streams when requested.
      *
      * @return StreamInterface
+     *
      * @throws \BadMethodCallException
      */
     protected function createStream()
diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
index 0f3a2856..eac65353 100644
--- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php
+++ b/vendor/guzzlehttp/psr7/src/StreamWrapper.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\StreamInterface;
@@ -23,6 +24,7 @@ class StreamWrapper
      * @param StreamInterface $stream The stream to get a resource for
      *
      * @return resource
+     *
      * @throws \InvalidArgumentException if stream is not readable or writable
      */
     public static function getResource(StreamInterface $stream)
diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php
index e62bd5c8..a0ea59e0 100644
--- a/vendor/guzzlehttp/psr7/src/UploadedFile.php
+++ b/vendor/guzzlehttp/psr7/src/UploadedFile.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use InvalidArgumentException;
@@ -85,6 +86,7 @@ class UploadedFile implements UploadedFileInterface
      * Depending on the value set file or stream variable
      *
      * @param mixed $streamOrFile
+     *
      * @throws InvalidArgumentException
      */
     private function setStreamOrFile($streamOrFile)
@@ -104,6 +106,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param int $error
+     *
      * @throws InvalidArgumentException
      */
     private function setError($error)
@@ -125,6 +128,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param int $size
+     *
      * @throws InvalidArgumentException
      */
     private function setSize($size)
@@ -158,6 +162,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param string|null $clientFilename
+     *
      * @throws InvalidArgumentException
      */
     private function setClientFilename($clientFilename)
@@ -173,6 +178,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * @param string|null $clientMediaType
+     *
      * @throws InvalidArgumentException
      */
     private function setClientMediaType($clientMediaType)
@@ -220,6 +226,7 @@ class UploadedFile implements UploadedFileInterface
 
     /**
      * {@inheritdoc}
+     *
      * @throws RuntimeException if the upload was not successful.
      */
     public function getStream()
@@ -238,7 +245,9 @@ class UploadedFile implements UploadedFileInterface
      *
      * @see http://php.net/is_uploaded_file
      * @see http://php.net/move_uploaded_file
+     *
      * @param string $targetPath Path to which to move the uploaded file.
+     *
      * @throws RuntimeException if the upload was not successful.
      * @throws InvalidArgumentException if the $path specified is invalid.
      * @throws RuntimeException on any error during the move operation, or on
@@ -259,7 +268,7 @@ class UploadedFile implements UploadedFileInterface
                 ? rename($this->file, $targetPath)
                 : move_uploaded_file($this->file, $targetPath);
         } else {
-            copy_to_stream(
+            Utils::copyToStream(
                 $this->getStream(),
                 new LazyOpenStream($targetPath, 'w')
             );
diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php
index 825a25ee..a0d73917 100644
--- a/vendor/guzzlehttp/psr7/src/Uri.php
+++ b/vendor/guzzlehttp/psr7/src/Uri.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
index 384c29e5..2b9174a5 100644
--- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php
+++ b/vendor/guzzlehttp/psr7/src/UriNormalizer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php
index c1cb8a27..26cecd53 100644
--- a/vendor/guzzlehttp/psr7/src/UriResolver.php
+++ b/vendor/guzzlehttp/psr7/src/UriResolver.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\UriInterface;
diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php
index 8e6dafe6..e4cc1361 100644
--- a/vendor/guzzlehttp/psr7/src/functions.php
+++ b/vendor/guzzlehttp/psr7/src/functions.php
@@ -1,10 +1,9 @@
 <?php
+
 namespace GuzzleHttp\Psr7;
 
 use Psr\Http\Message\MessageInterface;
 use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\StreamInterface;
 use Psr\Http\Message\UriInterface;
 
@@ -14,52 +13,32 @@ use Psr\Http\Message\UriInterface;
  * @param MessageInterface $message Message to convert to a string.
  *
  * @return string
+ *
+ * @deprecated str will be removed in guzzlehttp/psr7:2.0. Use Message::toString instead.
  */
 function str(MessageInterface $message)
 {
-    if ($message instanceof RequestInterface) {
-        $msg = trim($message->getMethod() . ' '
-                . $message->getRequestTarget())
-            . ' HTTP/' . $message->getProtocolVersion();
-        if (!$message->hasHeader('host')) {
-            $msg .= "\r\nHost: " . $message->getUri()->getHost();
-        }
-    } elseif ($message instanceof ResponseInterface) {
-        $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
-            . $message->getStatusCode() . ' '
-            . $message->getReasonPhrase();
-    } else {
-        throw new \InvalidArgumentException('Unknown message type');
-    }
-
-    foreach ($message->getHeaders() as $name => $values) {
-        $msg .= "\r\n{$name}: " . implode(', ', $values);
-    }
-
-    return "{$msg}\r\n\r\n" . $message->getBody();
+    return Message::toString($message);
 }
 
 /**
  * Returns a UriInterface for the given value.
  *
- * This function accepts a string or {@see Psr\Http\Message\UriInterface} and
- * returns a UriInterface for the given value. If the value is already a
- * `UriInterface`, it is returned as-is.
+ * This function accepts a string or UriInterface and returns a
+ * UriInterface for the given value. If the value is already a
+ * UriInterface, it is returned as-is.
  *
  * @param string|UriInterface $uri
  *
  * @return UriInterface
+ *
  * @throws \InvalidArgumentException
+ *
+ * @deprecated uri_for will be removed in guzzlehttp/psr7:2.0. Use Utils::uriFor instead.
  */
 function uri_for($uri)
 {
-    if ($uri instanceof UriInterface) {
-        return $uri;
-    } elseif (is_string($uri)) {
-        return new Uri($uri);
-    }
-
-    throw new \InvalidArgumentException('URI must be a string or UriInterface');
+    return Utils::uriFor($uri);
 }
 
 /**
@@ -69,86 +48,57 @@ function uri_for($uri)
  * - metadata: Array of custom metadata.
  * - size: Size of the stream.
  *
+ * This method accepts the following `$resource` types:
+ * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
+ * - `string`: Creates a stream object that uses the given string as the contents.
+ * - `resource`: Creates a stream object that wraps the given PHP stream resource.
+ * - `Iterator`: If the provided value implements `Iterator`, then a read-only
+ *   stream object will be created that wraps the given iterable. Each time the
+ *   stream is read from, data from the iterator will fill a buffer and will be
+ *   continuously called until the buffer is equal to the requested read size.
+ *   Subsequent read calls will first read from the buffer and then call `next`
+ *   on the underlying iterator until it is exhausted.
+ * - `object` with `__toString()`: If the object has the `__toString()` method,
+ *   the object will be cast to a string and then a stream will be returned that
+ *   uses the string value.
+ * - `NULL`: When `null` is passed, an empty stream object is returned.
+ * - `callable` When a callable is passed, a read-only stream object will be
+ *   created that invokes the given callable. The callable is invoked with the
+ *   number of suggested bytes to read. The callable can return any number of
+ *   bytes, but MUST return `false` when there is no more data to return. The
+ *   stream object that wraps the callable will invoke the callable until the
+ *   number of requested bytes are available. Any additional bytes will be
+ *   buffered and used in subsequent reads.
+ *
  * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data
  * @param array                                                                  $options  Additional options
  *
  * @return StreamInterface
+ *
  * @throws \InvalidArgumentException if the $resource arg is not valid.
+ *
+ * @deprecated stream_for will be removed in guzzlehttp/psr7:2.0. Use Utils::streamFor instead.
  */
 function stream_for($resource = '', array $options = [])
 {
-    if (is_scalar($resource)) {
-        $stream = fopen('php://temp', 'r+');
-        if ($resource !== '') {
-            fwrite($stream, $resource);
-            fseek($stream, 0);
-        }
-        return new Stream($stream, $options);
-    }
-
-    switch (gettype($resource)) {
-        case 'resource':
-            return new Stream($resource, $options);
-        case 'object':
-            if ($resource instanceof StreamInterface) {
-                return $resource;
-            } elseif ($resource instanceof \Iterator) {
-                return new PumpStream(function () use ($resource) {
-                    if (!$resource->valid()) {
-                        return false;
-                    }
-                    $result = $resource->current();
-                    $resource->next();
-                    return $result;
-                }, $options);
-            } elseif (method_exists($resource, '__toString')) {
-                return stream_for((string) $resource, $options);
-            }
-            break;
-        case 'NULL':
-            return new Stream(fopen('php://temp', 'r+'), $options);
-    }
-
-    if (is_callable($resource)) {
-        return new PumpStream($resource, $options);
-    }
-
-    throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
+    return Utils::streamFor($resource, $options);
 }
 
 /**
  * Parse an array of header values containing ";" separated data into an
- * array of associative arrays representing the header key value pair
- * data of the header. When a parameter does not contain a value, but just
+ * array of associative arrays representing the header key value pair data
+ * of the header. When a parameter does not contain a value, but just
  * contains a key, this function will inject a key with a '' string value.
  *
  * @param string|array $header Header to parse into components.
  *
  * @return array Returns the parsed header values.
+ *
+ * @deprecated parse_header will be removed in guzzlehttp/psr7:2.0. Use Header::parse instead.
  */
 function parse_header($header)
 {
-    static $trimmed = "\"'  \n\t\r";
-    $params = $matches = [];
-
-    foreach (normalize_header($header) as $val) {
-        $part = [];
-        foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
-            if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
-                $m = $matches[0];
-                if (isset($m[1])) {
-                    $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed);
-                } else {
-                    $part[] = trim($m[0], $trimmed);
-                }
-            }
-        }
-        if ($part) {
-            $params[] = $part;
-        }
-    }
-
-    return $params;
+    return Header::parse($header);
 }
 
 /**
@@ -158,32 +108,20 @@ function parse_header($header)
  * @param string|array $header Header to normalize.
  *
  * @return array Returns the normalized header field values.
+ *
+ * @deprecated normalize_header will be removed in guzzlehttp/psr7:2.0. Use Header::normalize instead.
  */
 function normalize_header($header)
 {
-    if (!is_array($header)) {
-        return array_map('trim', explode(',', $header));
-    }
-
-    $result = [];
-    foreach ($header as $value) {
-        foreach ((array) $value as $v) {
-            if (strpos($v, ',') === false) {
-                $result[] = $v;
-                continue;
-            }
-            foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
-                $result[] = trim($vv);
-            }
-        }
-    }
-
-    return $result;
+    return Header::normalize($header);
 }
 
 /**
  * Clone and modify a request with the given changes.
  *
+ * This method is useful for reducing the number of clones needed to mutate a
+ * message.
+ *
  * The changes can be one of:
  * - method: (string) Changes the HTTP method.
  * - set_headers: (array) Sets the given headers.
@@ -197,72 +135,12 @@ function normalize_header($header)
  * @param array            $changes Changes to apply.
  *
  * @return RequestInterface
+ *
+ * @deprecated modify_request will be removed in guzzlehttp/psr7:2.0. Use Utils::modifyRequest instead.
  */
 function modify_request(RequestInterface $request, array $changes)
 {
-    if (!$changes) {
-        return $request;
-    }
-
-    $headers = $request->getHeaders();
-
-    if (!isset($changes['uri'])) {
-        $uri = $request->getUri();
-    } else {
-        // Remove the host header if one is on the URI
-        if ($host = $changes['uri']->getHost()) {
-            $changes['set_headers']['Host'] = $host;
-
-            if ($port = $changes['uri']->getPort()) {
-                $standardPorts = ['http' => 80, 'https' => 443];
-                $scheme = $changes['uri']->getScheme();
-                if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
-                    $changes['set_headers']['Host'] .= ':'.$port;
-                }
-            }
-        }
-        $uri = $changes['uri'];
-    }
-
-    if (!empty($changes['remove_headers'])) {
-        $headers = _caseless_remove($changes['remove_headers'], $headers);
-    }
-
-    if (!empty($changes['set_headers'])) {
-        $headers = _caseless_remove(array_keys($changes['set_headers']), $headers);
-        $headers = $changes['set_headers'] + $headers;
-    }
-
-    if (isset($changes['query'])) {
-        $uri = $uri->withQuery($changes['query']);
-    }
-
-    if ($request instanceof ServerRequestInterface) {
-        return (new ServerRequest(
-            isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-            $uri,
-            $headers,
-            isset($changes['body']) ? $changes['body'] : $request->getBody(),
-            isset($changes['version'])
-                ? $changes['version']
-                : $request->getProtocolVersion(),
-            $request->getServerParams()
-        ))
-        ->withParsedBody($request->getParsedBody())
-        ->withQueryParams($request->getQueryParams())
-        ->withCookieParams($request->getCookieParams())
-        ->withUploadedFiles($request->getUploadedFiles());
-    }
-
-    return new Request(
-        isset($changes['method']) ? $changes['method'] : $request->getMethod(),
-        $uri,
-        $headers,
-        isset($changes['body']) ? $changes['body'] : $request->getBody(),
-        isset($changes['version'])
-            ? $changes['version']
-            : $request->getProtocolVersion()
-    );
+    return Utils::modifyRequest($request, $changes);
 }
 
 /**
@@ -274,14 +152,12 @@ function modify_request(RequestInterface $request, array $changes)
  * @param MessageInterface $message Message to rewind
  *
  * @throws \RuntimeException
+ *
+ * @deprecated rewind_body will be removed in guzzlehttp/psr7:2.0. Use Message::rewindBody instead.
  */
 function rewind_body(MessageInterface $message)
 {
-    $body = $message->getBody();
-
-    if ($body->tell()) {
-        $body->rewind();
-    }
+    Message::rewindBody($message);
 }
 
 /**
@@ -294,29 +170,14 @@ function rewind_body(MessageInterface $message)
  * @param string $mode     Mode used to open the file
  *
  * @return resource
+ *
  * @throws \RuntimeException if the file cannot be opened
+ *
+ * @deprecated try_fopen will be removed in guzzlehttp/psr7:2.0. Use Utils::tryFopen instead.
  */
 function try_fopen($filename, $mode)
 {
-    $ex = null;
-    set_error_handler(function () use ($filename, $mode, &$ex) {
-        $ex = new \RuntimeException(sprintf(
-            'Unable to open %s using mode %s: %s',
-            $filename,
-            $mode,
-            func_get_args()[1]
-        ));
-    });
-
-    $handle = fopen($filename, $mode);
-    restore_error_handler();
-
-    if ($ex) {
-        /** @var $ex \RuntimeException */
-        throw $ex;
-    }
-
-    return $handle;
+    return Utils::tryFopen($filename, $mode);
 }
 
 /**
@@ -327,36 +188,14 @@ function try_fopen($filename, $mode)
  * @param int             $maxLen Maximum number of bytes to read. Pass -1
  *                                to read the entire stream.
  * @return string
+ *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated copy_to_string will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToString instead.
  */
 function copy_to_string(StreamInterface $stream, $maxLen = -1)
 {
-    $buffer = '';
-
-    if ($maxLen === -1) {
-        while (!$stream->eof()) {
-            $buf = $stream->read(1048576);
-            // Using a loose equality here to match on '' and false.
-            if ($buf == null) {
-                break;
-            }
-            $buffer .= $buf;
-        }
-        return $buffer;
-    }
-
-    $len = 0;
-    while (!$stream->eof() && $len < $maxLen) {
-        $buf = $stream->read($maxLen - $len);
-        // Using a loose equality here to match on '' and false.
-        if ($buf == null) {
-            break;
-        }
-        $buffer .= $buf;
-        $len = strlen($buffer);
-    }
-
-    return $buffer;
+    return Utils::copyToString($stream, $maxLen);
 }
 
 /**
@@ -369,92 +208,48 @@ function copy_to_string(StreamInterface $stream, $maxLen = -1)
  *                                to read the entire stream.
  *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated copy_to_stream will be removed in guzzlehttp/psr7:2.0. Use Utils::copyToStream instead.
  */
-function copy_to_stream(
-    StreamInterface $source,
-    StreamInterface $dest,
-    $maxLen = -1
-) {
-    $bufferSize = 8192;
-
-    if ($maxLen === -1) {
-        while (!$source->eof()) {
-            if (!$dest->write($source->read($bufferSize))) {
-                break;
-            }
-        }
-    } else {
-        $remaining = $maxLen;
-        while ($remaining > 0 && !$source->eof()) {
-            $buf = $source->read(min($bufferSize, $remaining));
-            $len = strlen($buf);
-            if (!$len) {
-                break;
-            }
-            $remaining -= $len;
-            $dest->write($buf);
-        }
-    }
+function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)
+{
+    return Utils::copyToStream($source, $dest, $maxLen);
 }
 
 /**
- * Calculate a hash of a Stream
+ * Calculate a hash of a stream.
+ *
+ * This method reads the entire stream to calculate a rolling hash, based on
+ * PHP's `hash_init` functions.
  *
  * @param StreamInterface $stream    Stream to calculate the hash for
  * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
  * @param bool            $rawOutput Whether or not to use raw output
  *
  * @return string Returns the hash of the stream
+ *
  * @throws \RuntimeException on error.
+ *
+ * @deprecated hash will be removed in guzzlehttp/psr7:2.0. Use Utils::hash instead.
  */
-function hash(
-    StreamInterface $stream,
-    $algo,
-    $rawOutput = false
-) {
-    $pos = $stream->tell();
-
-    if ($pos > 0) {
-        $stream->rewind();
-    }
-
-    $ctx = hash_init($algo);
-    while (!$stream->eof()) {
-        hash_update($ctx, $stream->read(1048576));
-    }
-
-    $out = hash_final($ctx, (bool) $rawOutput);
-    $stream->seek($pos);
-
-    return $out;
+function hash(StreamInterface $stream, $algo, $rawOutput = false)
+{
+    return Utils::hash($stream, $algo, $rawOutput);
 }
 
 /**
- * Read a line from the stream up to the maximum allowed buffer length
+ * Read a line from the stream up to the maximum allowed buffer length.
  *
  * @param StreamInterface $stream    Stream to read from
- * @param int             $maxLength Maximum buffer length
+ * @param int|null        $maxLength Maximum buffer length
  *
  * @return string
+ *
+ * @deprecated readline will be removed in guzzlehttp/psr7:2.0. Use Utils::readLine instead.
  */
 function readline(StreamInterface $stream, $maxLength = null)
 {
-    $buffer = '';
-    $size = 0;
-
-    while (!$stream->eof()) {
-        // Using a loose equality here to match on '' and false.
-        if (null == ($byte = $stream->read(1))) {
-            return $buffer;
-        }
-        $buffer .= $byte;
-        // Break when a new line is found or the max length - 1 is reached
-        if ($byte === "\n" || ++$size === $maxLength - 1) {
-            break;
-        }
-    }
-
-    return $buffer;
+    return Utils::readLine($stream, $maxLength);
 }
 
 /**
@@ -463,26 +258,12 @@ function readline(StreamInterface $stream, $maxLength = null)
  * @param string $message Request message string.
  *
  * @return Request
+ *
+ * @deprecated parse_request will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequest instead.
  */
 function parse_request($message)
 {
-    $data = _parse_message($message);
-    $matches = [];
-    if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) {
-        throw new \InvalidArgumentException('Invalid request string');
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-    $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1';
-
-    $request = new Request(
-        $parts[0],
-        $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1],
-        $data['headers'],
-        $data['body'],
-        $version
-    );
-
-    return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
+    return Message::parseRequest($message);
 }
 
 /**
@@ -491,139 +272,66 @@ function parse_request($message)
  * @param string $message Response message string.
  *
  * @return Response
+ *
+ * @deprecated parse_response will be removed in guzzlehttp/psr7:2.0. Use Message::parseResponse instead.
  */
 function parse_response($message)
 {
-    $data = _parse_message($message);
-    // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
-    // between status-code and reason-phrase is required. But browsers accept
-    // responses without space and reason as well.
-    if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
-        throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
-    }
-    $parts = explode(' ', $data['start-line'], 3);
-
-    return new Response(
-        $parts[1],
-        $data['headers'],
-        $data['body'],
-        explode('/', $parts[0])[1],
-        isset($parts[2]) ? $parts[2] : null
-    );
+    return Message::parseResponse($message);
 }
 
 /**
  * Parse a query string into an associative array.
  *
- * If multiple values are found for the same key, the value of that key
- * value pair will become an array. This function does not parse nested
- * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will
- * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']).
+ * If multiple values are found for the same key, the value of that key value
+ * pair will become an array. This function does not parse nested PHP style
+ * arrays into an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed
+ * into `['foo[a]' => '1', 'foo[b]' => '2'])`.
  *
  * @param string   $str         Query string to parse
  * @param int|bool $urlEncoding How the query string is encoded
  *
  * @return array
+ *
+ * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead.
  */
 function parse_query($str, $urlEncoding = true)
 {
-    $result = [];
-
-    if ($str === '') {
-        return $result;
-    }
-
-    if ($urlEncoding === true) {
-        $decoder = function ($value) {
-            return rawurldecode(str_replace('+', ' ', $value));
-        };
-    } elseif ($urlEncoding === PHP_QUERY_RFC3986) {
-        $decoder = 'rawurldecode';
-    } elseif ($urlEncoding === PHP_QUERY_RFC1738) {
-        $decoder = 'urldecode';
-    } else {
-        $decoder = function ($str) { return $str; };
-    }
-
-    foreach (explode('&', $str) as $kvp) {
-        $parts = explode('=', $kvp, 2);
-        $key = $decoder($parts[0]);
-        $value = isset($parts[1]) ? $decoder($parts[1]) : null;
-        if (!isset($result[$key])) {
-            $result[$key] = $value;
-        } else {
-            if (!is_array($result[$key])) {
-                $result[$key] = [$result[$key]];
-            }
-            $result[$key][] = $value;
-        }
-    }
-
-    return $result;
+    return Query::parse($str, $urlEncoding);
 }
 
 /**
  * Build a query string from an array of key value pairs.
  *
- * This function can use the return value of parse_query() to build a query
+ * This function can use the return value of `parse_query()` to build a query
  * string. This function does not modify the provided keys when an array is
- * encountered (like http_build_query would).
+ * encountered (like `http_build_query()` would).
  *
  * @param array     $params   Query string parameters.
  * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
  *                            to encode using RFC3986, or PHP_QUERY_RFC1738
  *                            to encode using RFC1738.
  * @return string
+ *
+ * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
  */
 function build_query(array $params, $encoding = PHP_QUERY_RFC3986)
 {
-    if (!$params) {
-        return '';
-    }
-
-    if ($encoding === false) {
-        $encoder = function ($str) { return $str; };
-    } elseif ($encoding === PHP_QUERY_RFC3986) {
-        $encoder = 'rawurlencode';
-    } elseif ($encoding === PHP_QUERY_RFC1738) {
-        $encoder = 'urlencode';
-    } else {
-        throw new \InvalidArgumentException('Invalid type');
-    }
-
-    $qs = '';
-    foreach ($params as $k => $v) {
-        $k = $encoder($k);
-        if (!is_array($v)) {
-            $qs .= $k;
-            if ($v !== null) {
-                $qs .= '=' . $encoder($v);
-            }
-            $qs .= '&';
-        } else {
-            foreach ($v as $vv) {
-                $qs .= $k;
-                if ($vv !== null) {
-                    $qs .= '=' . $encoder($vv);
-                }
-                $qs .= '&';
-            }
-        }
-    }
-
-    return $qs ? (string) substr($qs, 0, -1) : '';
+    return Query::build($params, $encoding);
 }
 
 /**
  * Determines the mimetype of a file by looking at its extension.
  *
- * @param $filename
+ * @param string $filename
+ *
+ * @return string|null
  *
- * @return null|string
+ * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead.
  */
 function mimetype_from_filename($filename)
 {
-    return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION));
+    return MimeType::fromFilename($filename);
 }
 
 /**
@@ -632,119 +340,13 @@ function mimetype_from_filename($filename)
  * @param $extension string The file extension.
  *
  * @return string|null
+ *
  * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
+ * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead.
  */
 function mimetype_from_extension($extension)
 {
-    static $mimetypes = [
-        '3gp' => 'video/3gpp',
-        '7z' => 'application/x-7z-compressed',
-        'aac' => 'audio/x-aac',
-        'ai' => 'application/postscript',
-        'aif' => 'audio/x-aiff',
-        'asc' => 'text/plain',
-        'asf' => 'video/x-ms-asf',
-        'atom' => 'application/atom+xml',
-        'avi' => 'video/x-msvideo',
-        'bmp' => 'image/bmp',
-        'bz2' => 'application/x-bzip2',
-        'cer' => 'application/pkix-cert',
-        'crl' => 'application/pkix-crl',
-        'crt' => 'application/x-x509-ca-cert',
-        'css' => 'text/css',
-        'csv' => 'text/csv',
-        'cu' => 'application/cu-seeme',
-        'deb' => 'application/x-debian-package',
-        'doc' => 'application/msword',
-        'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
-        'dvi' => 'application/x-dvi',
-        'eot' => 'application/vnd.ms-fontobject',
-        'eps' => 'application/postscript',
-        'epub' => 'application/epub+zip',
-        'etx' => 'text/x-setext',
-        'flac' => 'audio/flac',
-        'flv' => 'video/x-flv',
-        'gif' => 'image/gif',
-        'gz' => 'application/gzip',
-        'htm' => 'text/html',
-        'html' => 'text/html',
-        'ico' => 'image/x-icon',
-        'ics' => 'text/calendar',
-        'ini' => 'text/plain',
-        'iso' => 'application/x-iso9660-image',
-        'jar' => 'application/java-archive',
-        'jpe' => 'image/jpeg',
-        'jpeg' => 'image/jpeg',
-        'jpg' => 'image/jpeg',
-        'js' => 'text/javascript',
-        'json' => 'application/json',
-        'latex' => 'application/x-latex',
-        'log' => 'text/plain',
-        'm4a' => 'audio/mp4',
-        'm4v' => 'video/mp4',
-        'mid' => 'audio/midi',
-        'midi' => 'audio/midi',
-        'mov' => 'video/quicktime',
-        'mkv' => 'video/x-matroska',
-        'mp3' => 'audio/mpeg',
-        'mp4' => 'video/mp4',
-        'mp4a' => 'audio/mp4',
-        'mp4v' => 'video/mp4',
-        'mpe' => 'video/mpeg',
-        'mpeg' => 'video/mpeg',
-        'mpg' => 'video/mpeg',
-        'mpg4' => 'video/mp4',
-        'oga' => 'audio/ogg',
-        'ogg' => 'audio/ogg',
-        'ogv' => 'video/ogg',
-        'ogx' => 'application/ogg',
-        'pbm' => 'image/x-portable-bitmap',
-        'pdf' => 'application/pdf',
-        'pgm' => 'image/x-portable-graymap',
-        'png' => 'image/png',
-        'pnm' => 'image/x-portable-anymap',
-        'ppm' => 'image/x-portable-pixmap',
-        'ppt' => 'application/vnd.ms-powerpoint',
-        'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
-        'ps' => 'application/postscript',
-        'qt' => 'video/quicktime',
-        'rar' => 'application/x-rar-compressed',
-        'ras' => 'image/x-cmu-raster',
-        'rss' => 'application/rss+xml',
-        'rtf' => 'application/rtf',
-        'sgm' => 'text/sgml',
-        'sgml' => 'text/sgml',
-        'svg' => 'image/svg+xml',
-        'swf' => 'application/x-shockwave-flash',
-        'tar' => 'application/x-tar',
-        'tif' => 'image/tiff',
-        'tiff' => 'image/tiff',
-        'torrent' => 'application/x-bittorrent',
-        'ttf' => 'application/x-font-ttf',
-        'txt' => 'text/plain',
-        'wav' => 'audio/x-wav',
-        'webm' => 'video/webm',
-        'webp' => 'image/webp',
-        'wma' => 'audio/x-ms-wma',
-        'wmv' => 'video/x-ms-wmv',
-        'woff' => 'application/x-font-woff',
-        'wsdl' => 'application/wsdl+xml',
-        'xbm' => 'image/x-xbitmap',
-        'xls' => 'application/vnd.ms-excel',
-        'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
-        'xml' => 'application/xml',
-        'xpm' => 'image/x-xpixmap',
-        'xwd' => 'image/x-xwindowdump',
-        'yaml' => 'text/yaml',
-        'yml' => 'text/yaml',
-        'zip' => 'application/zip',
-    ];
-
-    $extension = strtolower($extension);
-
-    return isset($mimetypes[$extension])
-        ? $mimetypes[$extension]
-        : null;
+    return MimeType::fromExtension($extension);
 }
 
 /**
@@ -757,61 +359,13 @@ function mimetype_from_extension($extension)
  * @param string $message HTTP request or response to parse.
  *
  * @return array
+ *
  * @internal
+ * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
  */
 function _parse_message($message)
 {
-    if (!$message) {
-        throw new \InvalidArgumentException('Invalid message');
-    }
-
-    $message = ltrim($message, "\r\n");
-
-    $messageParts = preg_split("/\r?\n\r?\n/", $message, 2);
-
-    if ($messageParts === false || count($messageParts) !== 2) {
-        throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
-    }
-
-    list($rawHeaders, $body) = $messageParts;
-    $rawHeaders .= "\r\n"; // Put back the delimiter we split previously
-    $headerParts = preg_split("/\r?\n/", $rawHeaders, 2);
-
-    if ($headerParts === false || count($headerParts) !== 2) {
-        throw new \InvalidArgumentException('Invalid message: Missing status line');
-    }
-
-    list($startLine, $rawHeaders) = $headerParts;
-
-    if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
-        // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
-        $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
-    }
-
-    /** @var array[] $headerLines */
-    $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER);
-
-    // If these aren't the same, then one line didn't match and there's an invalid header.
-    if ($count !== substr_count($rawHeaders, "\n")) {
-        // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
-        if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
-            throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
-        }
-
-        throw new \InvalidArgumentException('Invalid header syntax');
-    }
-
-    $headers = [];
-
-    foreach ($headerLines as $headerLine) {
-        $headers[$headerLine[1]][] = $headerLine[2];
-    }
-
-    return [
-        'start-line' => $startLine,
-        'headers' => $headers,
-        'body' => $body,
-    ];
+    return Message::parseMessage($message);
 }
 
 /**
@@ -821,79 +375,43 @@ function _parse_message($message)
  * @param array  $headers Array of headers (each value an array).
  *
  * @return string
+ *
  * @internal
+ * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
  */
 function _parse_request_uri($path, array $headers)
 {
-    $hostKey = array_filter(array_keys($headers), function ($k) {
-        return strtolower($k) === 'host';
-    });
-
-    // If no host is found, then a full URI cannot be constructed.
-    if (!$hostKey) {
-        return $path;
-    }
-
-    $host = $headers[reset($hostKey)][0];
-    $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
-
-    return $scheme . '://' . $host . '/' . ltrim($path, '/');
+    return Message::parseRequestUri($path, $headers);
 }
 
 /**
- * Get a short summary of the message body
+ * Get a short summary of the message body.
  *
  * Will return `null` if the response is not printable.
  *
  * @param MessageInterface $message    The message to get the body summary
  * @param int              $truncateAt The maximum allowed size of the summary
  *
- * @return null|string
+ * @return string|null
+ *
+ * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead.
  */
 function get_message_body_summary(MessageInterface $message, $truncateAt = 120)
 {
-    $body = $message->getBody();
-
-    if (!$body->isSeekable() || !$body->isReadable()) {
-        return null;
-    }
-
-    $size = $body->getSize();
-
-    if ($size === 0) {
-        return null;
-    }
-
-    $summary = $body->read($truncateAt);
-    $body->rewind();
-
-    if ($size > $truncateAt) {
-        $summary .= ' (truncated...)';
-    }
-
-    // Matches any printable character, including unicode characters:
-    // letters, marks, numbers, punctuation, spacing, and separators.
-    if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
-        return null;
-    }
-
-    return $summary;
+    return Message::bodySummary($message, $truncateAt);
 }
 
-/** @internal */
+/**
+ * Remove the items given by the keys, case insensitively from the data.
+ *
+ * @param iterable<string> $keys
+ *
+ * @return array
+ *
+ * @internal
+ * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
+ */
 function _caseless_remove($keys, array $data)
 {
-    $result = [];
-
-    foreach ($keys as &$key) {
-        $key = strtolower($key);
-    }
-
-    foreach ($data as $k => $v) {
-        if (!in_array(strtolower($k), $keys)) {
-            $result[$k] = $v;
-        }
-    }
-
-    return $result;
+    return Utils::caselessRemove($keys, $data);
 }
diff --git a/vendor/hab/solr b/vendor/hab/solr
index a54f2c74..ef528a52 160000
--- a/vendor/hab/solr
+++ b/vendor/hab/solr
@@ -1 +1 @@
-Subproject commit a54f2c7495dacc5cd0964fba25e1fa2b89cc03fe
+Subproject commit ef528a52d57493ad2ae575037e42442075135f62
diff --git a/vendor/pimple/pimple/.travis.yml b/vendor/pimple/pimple/.travis.yml
index 196f7fc1..723904a7 100644
--- a/vendor/pimple/pimple/.travis.yml
+++ b/vendor/pimple/pimple/.travis.yml
@@ -1,40 +1,17 @@
 language: php
 
 env:
-  matrix:
-    - PIMPLE_EXT=no
-    - PIMPLE_EXT=yes
   global:
     - REPORT_EXIT_STATUS=1
 
 php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - 7.1
+  - 7.2
+  - 7.3
+  - 7.4
 
 before_script:
   - composer self-update
   - COMPOSER_ROOT_VERSION=dev-master composer install
-  - if [ "$PIMPLE_EXT" == "yes" ]; then sh -c "cd ext/pimple && phpize && ./configure && make && sudo make install"; fi
-  - if [ "$PIMPLE_EXT" == "yes" ]; then echo "extension=pimple.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
 
 script:
-  - cd ext/pimple
-  - if [ "$PIMPLE_EXT" == "yes" ]; then yes n | make test | tee output ; grep -E 'Tests failed +. +0' output; fi
-  - if [ "$PIMPLE_EXT" == "yes" ]; then export SYMFONY_DEPRECATIONS_HELPER=weak; fi
-  - cd ../..
   - ./vendor/bin/simple-phpunit
-
-matrix:
-  include:
-    - php: hhvm
-      dist: trusty
-      env: PIMPLE_EXT=no
-  exclude:
-    - php: 7.0
-      env: PIMPLE_EXT=yes
-    - php: 7.1
-      env: PIMPLE_EXT=yes
diff --git a/vendor/pimple/pimple/CHANGELOG b/vendor/pimple/pimple/CHANGELOG
index ba56760c..21989574 100644
--- a/vendor/pimple/pimple/CHANGELOG
+++ b/vendor/pimple/pimple/CHANGELOG
@@ -1,6 +1,11 @@
-* 3.2.3 (2017-XX-XX)
+* 3.3.0 (2020-03-03)
 
- * n/a
+ * Drop PHP extension
+ * Bump min PHP version to 7.2.5
+
+* 3.2.3 (2018-01-21)
+
+ * prefixed all function calls with \ for extra speed
 
 * 3.2.2 (2017-07-23)
 
diff --git a/vendor/pimple/pimple/LICENSE b/vendor/pimple/pimple/LICENSE
index e02dc5a7..3e2a9e1e 100644
--- a/vendor/pimple/pimple/LICENSE
+++ b/vendor/pimple/pimple/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2017 Fabien Potencier
+Copyright (c) 2009-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/pimple/pimple/composer.json b/vendor/pimple/pimple/composer.json
index dabf190a..ef8a83db 100644
--- a/vendor/pimple/pimple/composer.json
+++ b/vendor/pimple/pimple/composer.json
@@ -3,7 +3,7 @@
     "type": "library",
     "description": "Pimple, a simple Dependency Injection Container",
     "keywords": ["dependency injection", "container"],
-    "homepage": "http://pimple.sensiolabs.org",
+    "homepage": "https://pimple.symfony.com",
     "license": "MIT",
     "authors": [
         {
@@ -12,18 +12,18 @@
         }
     ],
     "require": {
-        "php": ">=5.3.0",
+        "php": "^7.2.5",
         "psr/container": "^1.0"
     },
     "require-dev": {
-        "symfony/phpunit-bridge": "^3.2"
+        "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
     },
     "autoload": {
         "psr-0": { "Pimple": "src/" }
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "3.2.x-dev"
+            "dev-master": "3.3.x-dev"
         }
     }
 }
diff --git a/vendor/pimple/pimple/ext/pimple/.gitignore b/vendor/pimple/pimple/ext/pimple/.gitignore
deleted file mode 100644
index 1861088a..00000000
--- a/vendor/pimple/pimple/ext/pimple/.gitignore
+++ /dev/null
@@ -1,30 +0,0 @@
-*.sw*
-.deps
-Makefile
-Makefile.fragments
-Makefile.global
-Makefile.objects
-acinclude.m4
-aclocal.m4
-build/
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.nice
-config.status
-config.sub
-configure
-configure.in
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-run-tests.php
-*.loT
-.libs/
-modules/
-*.la
-*.lo
diff --git a/vendor/pimple/pimple/ext/pimple/README.md b/vendor/pimple/pimple/ext/pimple/README.md
deleted file mode 100644
index 7b39eb29..00000000
--- a/vendor/pimple/pimple/ext/pimple/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-This is Pimple 2 implemented in C
-
-* PHP >= 5.3
-* Not tested under Windows, might work
-
-Install
-=======
-
-    > phpize
-    > ./configure
-    > make
-    > make install
diff --git a/vendor/pimple/pimple/ext/pimple/config.m4 b/vendor/pimple/pimple/ext/pimple/config.m4
deleted file mode 100644
index 3a6e9aae..00000000
--- a/vendor/pimple/pimple/ext/pimple/config.m4
+++ /dev/null
@@ -1,63 +0,0 @@
-dnl $Id$
-dnl config.m4 for extension pimple
-
-dnl Comments in this file start with the string 'dnl'.
-dnl Remove where necessary. This file will not work
-dnl without editing.
-
-dnl If your extension references something external, use with:
-
-dnl PHP_ARG_WITH(pimple, for pimple support,
-dnl Make sure that the comment is aligned:
-dnl [  --with-pimple             Include pimple support])
-
-dnl Otherwise use enable:
-
-PHP_ARG_ENABLE(pimple, whether to enable pimple support,
-dnl Make sure that the comment is aligned:
-[  --enable-pimple           Enable pimple support])
-
-if test "$PHP_PIMPLE" != "no"; then
-  dnl Write more examples of tests here...
-
-  dnl # --with-pimple -> check with-path
-  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
-  dnl SEARCH_FOR="/include/pimple.h"  # you most likely want to change this
-  dnl if test -r $PHP_PIMPLE/$SEARCH_FOR; then # path given as parameter
-  dnl   PIMPLE_DIR=$PHP_PIMPLE
-  dnl else # search default path list
-  dnl   AC_MSG_CHECKING([for pimple files in default path])
-  dnl   for i in $SEARCH_PATH ; do
-  dnl     if test -r $i/$SEARCH_FOR; then
-  dnl       PIMPLE_DIR=$i
-  dnl       AC_MSG_RESULT(found in $i)
-  dnl     fi
-  dnl   done
-  dnl fi
-  dnl
-  dnl if test -z "$PIMPLE_DIR"; then
-  dnl   AC_MSG_RESULT([not found])
-  dnl   AC_MSG_ERROR([Please reinstall the pimple distribution])
-  dnl fi
-
-  dnl # --with-pimple -> add include path
-  dnl PHP_ADD_INCLUDE($PIMPLE_DIR/include)
-
-  dnl # --with-pimple -> check for lib and symbol presence
-  dnl LIBNAME=pimple # you may want to change this
-  dnl LIBSYMBOL=pimple # you most likely want to change this
-
-  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
-  dnl [
-  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $PIMPLE_DIR/lib, PIMPLE_SHARED_LIBADD)
-  dnl   AC_DEFINE(HAVE_PIMPLELIB,1,[ ])
-  dnl ],[
-  dnl   AC_MSG_ERROR([wrong pimple lib version or lib not found])
-  dnl ],[
-  dnl   -L$PIMPLE_DIR/lib -lm
-  dnl ])
-  dnl
-  dnl PHP_SUBST(PIMPLE_SHARED_LIBADD)
-
-  PHP_NEW_EXTENSION(pimple, pimple.c, $ext_shared)
-fi
diff --git a/vendor/pimple/pimple/ext/pimple/config.w32 b/vendor/pimple/pimple/ext/pimple/config.w32
deleted file mode 100644
index 39857b32..00000000
--- a/vendor/pimple/pimple/ext/pimple/config.w32
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id$
-// vim:ft=javascript
-
-// If your extension references something external, use ARG_WITH
-// ARG_WITH("pimple", "for pimple support", "no");
-
-// Otherwise, use ARG_ENABLE
-// ARG_ENABLE("pimple", "enable pimple support", "no");
-
-if (PHP_PIMPLE != "no") {
-	EXTENSION("pimple", "pimple.c");
-}
-
diff --git a/vendor/pimple/pimple/ext/pimple/php_pimple.h b/vendor/pimple/pimple/ext/pimple/php_pimple.h
deleted file mode 100644
index eed7c173..00000000
--- a/vendor/pimple/pimple/ext/pimple/php_pimple.h
+++ /dev/null
@@ -1,137 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef PHP_PIMPLE_H
-#define PHP_PIMPLE_H
-
-extern zend_module_entry pimple_module_entry;
-#define phpext_pimple_ptr &pimple_module_entry
-
-#ifdef PHP_WIN32
-#	define PHP_PIMPLE_API __declspec(dllexport)
-#elif defined(__GNUC__) && __GNUC__ >= 4
-#	define PHP_PIMPLE_API __attribute__ ((visibility("default")))
-#else
-#	define PHP_PIMPLE_API
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-#define PIMPLE_VERSION "3.2.3-DEV"
-
-#define PIMPLE_NS "Pimple"
-#define PSR_CONTAINER_NS "Psr\\Container"
-#define PIMPLE_EXCEPTION_NS "Pimple\\Exception"
-
-#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM   5
-#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
-
-#define PIMPLE_DEPRECATE do { \
-	int er = EG(error_reporting); \
-	EG(error_reporting) = 0;\
-	php_error(E_DEPRECATED, "The Pimple C extension is deprecated since version 3.1 and will be removed in 4.0."); \
-	EG(error_reporting) = er; \
-} while (0);
-
-zend_module_entry *get_module(void);
-
-PHP_MINIT_FUNCTION(pimple);
-PHP_MINFO_FUNCTION(pimple);
-
-PHP_METHOD(FrozenServiceException, __construct);
-PHP_METHOD(InvalidServiceIdentifierException, __construct);
-PHP_METHOD(UnknownIdentifierException, __construct);
-
-PHP_METHOD(Pimple, __construct);
-PHP_METHOD(Pimple, factory);
-PHP_METHOD(Pimple, protect);
-PHP_METHOD(Pimple, raw);
-PHP_METHOD(Pimple, extend);
-PHP_METHOD(Pimple, keys);
-PHP_METHOD(Pimple, register);
-PHP_METHOD(Pimple, offsetSet);
-PHP_METHOD(Pimple, offsetUnset);
-PHP_METHOD(Pimple, offsetGet);
-PHP_METHOD(Pimple, offsetExists);
-
-PHP_METHOD(PimpleClosure, invoker);
-
-typedef struct _pimple_bucket_value {
-	zval *value; /* Must be the first element */
-	zval *raw;
-	zend_object_handle handle_num;
-	enum {
-		PIMPLE_IS_PARAM   = 0,
-		PIMPLE_IS_SERVICE = 2
-	} type;
-	zend_bool initialized;
-	zend_fcall_info_cache fcc;
-} pimple_bucket_value;
-
-typedef struct _pimple_object {
-	zend_object zobj;
-	HashTable values;
-	HashTable factories;
-	HashTable protected;
-} pimple_object;
-
-typedef struct _pimple_closure_object {
-	zend_object zobj;
-	zval *callable;
-	zval *factory;
-} pimple_closure_object;
-
-static const char sensiolabs_logo[] = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAAUCAMAAABvRTlyAAAAz1BMVEUAAAAAAAAAAAAsThWB5j4AAACD6T8AAACC6D+C6D6C6D+C6D4AAAAAAACC6D4AAAAAAACC6D8AAAAAAAAAAAAAAAAAAAAAAACC6D4AAAAAAAAAAACC6D4AAAAAAAAAAAAAAAAAAAAAAACC6D8AAACC6D4AAAAAAAAAAAAAAAAAAACC6D8AAACC6D6C6D+B6D+C6D+C6D+C6D8AAACC6D6C6D4AAACC6D/K/2KC6D+B6D6C6D6C6D+C6D8sTxUyWRhEeiEAAACC6D+C5z6B6D7drnEVAAAAQXRSTlMAE3oCNSUuDHFHzxaF9UFsu+irX+zlKzYimaJXktyOSFD6BolxqT7QGMMdarMIpuO28r9EolXKgR16OphfXYd4V14GtB4AAAMpSURBVEjHvVSJctowEF1jjME2RziMwUCoMfd9heZqG4n//6buLpJjkmYm03byZmxJa2nf6u2uQcG2bfhqRN4LoTKBzyGDm68M7mAwcOEdjo4zhA/Rf9Go/CVtTgiRhXfIC3EDH8F/eUX1/9KexRo+QgOdtHDsEe/sM7QT32/+K61Z1LFXcXJxN4pTbu1aTQUzuy2PIA0rDo0/0Aa5XFaJvKaVTrubywXvaa1Wq4Vu/Snr3Y7Aojh4VccwykW2N2oQ8wmjyut6+Q1t5ywIG5Npj1sh5E0B7YOzFDjfuRfaOh3O+MbbVNfTWS9COZk3Obd2su5d0a6IU9KLREbw8gEehWSr1r2sPWciXLG38r5NdW0xu9eioU87omjC9yNaMi5GNf6WppVSOqXCFkmCvMB3p9SROLoYQn5pDgQOujA1xjYvqH+plUdkwnmII8VxR/PKYkrfLLomhVlE3b/LhNbNr7hp0H2JaOc4v8dFB58HSsFTSafaqtY1sT3GO8wsy5rhokYPlRJdjPMajyYqTt1EHF/2uqSWQWmAjCUSmQ1MS3g8Btf1XOsy7YIC0CB1b5Xw1Vhba0zbxiCAQLH9TNPmHJXQUtJAN0KcDsoqLxsNvJrJExa7mKIdp2lRE2WexiS4pqWk/0jROlw6K6bV9YOBDGAuqMJ0bnuUKGB0L27bxgRhGEbzihbhxxXaQC88Vkwq8ldCi86RApWUb0Q+4VDosBCc+1s81lUdnBavH4Zp2mm3O44USwOfvSo9oBiwpFg71lMS1VKJLKljS3j9p+fOTvXXlsSNuEv6YPaZda9uRope0VJfKdo7fPiYfSmvFjXQbkhY0d9hCbBWIktRgEDieDhf1N3wbbkmNNgRy8hyl620yGQat/grV3HMpc2HDKTVmOPFz6ylPCKt/nXcAyV260jaAowwIW0YuBzrOgb/KrddZS9OmJaLgpWK4JX2DDuklcLZSDGcn8Vmx9YDNvT6UsjyBApRyFQVX7Vxm9TGxE16nmfRd8/zQoDmggQOTRh5Hv8pMt9Q/L2JmSwkMCE7dA4BuDjHJwfu0Om4QAhOjrN5XkIatglfiN/bUPdCQFjTYgAAAABJRU5ErkJggg==\">";
-
-static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC);
-
-static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
-static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
-
-static void pimple_bucket_dtor(pimple_bucket_value *bucket);
-static void pimple_free_bucket(pimple_bucket_value *bucket);
-
-static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC);
-static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC);
-static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC);
-static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC);
-static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC);
-static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC);
-
-static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC);
-static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC);
-static zend_function *pimple_closure_get_constructor(zval * TSRMLS_DC);
-static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
-
-#ifdef ZTS
-#define PIMPLE_G(v) TSRMG(pimple_globals_id, zend_pimple_globals *, v)
-#else
-#define PIMPLE_G(v) (pimple_globals.v)
-#endif
-
-#endif	/* PHP_PIMPLE_H */
-
diff --git a/vendor/pimple/pimple/ext/pimple/pimple.c b/vendor/pimple/pimple/ext/pimple/pimple.c
deleted file mode 100644
index c80499b3..00000000
--- a/vendor/pimple/pimple/ext/pimple/pimple.c
+++ /dev/null
@@ -1,1114 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "php_pimple.h"
-#include "pimple_compat.h"
-#include "zend_interfaces.h"
-#include "zend.h"
-#include "Zend/zend_closures.h"
-#include "ext/spl/spl_exceptions.h"
-#include "Zend/zend_exceptions.h"
-#include "main/php_output.h"
-#include "SAPI.h"
-
-static zend_class_entry *pimple_ce_PsrContainerInterface;
-static zend_class_entry *pimple_ce_PsrContainerExceptionInterface;
-static zend_class_entry *pimple_ce_PsrNotFoundExceptionInterface;
-
-static zend_class_entry *pimple_ce_ExpectedInvokableException;
-static zend_class_entry *pimple_ce_FrozenServiceException;
-static zend_class_entry *pimple_ce_InvalidServiceIdentifierException;
-static zend_class_entry *pimple_ce_UnknownIdentifierException;
-
-static zend_class_entry *pimple_ce;
-static zend_object_handlers pimple_object_handlers;
-static zend_class_entry *pimple_closure_ce;
-static zend_class_entry *pimple_serviceprovider_ce;
-static zend_object_handlers pimple_closure_object_handlers;
-static zend_internal_function pimple_closure_invoker_function;
-
-#define FETCH_DIM_HANDLERS_VARS 	pimple_object *pimple_obj = NULL; \
-									ulong index; \
-									pimple_obj = (pimple_object *)zend_object_store_get_object(object TSRMLS_CC); \
-
-#define PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS	do { \
-	if (ce != pimple_ce) { \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetget"), (void **)&function); \
-		if (function->common.scope != ce) { /* if the function is not defined in this actual class */ \
-			pimple_object_handlers.read_dimension = pimple_object_read_dimension; /* then overwrite the handler to use custom one */ \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetset"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetexists"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
-		} \
-		zend_hash_find(&ce->function_table, ZEND_STRS("offsetunset"), (void **)&function); \
-		if (function->common.scope != ce) { \
-			pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
-		} \
-	} else { \
-		pimple_object_handlers.read_dimension = pimple_object_read_dimension; \
-		pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
-		pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
-		pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
-	}\
-											} while(0);
-
-#define PIMPLE_CALL_CB	do { \
-			zend_fcall_info_argn(&fci TSRMLS_CC, 1, &object); \
-			fci.size           = sizeof(fci); \
-			fci.object_ptr     = retval->fcc.object_ptr; \
-			fci.function_name  = retval->value; \
-			fci.no_separation  = 1; \
-			fci.retval_ptr_ptr = &retval_ptr_ptr; \
-\
-			zend_call_function(&fci, &retval->fcc TSRMLS_CC); \
-			efree(fci.params); \
-			if (EG(exception)) { \
-				return EG(uninitialized_zval_ptr); \
-			} \
-						} while(0);
-
-
-/* Psr\Container\ContainerInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_get, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_has, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_PsrContainerInterface_functions[] = {
-	PHP_ABSTRACT_ME(ContainerInterface, get, arginfo_pimple_PsrContainerInterface_get)
-	PHP_ABSTRACT_ME(ContainerInterface, has, arginfo_pimple_PsrContainerInterface_has)
-	PHP_FE_END
-};
-
-/* Psr\Container\ContainerExceptionInterface */
-static const zend_function_entry pimple_ce_PsrContainerExceptionInterface_functions[] = {
-	PHP_FE_END
-};
-
-/* Psr\Container\NotFoundExceptionInterface */
-static const zend_function_entry pimple_ce_PsrNotFoundExceptionInterface_functions[] = {
-	PHP_FE_END
-};
-
-/* Pimple\Exception\FrozenServiceException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_FrozenServiceException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_FrozenServiceException_functions[] = {
-	PHP_ME(FrozenServiceException, __construct, arginfo_FrozenServiceException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Exception\InvalidServiceIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_InvalidServiceIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_InvalidServiceIdentifierException_functions[] = {
-	PHP_ME(InvalidServiceIdentifierException, __construct, arginfo_InvalidServiceIdentifierException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Exception\UnknownIdentifierException */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_UnknownIdentifierException___construct, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_UnknownIdentifierException_functions[] = {
-	PHP_ME(UnknownIdentifierException, __construct, arginfo_UnknownIdentifierException___construct, ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\Container */
-ZEND_BEGIN_ARG_INFO_EX(arginfo___construct, 0, 0, 0)
-ZEND_ARG_ARRAY_INFO(0, value, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetset, 0, 0, 2)
-ZEND_ARG_INFO(0, offset)
-ZEND_ARG_INFO(0, value)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetget, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetexists, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetunset, 0, 0, 1)
-ZEND_ARG_INFO(0, offset)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_factory, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_protect, 0, 0, 1)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_raw, 0, 0, 1)
-ZEND_ARG_INFO(0, id)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_extend, 0, 0, 2)
-ZEND_ARG_INFO(0, id)
-ZEND_ARG_INFO(0, callable)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_keys, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, provider, Pimple\\ServiceProviderInterface, 0)
-ZEND_ARG_ARRAY_INFO(0, values, 1)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_ce_functions[] = {
-	PHP_ME(Pimple, __construct,	arginfo___construct, ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, factory,         arginfo_factory,         ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, protect,         arginfo_protect,         ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, raw,             arginfo_raw,             ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, extend,          arginfo_extend,          ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, keys,            arginfo_keys,            ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, register,		arginfo_register,		 ZEND_ACC_PUBLIC)
-
-	PHP_ME(Pimple, offsetSet,       arginfo_offsetset,       ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetGet,       arginfo_offsetget,       ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetExists,    arginfo_offsetexists,    ZEND_ACC_PUBLIC)
-	PHP_ME(Pimple, offsetUnset,     arginfo_offsetunset,     ZEND_ACC_PUBLIC)
-	PHP_FE_END
-};
-
-/* Pimple\ServiceProviderInterface */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_serviceprovider_register, 0, 0, 1)
-ZEND_ARG_OBJ_INFO(0, pimple, Pimple\\Container, 0)
-ZEND_END_ARG_INFO()
-
-static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = {
-	PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register)
-	PHP_FE_END
-};
-
-/* parent::__construct(sprintf("Something with %s", $arg1)) */
-static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC)
-{
-	zend_class_entry *ce = Z_OBJCE_P(this_ptr);
-	char *message = NULL;
-	int message_len;
-	zval *constructor_arg;
-
-	message_len = spprintf(&message, 0, format, arg1);
-	ALLOC_INIT_ZVAL(constructor_arg);
-	ZVAL_STRINGL(constructor_arg, message, message_len, 1);
-
-	zend_call_method_with_1_params(&this_ptr, ce, &ce->parent->constructor, "__construct", NULL, constructor_arg);
-
-	efree(message);
-	zval_ptr_dtor(&constructor_arg);
-}
-
-/**
- * Pass a single string parameter to exception constructor and throw
- */
-static void pimple_throw_exception_string(zend_class_entry *ce, const char *message, zend_uint message_len TSRMLS_DC)
-{
-	zval *exception, *param;
-
-	ALLOC_INIT_ZVAL(exception);
-	object_init_ex(exception, ce);
-
-	ALLOC_INIT_ZVAL(param);
-	ZVAL_STRINGL(param, message, message_len, 1);
-
-	zend_call_method_with_1_params(&exception, ce, &ce->constructor, "__construct", NULL, param);
-
-	zend_throw_exception_object(exception TSRMLS_CC);
-
-	zval_ptr_dtor(&param);
-}
-
-static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC)
-{
-	zend_object_std_dtor(&obj->zobj TSRMLS_CC);
-	if (obj->factory) {
-		zval_ptr_dtor(&obj->factory);
-	}
-	if (obj->callable) {
-		zval_ptr_dtor(&obj->callable);
-	}
-	efree(obj);
-}
-
-static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC)
-{
-	zend_hash_destroy(&obj->factories);
-	zend_hash_destroy(&obj->protected);
-	zend_hash_destroy(&obj->values);
-	zend_object_std_dtor(&obj->zobj TSRMLS_CC);
-	efree(obj);
-}
-
-static void pimple_free_bucket(pimple_bucket_value *bucket)
-{
-	if (bucket->raw) {
-		zval_ptr_dtor(&bucket->raw);
-	}
-}
-
-static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	pimple_closure_object *pimple_closure_obj = NULL;
-
-	pimple_closure_obj = ecalloc(1, sizeof(pimple_closure_object));
-	ZEND_OBJ_INIT(&pimple_closure_obj->zobj, ce);
-
-	pimple_closure_object_handlers.get_constructor = pimple_closure_get_constructor;
-	retval.handlers = &pimple_closure_object_handlers;
-	retval.handle   = zend_objects_store_put(pimple_closure_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_closure_free_object_storage, NULL TSRMLS_CC);
-
-	return retval;
-}
-
-static zend_function *pimple_closure_get_constructor(zval *obj TSRMLS_DC)
-{
-	zend_error(E_ERROR, "Pimple\\ContainerClosure is an internal class and cannot be instantiated");
-
-	return NULL;
-}
-
-static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC)
-{
-	*zobj_ptr = obj;
-	*ce_ptr   = Z_OBJCE_P(obj);
-	*fptr_ptr = (zend_function *)&pimple_closure_invoker_function;
-
-	return SUCCESS;
-}
-
-static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC)
-{
-	zend_object_value retval;
-	pimple_object *pimple_obj  = NULL;
-	zend_function *function    = NULL;
-
-	pimple_obj = emalloc(sizeof(pimple_object));
-	ZEND_OBJ_INIT(&pimple_obj->zobj, ce);
-
-	PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS
-
-	retval.handlers = &pimple_object_handlers;
-	retval.handle   = zend_objects_store_put(pimple_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_free_object_storage, NULL TSRMLS_CC);
-
-	zend_hash_init(&pimple_obj->factories, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-	zend_hash_init(&pimple_obj->protected, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-	zend_hash_init(&pimple_obj->values, PIMPLE_DEFAULT_ZVAL_VALUES_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
-
-	return retval;
-}
-
-static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value pimple_value = {0}, *found_value = NULL;
-	ulong hash;
-
-	pimple_zval_to_pimpleval(value, &pimple_value TSRMLS_CC);
-
-	if (!offset) {/* $p[] = 'foo' when not overloaded */
-		zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(value);
-		return;
-	}
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		hash = zend_hash_func(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_hash_quick_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void **)&found_value);
-		if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
-			pimple_free_bucket(&pimple_value);
-			pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-			return;
-		}
-		if (zend_hash_quick_update(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
-			pimple_free_bucket(&pimple_value);
-			return;
-		}
-		Z_ADDREF_P(value);
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		zend_hash_index_find(&pimple_obj->values, index, (void **)&found_value);
-		if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
-			pimple_free_bucket(&pimple_value);
-			convert_to_string(offset);
-			pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-			return;
-		}
-		if (zend_hash_index_update(&pimple_obj->values, index, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
-			pimple_free_bucket(&pimple_value);
-			return;
-		}
-		Z_ADDREF_P(value);
-	break;
-	case IS_NULL: /* $p[] = 'foo' when overloaded */
-		zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(value);
-	break;
-	default:
-		pimple_free_bucket(&pimple_value);
-		zend_error(E_WARNING, "Unsupported offset type");
-	}
-}
-
-static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		zend_symtable_del(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_symtable_del(&pimple_obj->factories, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-		zend_symtable_del(&pimple_obj->protected, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		zend_hash_index_del(&pimple_obj->values, index);
-		zend_hash_index_del(&pimple_obj->factories, index);
-		zend_hash_index_del(&pimple_obj->protected, index);
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-	}
-}
-
-static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value *retval = NULL;
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == SUCCESS) {
-			switch (check_empty) {
-			case 0: /* isset */
-				return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;) */
-			case 1: /* empty */
-			default:
-				return zend_is_true(retval->value);
-			}
-		}
-		return 0;
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == SUCCESS) {
-			switch (check_empty) {
-				case 0: /* isset */
-					return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;)*/
-				case 1: /* empty */
-				default:
-					return zend_is_true(retval->value);
-			}
-		}
-		return 0;
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-		return 0;
-	}
-}
-
-static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
-{
-	FETCH_DIM_HANDLERS_VARS
-
-	pimple_bucket_value *retval = NULL;
-	zend_fcall_info fci         = {0};
-	zval *retval_ptr_ptr        = NULL;
-
-	switch (Z_TYPE_P(offset)) {
-	case IS_STRING:
-		if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == FAILURE) {
-			pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-
-			return EG(uninitialized_zval_ptr);
-		}
-	break;
-	case IS_DOUBLE:
-	case IS_BOOL:
-	case IS_LONG:
-		if (Z_TYPE_P(offset) == IS_DOUBLE) {
-			index = (ulong)Z_DVAL_P(offset);
-		} else {
-			index = Z_LVAL_P(offset);
-		}
-		if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == FAILURE) {
-			return EG(uninitialized_zval_ptr);
-		}
-	break;
-	case IS_NULL: /* $p[][3] = 'foo' first dim access */
-		return EG(uninitialized_zval_ptr);
-	break;
-	default:
-		zend_error(E_WARNING, "Unsupported offset type");
-		return EG(uninitialized_zval_ptr);
-	}
-
-	if(retval->type == PIMPLE_IS_PARAM) {
-		return retval->value;
-	}
-
-	if (zend_hash_index_exists(&pimple_obj->protected, retval->handle_num)) {
-		/* Service is protected, return the value every time */
-		return retval->value;
-	}
-
-	if (zend_hash_index_exists(&pimple_obj->factories, retval->handle_num)) {
-		/* Service is a factory, call it every time and never cache its result */
-		PIMPLE_CALL_CB
-		Z_DELREF_P(retval_ptr_ptr); /* fetch dim addr will increment refcount */
-		return retval_ptr_ptr;
-	}
-
-	if (retval->initialized == 1) {
-		/* Service has already been called, return its cached value */
-		return retval->value;
-	}
-
-	ALLOC_INIT_ZVAL(retval->raw);
-	MAKE_COPY_ZVAL(&retval->value, retval->raw);
-
-	PIMPLE_CALL_CB
-
-	retval->initialized = 1;
-	zval_ptr_dtor(&retval->value);
-	retval->value = retval_ptr_ptr;
-
-	return retval->value;
-}
-
-static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
-	if (Z_TYPE_P(_zval) != IS_OBJECT) {
-		return FAILURE;
-	}
-
-	if (_pimple_bucket_value->fcc.called_scope) {
-		return SUCCESS;
-	}
-
-	if (Z_OBJ_HANDLER_P(_zval, get_closure) && Z_OBJ_HANDLER_P(_zval, get_closure)(_zval, &_pimple_bucket_value->fcc.calling_scope, &_pimple_bucket_value->fcc.function_handler, &_pimple_bucket_value->fcc.object_ptr TSRMLS_CC) == SUCCESS) {
-		_pimple_bucket_value->fcc.called_scope = _pimple_bucket_value->fcc.calling_scope;
-		return SUCCESS;
-	} else {
-		return FAILURE;
-	}
-}
-
-static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
-{
-	_pimple_bucket_value->value = _zval;
-
-	if (Z_TYPE_P(_zval) != IS_OBJECT) {
-		return PIMPLE_IS_PARAM;
-	}
-
-	if (pimple_zval_is_valid_callback(_zval, _pimple_bucket_value TSRMLS_CC) == SUCCESS) {
-		_pimple_bucket_value->type       = PIMPLE_IS_SERVICE;
-		_pimple_bucket_value->handle_num = Z_OBJ_HANDLE_P(_zval);
-	}
-
-	return PIMPLE_IS_SERVICE;
-}
-
-static void pimple_bucket_dtor(pimple_bucket_value *bucket)
-{
-	zval_ptr_dtor(&bucket->value);
-	pimple_free_bucket(bucket);
-}
-
-PHP_METHOD(FrozenServiceException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Cannot override frozen service \"%s\".", id TSRMLS_CC);
-}
-
-PHP_METHOD(InvalidServiceIdentifierException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" does not contain an object definition.", id TSRMLS_CC);
-}
-
-PHP_METHOD(UnknownIdentifierException, __construct)
-{
-	char *id = NULL;
-	int id_len;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
-		return;
-	}
-	pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" is not defined.", id TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, protect)
-{
-	zval *protected     = NULL;
-	pimple_object *pobj = NULL;
-	pimple_bucket_value bucket = {0};
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &protected) == FAILURE) {
-		return;
-	}
-
-	if (pimple_zval_is_valid_callback(protected, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Callable is not a Closure or invokable object.", 0 TSRMLS_CC);
-		return;
-	}
-
-	pimple_zval_to_pimpleval(protected, &bucket TSRMLS_CC);
-	pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	if (zend_hash_index_update(&pobj->protected, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
-		Z_ADDREF_P(protected);
-		RETURN_ZVAL(protected, 1 , 0);
-	} else {
-		pimple_free_bucket(&bucket);
-	}
-	RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, raw)
-{
-	zval *offset = NULL;
-	pimple_object *pobj        = NULL;
-	pimple_bucket_value *value = NULL;
-	ulong index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	switch (Z_TYPE_P(offset)) {
-		case IS_STRING:
-			if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-		break;
-		case IS_DOUBLE:
-		case IS_BOOL:
-		case IS_LONG:
-			if (Z_TYPE_P(offset) == IS_DOUBLE) {
-				index = (ulong)Z_DVAL_P(offset);
-			} else {
-				index = Z_LVAL_P(offset);
-			}
-			if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
-				RETURN_NULL();
-			}
-		break;
-		case IS_NULL:
-		default:
-			zend_error(E_WARNING, "Unsupported offset type");
-	}
-
-	if (value->raw) {
-		RETVAL_ZVAL(value->raw, 1, 0);
-	} else {
-		RETVAL_ZVAL(value->value, 1, 0);
-	}
-}
-
-PHP_METHOD(Pimple, extend)
-{
-	zval *offset = NULL, *callable = NULL, *pimple_closure_obj = NULL;
-	pimple_bucket_value bucket = {0}, *value = NULL;
-	pimple_object *pobj          = NULL;
-	pimple_closure_object *pcobj = NULL;
-	ulong index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &callable) == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	switch (Z_TYPE_P(offset)) {
-		case IS_STRING:
-			if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-
-			if (value->type != PIMPLE_IS_SERVICE) {
-				pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
-				int er = EG(error_reporting);
-				EG(error_reporting) = 0;
-				php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%s\" should be protected?", Z_STRVAL_P(offset));
-				EG(error_reporting) = er;
-			}
-		break;
-		case IS_DOUBLE:
-		case IS_BOOL:
-		case IS_LONG:
-			if (Z_TYPE_P(offset) == IS_DOUBLE) {
-				index = (ulong)Z_DVAL_P(offset);
-			} else {
-				index = Z_LVAL_P(offset);
-			}
-			if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
-				convert_to_string(offset);
-				pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (value->type != PIMPLE_IS_SERVICE) {
-				convert_to_string(offset);
-				pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
-				RETURN_NULL();
-			}
-			if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
-				int er = EG(error_reporting);
-				EG(error_reporting) = 0;
-				php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%ld\" should be protected?", index);
-				EG(error_reporting) = er;
-			}
-		break;
-		case IS_NULL:
-		default:
-			zend_error(E_WARNING, "Unsupported offset type");
-	}
-
-	if (pimple_zval_is_valid_callback(callable, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Extension service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
-		RETURN_NULL();
-	}
-	pimple_free_bucket(&bucket);
-
-	ALLOC_INIT_ZVAL(pimple_closure_obj);
-	object_init_ex(pimple_closure_obj, pimple_closure_ce);
-
-	pcobj = zend_object_store_get_object(pimple_closure_obj TSRMLS_CC);
-	pcobj->callable = callable;
-	pcobj->factory  = value->value;
-	Z_ADDREF_P(callable);
-	Z_ADDREF_P(value->value);
-
-	if (zend_hash_index_exists(&pobj->factories, value->handle_num)) {
-		pimple_zval_to_pimpleval(pimple_closure_obj, &bucket TSRMLS_CC);
-		zend_hash_index_del(&pobj->factories, value->handle_num);
-		zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL);
-		Z_ADDREF_P(pimple_closure_obj);
-	}
-
-	pimple_object_write_dimension(getThis(), offset, pimple_closure_obj TSRMLS_CC);
-
-	RETVAL_ZVAL(pimple_closure_obj, 1, 1);
-}
-
-PHP_METHOD(Pimple, keys)
-{
-	HashPosition pos;
-	pimple_object *pobj = NULL;
-	zval **value        = NULL;
-	zval *endval        = NULL;
-	char *str_index     = NULL;
-	int str_len;
-	ulong num_index;
-
-	if (zend_parse_parameters_none() == FAILURE) {
-		return;
-	}
-
-	pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-	array_init_size(return_value, zend_hash_num_elements(&pobj->values));
-
-	zend_hash_internal_pointer_reset_ex(&pobj->values, &pos);
-
-	while(zend_hash_get_current_data_ex(&pobj->values, (void **)&value, &pos) == SUCCESS) {
-		MAKE_STD_ZVAL(endval);
-		switch (zend_hash_get_current_key_ex(&pobj->values, &str_index, (uint *)&str_len, &num_index, 0, &pos)) {
-			case HASH_KEY_IS_STRING:
-				ZVAL_STRINGL(endval, str_index, str_len - 1, 1);
-				zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
-			break;
-			case HASH_KEY_IS_LONG:
-				ZVAL_LONG(endval, num_index);
-				zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
-			break;
-		}
-	zend_hash_move_forward_ex(&pobj->values, &pos);
-	}
-}
-
-PHP_METHOD(Pimple, factory)
-{
-	zval *factory       = NULL;
-	pimple_object *pobj = NULL;
-	pimple_bucket_value bucket = {0};
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &factory) == FAILURE) {
-		return;
-	}
-
-	if (pimple_zval_is_valid_callback(factory, &bucket TSRMLS_CC) == FAILURE) {
-		pimple_free_bucket(&bucket);
-		zend_throw_exception(pimple_ce_ExpectedInvokableException, "Service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
-		return;
-	}
-
-	pimple_zval_to_pimpleval(factory, &bucket TSRMLS_CC);
-	pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	if (zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
-		Z_ADDREF_P(factory);
-		RETURN_ZVAL(factory, 1 , 0);
-	} else {
-		pimple_free_bucket(&bucket);
-	}
-
-	RETURN_FALSE;
-}
-
-PHP_METHOD(Pimple, offsetSet)
-{
-	zval *offset = NULL, *value = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &value) == FAILURE) {
-		return;
-	}
-
-	pimple_object_write_dimension(getThis(), offset, value TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetGet)
-{
-	zval *offset = NULL, *retval = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	retval = pimple_object_read_dimension(getThis(), offset, 0 TSRMLS_CC);
-
-	RETVAL_ZVAL(retval, 1, 0);
-}
-
-PHP_METHOD(Pimple, offsetUnset)
-{
-	zval *offset = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	pimple_object_unset_dimension(getThis(), offset TSRMLS_CC);
-}
-
-PHP_METHOD(Pimple, offsetExists)
-{
-	zval *offset = NULL;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
-		return;
-	}
-
-	RETVAL_BOOL(pimple_object_has_dimension(getThis(), offset, 1 TSRMLS_CC));
-}
-
-PHP_METHOD(Pimple, register)
-{
-	zval *provider;
-	zval **data;
-	zval *retval = NULL;
-	zval key;
-
-	HashTable *array = NULL;
-	HashPosition pos;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|h", &provider, pimple_serviceprovider_ce, &array) == FAILURE) {
-		return;
-	}
-
-	RETVAL_ZVAL(getThis(), 1, 0);
-
-	zend_call_method_with_1_params(&provider, Z_OBJCE_P(provider), NULL, "register", &retval, getThis());
-
-	if (retval) {
-		zval_ptr_dtor(&retval);
-	}
-
-	if (!array) {
-		return;
-	}
-
-	zend_hash_internal_pointer_reset_ex(array, &pos);
-
-	while(zend_hash_get_current_data_ex(array, (void **)&data, &pos) == SUCCESS) {
-		zend_hash_get_current_key_zval_ex(array, &key, &pos);
-		pimple_object_write_dimension(getThis(), &key, *data TSRMLS_CC);
-		zend_hash_move_forward_ex(array, &pos);
-	}
-}
-
-PHP_METHOD(Pimple, __construct)
-{
-	zval *values = NULL, **pData = NULL, offset;
-	HashPosition pos;
-	char *str_index = NULL;
-	zend_uint str_length;
-	ulong num_index;
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a!", &values) == FAILURE) {
-		return;
-	}
-
-	PIMPLE_DEPRECATE
-
-	if (!values) {
-		return;
-	}
-
-	zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos);
-	while (zend_hash_has_more_elements_ex(Z_ARRVAL_P(values), &pos) == SUCCESS) {
-			zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&pData, &pos);
-			zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &str_index, &str_length, &num_index, 0, &pos);
-			INIT_ZVAL(offset);
-			if (zend_hash_get_current_key_type_ex(Z_ARRVAL_P(values), &pos) == HASH_KEY_IS_LONG) {
-				ZVAL_LONG(&offset, num_index);
-			} else {
-				ZVAL_STRINGL(&offset, str_index, (str_length - 1), 0);
-			}
-		pimple_object_write_dimension(getThis(), &offset, *pData TSRMLS_CC);
-		zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos);
-	}
-}
-
-/*
- * This is PHP code snippet handling extend()s calls :
-
-  $extended = function ($c) use ($callable, $factory) {
-      return $callable($factory($c), $c);
-  };
-
- */
-PHP_METHOD(PimpleClosure, invoker)
-{
-	pimple_closure_object *pcobj = NULL;
-	zval *arg = NULL, *retval = NULL, *newretval = NULL;
-	zend_fcall_info fci        = {0};
-	zval **args[2];
-
-	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
-		return;
-	}
-
-	pcobj = zend_object_store_get_object(getThis() TSRMLS_CC);
-
-	fci.function_name = pcobj->factory;
-	args[0] = &arg;
-	zend_fcall_info_argp(&fci TSRMLS_CC, 1, args);
-	fci.retval_ptr_ptr = &retval;
-	fci.size = sizeof(fci);
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
-		efree(fci.params);
-		return; /* Should here return default zval */
-	}
-
-	efree(fci.params);
-	memset(&fci, 0, sizeof(fci));
-	fci.size = sizeof(fci);
-
-	fci.function_name = pcobj->callable;
-	args[0] = &retval;
-	args[1] = &arg;
-	zend_fcall_info_argp(&fci TSRMLS_CC, 2, args);
-	fci.retval_ptr_ptr = &newretval;
-
-	if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
-		efree(fci.params);
-		zval_ptr_dtor(&retval);
-		return;
-	}
-
-	efree(fci.params);
-	zval_ptr_dtor(&retval);
-
-	RETVAL_ZVAL(newretval, 1 ,1);
-}
-
-PHP_MINIT_FUNCTION(pimple)
-{
-	zend_class_entry tmp_ce_PsrContainerInterface, tmp_ce_PsrContainerExceptionInterface, tmp_ce_PsrNotFoundExceptionInterface;
-	zend_class_entry tmp_ce_ExpectedInvokableException, tmp_ce_FrozenServiceException, tmp_ce_InvalidServiceIdentifierException, tmp_ce_UnknownIdentifierException;
-	zend_class_entry tmp_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce;
-
-	/* Psr\Container namespace */
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerInterface,          PSR_CONTAINER_NS, "ContainerInterface",           pimple_ce_PsrContainerInterface_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerExceptionInterface, PSR_CONTAINER_NS, "ContainerExceptionInterface", pimple_ce_PsrContainerExceptionInterface_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_PsrNotFoundExceptionInterface,  PSR_CONTAINER_NS, "NotFoundExceptionInterface",  pimple_ce_PsrNotFoundExceptionInterface_functions);
-
-	pimple_ce_PsrContainerInterface          = zend_register_internal_interface(&tmp_ce_PsrContainerInterface TSRMLS_CC);
-	pimple_ce_PsrContainerExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrContainerExceptionInterface TSRMLS_CC);
-	pimple_ce_PsrNotFoundExceptionInterface  = zend_register_internal_interface(&tmp_ce_PsrNotFoundExceptionInterface TSRMLS_CC);
-
-	zend_class_implements(pimple_ce_PsrNotFoundExceptionInterface TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
-
-	/* Pimple\Exception namespace */
-	INIT_NS_CLASS_ENTRY(tmp_ce_ExpectedInvokableException,        PIMPLE_EXCEPTION_NS, "ExpectedInvokableException",         NULL);
-	INIT_NS_CLASS_ENTRY(tmp_ce_FrozenServiceException,            PIMPLE_EXCEPTION_NS, "FrozenServiceException",             pimple_ce_FrozenServiceException_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_InvalidServiceIdentifierException, PIMPLE_EXCEPTION_NS, "InvalidServiceIdentifierException", pimple_ce_InvalidServiceIdentifierException_functions);
-	INIT_NS_CLASS_ENTRY(tmp_ce_UnknownIdentifierException,        PIMPLE_EXCEPTION_NS, "UnknownIdentifierException",         pimple_ce_UnknownIdentifierException_functions);
-
-	pimple_ce_ExpectedInvokableException        = zend_register_internal_class_ex(&tmp_ce_ExpectedInvokableException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-	pimple_ce_FrozenServiceException            = zend_register_internal_class_ex(&tmp_ce_FrozenServiceException, spl_ce_RuntimeException, NULL TSRMLS_CC);
-	pimple_ce_InvalidServiceIdentifierException = zend_register_internal_class_ex(&tmp_ce_InvalidServiceIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-	pimple_ce_UnknownIdentifierException        = zend_register_internal_class_ex(&tmp_ce_UnknownIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
-
-	zend_class_implements(pimple_ce_ExpectedInvokableException TSRMLS_CC,        1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_FrozenServiceException TSRMLS_CC,            1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_InvalidServiceIdentifierException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
-	zend_class_implements(pimple_ce_UnknownIdentifierException TSRMLS_CC,        1, pimple_ce_PsrNotFoundExceptionInterface);
-
-    /* Pimple namespace */
-	INIT_NS_CLASS_ENTRY(tmp_pimple_ce, PIMPLE_NS, "Container", pimple_ce_functions);
-	INIT_NS_CLASS_ENTRY(tmp_pimple_closure_ce, PIMPLE_NS, "ContainerClosure", NULL);
-	INIT_NS_CLASS_ENTRY(tmp_pimple_serviceprovider_iface_ce, PIMPLE_NS, "ServiceProviderInterface", pimple_serviceprovider_iface_ce_functions);
-
-	tmp_pimple_ce.create_object         = pimple_object_create;
-	tmp_pimple_closure_ce.create_object = pimple_closure_object_create;
-
-	pimple_ce = zend_register_internal_class(&tmp_pimple_ce TSRMLS_CC);
-	zend_class_implements(pimple_ce TSRMLS_CC, 1, zend_ce_arrayaccess);
-
-	pimple_closure_ce = zend_register_internal_class(&tmp_pimple_closure_ce TSRMLS_CC);
-	pimple_closure_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
-
-	pimple_serviceprovider_ce = zend_register_internal_interface(&tmp_pimple_serviceprovider_iface_ce TSRMLS_CC);
-
-	memcpy(&pimple_closure_object_handlers, zend_get_std_object_handlers(), sizeof(*zend_get_std_object_handlers()));
-	pimple_object_handlers                     = std_object_handlers;
-	pimple_closure_object_handlers.get_closure = pimple_closure_get_closure;
-
-	pimple_closure_invoker_function.function_name     = "Pimple closure internal invoker";
-	pimple_closure_invoker_function.fn_flags         |= ZEND_ACC_CLOSURE;
-	pimple_closure_invoker_function.handler           = ZEND_MN(PimpleClosure_invoker);
-	pimple_closure_invoker_function.num_args          = 1;
-	pimple_closure_invoker_function.required_num_args = 1;
-	pimple_closure_invoker_function.scope             = pimple_closure_ce;
-	pimple_closure_invoker_function.type              = ZEND_INTERNAL_FUNCTION;
-	pimple_closure_invoker_function.module            = &pimple_module_entry;
-
-	return SUCCESS;
-}
-
-PHP_MINFO_FUNCTION(pimple)
-{
-	php_info_print_table_start();
-	php_info_print_table_header(2, "SensioLabs Pimple C support", "enabled");
-	php_info_print_table_row(2, "Pimple supported version", PIMPLE_VERSION);
-	php_info_print_table_end();
-
-	php_info_print_box_start(0);
-	php_write((void *)ZEND_STRL("SensioLabs Pimple C support developed by Julien Pauli") TSRMLS_CC);
-	if (!sapi_module.phpinfo_as_text) {
-		php_write((void *)ZEND_STRL(sensiolabs_logo) TSRMLS_CC);
-	}
-	php_info_print_box_end();
-}
-
-zend_module_entry pimple_module_entry = {
-	STANDARD_MODULE_HEADER,
-	"pimple",
-	NULL,
-	PHP_MINIT(pimple),
-	NULL,
-	NULL,
-	NULL,
-	PHP_MINFO(pimple),
-	PIMPLE_VERSION,
-	STANDARD_MODULE_PROPERTIES
-};
-
-#ifdef COMPILE_DL_PIMPLE
-ZEND_GET_MODULE(pimple)
-#endif
diff --git a/vendor/pimple/pimple/ext/pimple/pimple_compat.h b/vendor/pimple/pimple/ext/pimple/pimple_compat.h
deleted file mode 100644
index d234e174..00000000
--- a/vendor/pimple/pimple/ext/pimple/pimple_compat.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2014 Fabien Potencier
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is furnished
- * to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef PIMPLE_COMPAT_H_
-#define PIMPLE_COMPAT_H_
-
-#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
-
-#define PHP_5_0_X_API_NO		220040412
-#define PHP_5_1_X_API_NO		220051025
-#define PHP_5_2_X_API_NO		220060519
-#define PHP_5_3_X_API_NO		220090626
-#define PHP_5_4_X_API_NO		220100525
-#define PHP_5_5_X_API_NO		220121212
-#define PHP_5_6_X_API_NO		220131226
-
-#define IS_PHP_56 ZEND_EXTENSION_API_NO == PHP_5_6_X_API_NO
-#define IS_AT_LEAST_PHP_56 ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO
-
-#define IS_PHP_55 ZEND_EXTENSION_API_NO == PHP_5_5_X_API_NO
-#define IS_AT_LEAST_PHP_55 ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO
-
-#define IS_PHP_54 ZEND_EXTENSION_API_NO == PHP_5_4_X_API_NO
-#define IS_AT_LEAST_PHP_54 ZEND_EXTENSION_API_NO >= PHP_5_4_X_API_NO
-
-#define IS_PHP_53 ZEND_EXTENSION_API_NO == PHP_5_3_X_API_NO
-#define IS_AT_LEAST_PHP_53 ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO
-
-#if IS_PHP_53
-#define object_properties_init(obj, ce) do { \
-		 zend_hash_copy(obj->properties, &ce->default_properties, zval_copy_property_ctor(ce), NULL, sizeof(zval *)); \
-		} while (0);
-#endif
-
-#define ZEND_OBJ_INIT(obj, ce) do { \
-		zend_object_std_init(obj, ce TSRMLS_CC); \
-		object_properties_init((obj), (ce)); \
-	} while(0);
-
-#if IS_PHP_53 || IS_PHP_54
-static void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) {
-    Bucket *p;
-
-    p = pos ? (*pos) : ht->pInternalPointer;
-
-    if (!p) {
-        Z_TYPE_P(key) = IS_NULL;
-    } else if (p->nKeyLength) {
-        Z_TYPE_P(key) = IS_STRING;
-        Z_STRVAL_P(key) = estrndup(p->arKey, p->nKeyLength - 1);
-        Z_STRLEN_P(key) = p->nKeyLength - 1;
-    } else {
-        Z_TYPE_P(key) = IS_LONG;
-        Z_LVAL_P(key) = p->h;
-    }
-}
-#endif
-
-#endif /* PIMPLE_COMPAT_H_ */
diff --git a/vendor/pimple/pimple/ext/pimple/tests/001.phpt b/vendor/pimple/pimple/ext/pimple/tests/001.phpt
deleted file mode 100644
index 0809ea23..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/001.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p['foo'] = 42;
-
-echo $p[42];
-echo "\n";
-echo $p['foo'];
-echo "\n";
-try {
-	var_dump($p['nonexistant']);
-	echo "Exception excpected";
-} catch (InvalidArgumentException $e) { }
-
-$p[54.2] = 'foo2';
-echo $p[54];
-echo "\n";
-$p[242.99] = 'foo99';
-echo $p[242];
-
-echo "\n";
-
-$p[5] = 'bar';
-$p[5] = 'baz';
-echo $p[5];
-
-echo "\n";
-
-$p['str'] = 'str';
-$p['str'] = 'strstr';
-echo $p['str'];
-?>
-
---EXPECTF--
-foo
-42
-foo2
-foo99
-baz
-strstr
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/002.phpt b/vendor/pimple/pimple/ext/pimple/tests/002.phpt
deleted file mode 100644
index 7b56d2c1..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/002.phpt
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Test for constructor
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-var_dump($p[42]);
-
-$p = new Pimple\Container(array(42=>'foo'));
-var_dump($p[42]);
-?>
---EXPECT--
-NULL
-string(3) "foo"
diff --git a/vendor/pimple/pimple/ext/pimple/tests/003.phpt b/vendor/pimple/pimple/ext/pimple/tests/003.phpt
deleted file mode 100644
index a22cfa35..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/003.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Test empty dimensions
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[] = 42;
-var_dump($p[0]);
-$p[41] = 'foo';
-$p[] = 'bar';
-var_dump($p[42]);
-?>
---EXPECT--
-int(42)
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/004.phpt b/vendor/pimple/pimple/ext/pimple/tests/004.phpt
deleted file mode 100644
index 1e1d2513..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/004.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test has/unset dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[] = 42;
-var_dump($p[0]);
-unset($p[0]);
-var_dump($p[0]);
-$p['foo'] = 'bar';
-var_dump(isset($p['foo']));
-unset($p['foo']);
-try {
-	var_dump($p['foo']);
-	echo "Excpected exception";
-} catch (InvalidArgumentException $e) { }
-var_dump(isset($p['bar']));
-$p['bar'] = NULL;
-var_dump(isset($p['bar']));
-var_dump(empty($p['bar']));
-?>
---EXPECT--
-int(42)
-NULL
-bool(true)
-bool(false)
-bool(true)
-bool(true)
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/005.phpt b/vendor/pimple/pimple/ext/pimple/tests/005.phpt
deleted file mode 100644
index 0479ee05..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/005.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Test simple class inheritance
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-class MyPimple extends Pimple\Container
-{
-	public $someAttr = 'fooAttr';
-
-    public function offsetget($o)
-    {
-        var_dump("hit");
-        return parent::offsetget($o);
-    }
-}
-
-$p = new MyPimple;
-$p[42] = 'foo';
-echo $p[42];
-echo "\n";
-echo $p->someAttr;
-?>
---EXPECT--
-string(3) "hit"
-foo
-fooAttr
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/006.phpt b/vendor/pimple/pimple/ext/pimple/tests/006.phpt
deleted file mode 100644
index cfe8a119..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/006.phpt
+++ /dev/null
@@ -1,51 +0,0 @@
---TEST--
-Test complex class inheritance
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-class MyPimple extends Pimple\Container
-{
-    public function offsetget($o)
-    {
-        var_dump("hit offsetget in " . __CLASS__);
-        return parent::offsetget($o);
-    }
-}
-
-class TestPimple extends MyPimple
-{
-    public function __construct($values)
-    {
-        array_shift($values);
-        parent::__construct($values);
-    }
-    
-    public function offsetget($o)
-    {
-        var_dump('hit offsetget in ' . __CLASS__);
-        return parent::offsetget($o);
-    }
-    
-    public function offsetset($o, $v)
-    {
-        var_dump('hit offsetset');
-        return parent::offsetset($o, $v);
-    }
-}
-
-$defaultValues = array('foo' => 'bar', 88 => 'baz');
-
-$p = new TestPimple($defaultValues);
-$p[42] = 'foo';
-var_dump($p[42]);
-var_dump($p[0]);
-?>
---EXPECT--
-string(13) "hit offsetset"
-string(27) "hit offsetget in TestPimple"
-string(25) "hit offsetget in MyPimple"
-string(3) "foo"
-string(27) "hit offsetget in TestPimple"
-string(25) "hit offsetget in MyPimple"
-string(3) "baz"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/007.phpt b/vendor/pimple/pimple/ext/pimple/tests/007.phpt
deleted file mode 100644
index 5aac6838..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/007.phpt
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Test for read_dim/write_dim handlers
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p['foo'] = 42;
-
-echo $p[42];
-echo "\n";
-echo $p['foo'];
-echo "\n";
-try {
-	var_dump($p['nonexistant']);
-	echo "Exception excpected";
-} catch (InvalidArgumentException $e) { }
-?>
---EXPECTF--
-foo
-42
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/008.phpt b/vendor/pimple/pimple/ext/pimple/tests/008.phpt
deleted file mode 100644
index db7eeec4..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/008.phpt
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-Test frozen services
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p[42] = 'foo';
-$p[42] = 'bar';
-
-$p['foo'] = function () { };
-$p['foo'] = function () { };
-
-$a = $p['foo'];
-
-try {
-	$p['foo'] = function () { };
-	echo "Exception excpected";
-} catch (RuntimeException $e) { }
-
-$p[42] = function() { };
-$a = $p[42];
-
-try {
-	$p[42] = function () { };
-	echo "Exception excpected";
-} catch (RuntimeException $e) { }
-?>
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/009.phpt b/vendor/pimple/pimple/ext/pimple/tests/009.phpt
deleted file mode 100644
index bb05ea29..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/009.phpt
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-Test service is called as callback, and only once
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php 
-$p = new Pimple\Container();
-$p['foo'] = function($arg) use ($p) { var_dump($p === $arg); };
-$a = $p['foo'];
-$b = $p['foo']; /* should return not calling the callback */
-?>
---EXPECTF--
-bool(true)
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/010.phpt b/vendor/pimple/pimple/ext/pimple/tests/010.phpt
deleted file mode 100644
index badce014..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/010.phpt
+++ /dev/null
@@ -1,45 +0,0 @@
---TEST--
-Test service is called as callback for every callback type
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-function callme()
-{
-    return 'called';
-}
-
-$a = function() { return 'called'; };
-
-class Foo
-{
-    public static function bar()
-    {
-        return 'called';
-    }
-}
- 
-$p = new Pimple\Container();
-$p['foo'] = 'callme';
-echo $p['foo'] . "\n";
-
-$p['bar'] = $a;
-echo $p['bar'] . "\n";
-
-$p['baz'] = "Foo::bar";
-echo $p['baz'] . "\n";
-
-$p['foobar'] = array('Foo', 'bar');
-var_dump($p['foobar']);
-
-?>
---EXPECTF--
-callme
-called
-Foo::bar
-array(2) {
-  [0]=>
-  string(3) "Foo"
-  [1]=>
-  string(3) "bar"
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/011.phpt b/vendor/pimple/pimple/ext/pimple/tests/011.phpt
deleted file mode 100644
index 6682ab8e..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/011.phpt
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Test service callback throwing an exception
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-class CallBackException extends RuntimeException { }
-
-$p = new Pimple\Container();
-$p['foo'] = function () { throw new CallBackException; };
-try {
-	echo $p['foo'] . "\n";
-	echo "should not come here";
-} catch (CallBackException $e) {
-	echo "all right!";
-}
-?>
---EXPECTF--
-all right!
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/012.phpt b/vendor/pimple/pimple/ext/pimple/tests/012.phpt
deleted file mode 100644
index 4c6ac486..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/012.phpt
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Test service factory
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-
-$p->factory($f = function() { var_dump('called-1'); return 'ret-1';});
-
-$p[] = $f;
-
-$p[] = function () { var_dump('called-2'); return 'ret-2'; };
-
-var_dump($p[0]);
-var_dump($p[0]);
-var_dump($p[1]);
-var_dump($p[1]);
-?>
---EXPECTF--
-string(8) "called-1"
-string(5) "ret-1"
-string(8) "called-1"
-string(5) "ret-1"
-string(8) "called-2"
-string(5) "ret-2"
-string(5) "ret-2"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/013.phpt b/vendor/pimple/pimple/ext/pimple/tests/013.phpt
deleted file mode 100644
index f419958c..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/013.phpt
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-Test keys()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-
-var_dump($p->keys());
-
-$p['foo'] = 'bar';
-$p[] = 'foo';
-
-var_dump($p->keys());
-
-unset($p['foo']);
-
-var_dump($p->keys());
-?>
---EXPECTF--
-array(0) {
-}
-array(2) {
-  [0]=>
-  string(3) "foo"
-  [1]=>
-  int(0)
-}
-array(1) {
-  [0]=>
-  int(0)
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/014.phpt b/vendor/pimple/pimple/ext/pimple/tests/014.phpt
deleted file mode 100644
index ac937213..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/014.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Test raw()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$f = function () { var_dump('called-2'); return 'ret-2'; };
-
-$p['foo'] = $f;
-$p[42]    = $f;
-
-var_dump($p['foo']);
-var_dump($p->raw('foo'));
-var_dump($p[42]);
-
-unset($p['foo']);
-
-try {
-	$p->raw('foo');
-	echo "expected exception";
-} catch (InvalidArgumentException $e) { }
---EXPECTF--
-string(8) "called-2"
-string(5) "ret-2"
-object(Closure)#%i (0) {
-}
-string(8) "called-2"
-string(5) "ret-2"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/015.phpt b/vendor/pimple/pimple/ext/pimple/tests/015.phpt
deleted file mode 100644
index 314f008a..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/015.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test protect()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$f = function () { return 'foo'; };
-$p['foo'] = $f;
-
-$p->protect($f);
-
-var_dump($p['foo']);
---EXPECTF--
-object(Closure)#%i (0) {
-}
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/016.phpt b/vendor/pimple/pimple/ext/pimple/tests/016.phpt
deleted file mode 100644
index e55edb0a..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/016.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-Test extend()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-/*
- This is part of Pimple::extend() code :
-
-          $extended = function ($c) use ($callable, $factory) {
-             return $callable($factory($c), $c);
-          };
-*/
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { var_dump($v); return 'foo';}; /* $factory in code above */
-
-$c = $p->extend(12, function ($w) { var_dump($w); return 'bar'; }); /* $callable in code above */
-
-var_dump($c('param'));
---EXPECTF--
-string(5) "param"
-string(3) "foo"
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/017.phpt b/vendor/pimple/pimple/ext/pimple/tests/017.phpt
deleted file mode 100644
index bac23ce0..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/017.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service extension
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { return 'foo';};
-
-$c = $p->extend(12, function ($w) { throw new BadMethodCallException; });
-
-try {
-	$p[12];
-	echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt b/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
deleted file mode 100644
index 8f881d6e..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Test extend() with exception in service factory
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-$p = new Pimple\Container();
-$p[12] = function ($v) { throw new BadMethodCallException; };
-
-$c = $p->extend(12, function ($w) { return 'foobar'; });
-
-try {
-	$p[12];
-	echo "Exception expected";
-} catch (BadMethodCallException $e) { }
---EXPECTF--
diff --git a/vendor/pimple/pimple/ext/pimple/tests/018.phpt b/vendor/pimple/pimple/ext/pimple/tests/018.phpt
deleted file mode 100644
index 27c12a14..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/018.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-Test register()
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-class Foo implements Pimple\ServiceProviderInterface
-{
-    public function register(Pimple\Container $p)
-    {
-        var_dump($p);
-    }
-}
-
-$p = new Pimple\Container();
-$p->register(new Foo, array(42 => 'bar'));
-
-var_dump($p[42]);
---EXPECTF--
-object(Pimple\Container)#1 (0) {
-}
-string(3) "bar"
\ No newline at end of file
diff --git a/vendor/pimple/pimple/ext/pimple/tests/019.phpt b/vendor/pimple/pimple/ext/pimple/tests/019.phpt
deleted file mode 100644
index 28a9aeca..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/019.phpt
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Test register() returns static and is a fluent interface
---SKIPIF--
-<?php if (!extension_loaded("pimple")) print "skip"; ?>
---FILE--
-<?php
-
-class Foo implements Pimple\ServiceProviderInterface
-{
-    public function register(Pimple\Container $p)
-    {
-    }
-}
-
-$p = new Pimple\Container();
-var_dump($p === $p->register(new Foo));
---EXPECTF--
-bool(true)
diff --git a/vendor/pimple/pimple/ext/pimple/tests/bench.phpb b/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
deleted file mode 100644
index 8f983e65..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-if (!class_exists('Pimple\Container')) {
-    require_once __DIR__ . '/../../../src/Pimple/Container.php';
-} else {
-    echo "pimple-c extension detected, using...\n\n";
-}
-
-$time = microtime(true);
-
-function foo() { }
-$factory = function () { };
-
-for ($i=0; $i<10000; $i++) {
-
-$p = new Pimple\Container;
-
-$p['foo'] = 'bar';
-
-if (!isset($p[3])) {
-    $p[3] = $p['foo'];
-    $p[]  = 'bar';
-}
-
-$p[2] = 42;
-
-if (isset($p[2])) {
-	unset($p[2]);
-}
-
-$p[42] = $p['foo'];
-
-$p['cb'] = function($arg) { };
-
-$p[] = $p['cb'];
-
-echo $p['cb'];
-echo $p['cb'];
-echo $p['cb'];
-
-//$p->factory($factory);
-
-$p['factory'] = $factory;
-
-echo $p['factory'];
-echo $p['factory'];
-echo $p['factory'];
-
-}
-
-echo microtime(true)  - $time;
diff --git a/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb b/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
deleted file mode 100644
index aec541f0..00000000
--- a/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-if (!class_exists('Pimple\Container')) {
-    require_once __DIR__ . '/../../../src/Pimple/Container.php';
-} else {
-    echo "pimple-c extension detected, using...\n\n";
-}
-
-$time = microtime(true);
-
-
-$service = function ($arg) { return "I'm a service"; };
-
-for ($i=0; $i<10000; $i++) {
-
-$p = new Pimple\Container;
-$p['my_service'] = $service;
-
-$a = $p['my_service'];
-$b = $p['my_service'];
-
-}
-
-echo microtime(true) - $time;
-?>
diff --git a/vendor/pimple/pimple/phpunit.xml.dist b/vendor/pimple/pimple/phpunit.xml.dist
index 5c8d487f..89902022 100644
--- a/vendor/pimple/pimple/phpunit.xml.dist
+++ b/vendor/pimple/pimple/phpunit.xml.dist
@@ -11,4 +11,8 @@
             <directory>./src/Pimple/Tests</directory>
         </testsuite>
     </testsuites>
+
+    <listeners>
+        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
+    </listeners>
 </phpunit>
diff --git a/vendor/pimple/pimple/src/Pimple/Container.php b/vendor/pimple/pimple/src/Pimple/Container.php
index 707b92b8..1234f0bd 100644
--- a/vendor/pimple/pimple/src/Pimple/Container.php
+++ b/vendor/pimple/pimple/src/Pimple/Container.php
@@ -38,12 +38,12 @@ use Pimple\Exception\UnknownIdentifierException;
  */
 class Container implements \ArrayAccess
 {
-    private $values = array();
+    private $values = [];
     private $factories;
     private $protected;
-    private $frozen = array();
-    private $raw = array();
-    private $keys = array();
+    private $frozen = [];
+    private $raw = [];
+    private $keys = [];
 
     /**
      * Instantiates the container.
@@ -52,7 +52,7 @@ class Container implements \ArrayAccess
      *
      * @param array $values The parameters or objects
      */
-    public function __construct(array $values = array())
+    public function __construct(array $values = [])
     {
         $this->factories = new \SplObjectStorage();
         $this->protected = new \SplObjectStorage();
@@ -246,7 +246,7 @@ class Container implements \ArrayAccess
         }
 
         if (isset($this->protected[$this->values[$id]])) {
-            @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), \E_USER_DEPRECATED);
+            @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), E_USER_DEPRECATED);
         }
 
         if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
@@ -285,7 +285,7 @@ class Container implements \ArrayAccess
      *
      * @return static
      */
-    public function register(ServiceProviderInterface $provider, array $values = array())
+    public function register(ServiceProviderInterface $provider, array $values = [])
     {
         $provider->register($this);
 
diff --git a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
index 3361c6f1..f10727cc 100644
--- a/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
+++ b/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
@@ -38,7 +38,7 @@ use Psr\Container\ContainerInterface;
 class ServiceLocator implements ContainerInterface
 {
     private $container;
-    private $aliases = array();
+    private $aliases = [];
 
     /**
      * @param PimpleContainer $container The Container instance used to locate services
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
index 8e5c4c73..097a7fd9 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
@@ -26,12 +26,13 @@
 
 namespace Pimple\Tests;
 
+use PHPUnit\Framework\TestCase;
 use Pimple\Container;
 
 /**
- * @author  Dominik Zogg <dominik.zogg@gmail.com>
+ * @author Dominik Zogg <dominik.zogg@gmail.com>
  */
-class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
+class PimpleServiceProviderInterfaceTest extends TestCase
 {
     public function testProvider()
     {
@@ -56,9 +57,9 @@ class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
     {
         $pimple = new Container();
 
-        $pimple->register(new Fixtures\PimpleServiceProvider(), array(
+        $pimple->register(new Fixtures\PimpleServiceProvider(), [
             'anotherParameter' => 'anotherValue',
-        ));
+        ]);
 
         $this->assertEquals('value', $pimple['param']);
         $this->assertEquals('anotherValue', $pimple['anotherParameter']);
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
index acb66e00..ffa50a6a 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
@@ -26,12 +26,13 @@
 
 namespace Pimple\Tests;
 
+use PHPUnit\Framework\TestCase;
 use Pimple\Container;
 
 /**
  * @author Igor Wiedler <igor@wiedler.ch>
  */
-class PimpleTest extends \PHPUnit_Framework_TestCase
+class PimpleTest extends TestCase
 {
     public function testWithString()
     {
@@ -99,29 +100,29 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     public function testConstructorInjection()
     {
-        $params = array('param' => 'value');
+        $params = ['param' => 'value'];
         $pimple = new Container($params);
 
         $this->assertSame($params['param'], $pimple['param']);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testOffsetGetValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         echo $pimple['foo'];
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyOffsetGetValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         echo $pimple['foo'];
     }
@@ -184,7 +185,9 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     public function testRaw()
     {
         $pimple = new Container();
-        $pimple['service'] = $definition = $pimple->factory(function () { return 'foo'; });
+        $pimple['service'] = $definition = $pimple->factory(function () {
+            return 'foo';
+        });
         $this->assertSame($definition, $pimple->raw('service'));
     }
 
@@ -201,23 +204,23 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testRawValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple->raw('foo');
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyRawValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple->raw('foo');
     }
@@ -254,13 +257,17 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     public function testExtendDoesNotLeakWithFactories()
     {
-        if (extension_loaded('pimple')) {
+        if (\extension_loaded('pimple')) {
             $this->markTestSkipped('Pimple extension does not support this test');
         }
         $pimple = new Container();
 
-        $pimple['foo'] = $pimple->factory(function () { return; });
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { return; });
+        $pimple['foo'] = $pimple->factory(function () {
+            return;
+        });
+        $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) {
+            return;
+        });
         unset($pimple['foo']);
 
         $p = new \ReflectionProperty($pimple, 'values');
@@ -272,25 +279,27 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertCount(0, $p->getValue($pimple));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testExtendValidatesKeyIsPresent()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
      * @group legacy
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
      */
     public function testLegacyExtendValidatesKeyIsPresent()
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     public function testKeys()
@@ -299,7 +308,7 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $pimple['foo'] = 123;
         $pimple['bar'] = 123;
 
-        $this->assertEquals(array('foo', 'bar'), $pimple->keys());
+        $this->assertEquals(['foo', 'bar'], $pimple->keys());
     }
 
     /** @test */
@@ -322,11 +331,12 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Service definition is not a Closure or invokable object.
      */
     public function testFactoryFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->factory($service);
     }
@@ -334,22 +344,24 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Service definition is not a Closure or invokable object.
      */
     public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->factory($service);
     }
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Callable is not a Closure or invokable object.
      */
     public function testProtectFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->protect($service);
     }
@@ -357,38 +369,43 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Callable is not a Closure or invokable object.
      */
     public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Callable is not a Closure or invokable object.');
+
         $pimple = new Container();
         $pimple->protect($service);
     }
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\InvalidServiceIdentifierException
-     * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
      */
     public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\InvalidServiceIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
+
         $pimple = new Container();
         $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
      */
     public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.');
+
         $pimple = new Container();
         $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
@@ -411,57 +428,61 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \Pimple\Exception\ExpectedInvokableException
-     * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
      */
     public function testExtendFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\Pimple\Exception\ExpectedInvokableException::class);
+        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
-        $pimple['foo'] = function () {};
+        $pimple['foo'] = function () {
+        };
         $pimple->extend('foo', $service);
     }
 
     /**
      * @group legacy
      * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
      */
     public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('Extension service definition is not a Closure or invokable object.');
+
         $pimple = new Container();
-        $pimple['foo'] = function () {};
+        $pimple['foo'] = function () {
+        };
         $pimple->extend('foo', $service);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testExtendFailsIfFrozenServiceIsNonInvokable()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return new Fixtures\NonInvokable();
         };
         $foo = $pimple['foo'];
 
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testExtendFailsIfFrozenServiceIsInvokable()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return new Fixtures\Invokable();
         };
         $foo = $pimple['foo'];
 
-        $pimple->extend('foo', function () {});
+        $pimple->extend('foo', function () {
+        });
     }
 
     /**
@@ -469,10 +490,10 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
      */
     public function badServiceDefinitionProvider()
     {
-        return array(
-          array(123),
-          array(new Fixtures\NonInvokable()),
-        );
+        return [
+          [123],
+          [new Fixtures\NonInvokable()],
+        ];
     }
 
     /**
@@ -480,15 +501,15 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
      */
     public function serviceDefinitionProvider()
     {
-        return array(
-            array(function ($value) {
+        return [
+            [function ($value) {
                 $service = new Fixtures\Service();
                 $service->value = $value;
 
                 return $service;
-            }),
-            array(new Fixtures\Invokable()),
-        );
+            }],
+            [new Fixtures\Invokable()],
+        ];
     }
 
     public function testDefiningNewServiceAfterFreeze()
@@ -505,12 +526,11 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
         $this->assertSame('bar', $pimple['bar']);
     }
 
-    /**
-     * @expectedException \Pimple\Exception\FrozenServiceException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
     public function testOverridingServiceAfterFreeze()
     {
+        $this->expectException(\Pimple\Exception\FrozenServiceException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return 'foo';
@@ -524,11 +544,12 @@ class PimpleTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @group legacy
-     * @expectedException \RuntimeException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
      */
     public function testLegacyOverridingServiceAfterFreeze()
     {
+        $this->expectException(\RuntimeException::class);
+        $this->expectExceptionMessage('Cannot override frozen service "foo".');
+
         $pimple = new Container();
         $pimple['foo'] = function () {
             return 'foo';
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
index 7ca2d7ff..d47b9c3f 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
@@ -44,12 +44,11 @@ class ContainerTest extends TestCase
         $this->assertSame($pimple['service'], $psr->get('service'));
     }
 
-    /**
-     * @expectedException \Psr\Container\NotFoundExceptionInterface
-     * @expectedExceptionMessage Identifier "service" is not defined.
-     */
     public function testGetThrowsExceptionIfServiceIsNotFound()
     {
+        $this->expectException(\Psr\Container\NotFoundExceptionInterface::class);
+        $this->expectExceptionMessage('Identifier "service" is not defined.');
+
         $pimple = new Container();
         $psr = new PsrContainer($pimple);
 
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
index c9a08125..bd2d335b 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
@@ -44,7 +44,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('service'));
+        $locator = new ServiceLocator($pimple, ['service']);
 
         $this->assertSame($pimple['service'], $locator->get('service'));
     }
@@ -55,52 +55,49 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $this->assertSame($pimple['service'], $locator->get('alias'));
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "service" is not defined.
-     */
     public function testCannotAccessAliasedServiceUsingRealIdentifier()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "service" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $service = $locator->get('service');
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
     public function testGetValidatesServiceCanBeLocated()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "foo" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'service']);
 
         $service = $locator->get('foo');
     }
 
-    /**
-     * @expectedException \Pimple\Exception\UnknownIdentifierException
-     * @expectedExceptionMessage Identifier "invalid" is not defined.
-     */
     public function testGetValidatesTargetServiceExists()
     {
+        $this->expectException(\Pimple\Exception\UnknownIdentifierException::class);
+        $this->expectExceptionMessage('Identifier "invalid" is not defined.');
+
         $pimple = new Container();
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('alias' => 'invalid'));
+        $locator = new ServiceLocator($pimple, ['alias' => 'invalid']);
 
         $service = $locator->get('alias');
     }
@@ -114,7 +111,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service2'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('service1'));
+        $locator = new ServiceLocator($pimple, ['service1']);
 
         $this->assertTrue($locator->has('service1'));
         $this->assertFalse($locator->has('service2'));
@@ -126,7 +123,7 @@ class ServiceLocatorTest extends TestCase
         $pimple['service'] = function () {
             return new Fixtures\Service();
         };
-        $locator = new ServiceLocator($pimple, array('foo' => 'service', 'bar' => 'invalid'));
+        $locator = new ServiceLocator($pimple, ['foo' => 'service', 'bar' => 'invalid']);
 
         $this->assertTrue($locator->has('foo'));
         $this->assertFalse($locator->has('bar'));
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php b/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
index 5dd52f0d..2bb935f3 100644
--- a/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
+++ b/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
@@ -45,8 +45,8 @@ class ServiceIteratorTest extends TestCase
         $pimple['service3'] = function () {
             return new Service();
         };
-        $iterator = new ServiceIterator($pimple, array('service1', 'service2'));
+        $iterator = new ServiceIterator($pimple, ['service1', 'service2']);
 
-        $this->assertSame(array('service1' => $pimple['service1'], 'service2' => $pimple['service2']), iterator_to_array($iterator));
+        $this->assertSame(['service1' => $pimple['service1'], 'service2' => $pimple['service2']], iterator_to_array($iterator));
     }
 }
diff --git a/vendor/psr/log/.gitignore b/vendor/psr/log/.gitignore
deleted file mode 100644
index 22d0d82f..00000000
--- a/vendor/psr/log/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-vendor
diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php
index 5ea72438..2206cfde 100644
--- a/vendor/psr/log/Psr/Log/LoggerInterface.php
+++ b/vendor/psr/log/Psr/Log/LoggerInterface.php
@@ -22,8 +22,8 @@ interface LoggerInterface
     /**
      * System is unusable.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -35,8 +35,8 @@ interface LoggerInterface
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -47,8 +47,8 @@ interface LoggerInterface
      *
      * Example: Application component unavailable, unexpected exception.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -58,8 +58,8 @@ interface LoggerInterface
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -71,8 +71,8 @@ interface LoggerInterface
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -81,8 +81,8 @@ interface LoggerInterface
     /**
      * Normal but significant events.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -93,8 +93,8 @@ interface LoggerInterface
      *
      * Example: User logs in, SQL logs.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -103,8 +103,8 @@ interface LoggerInterface
     /**
      * Detailed debug information.
      *
-     * @param string $message
-     * @param array  $context
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
      */
@@ -113,11 +113,13 @@ interface LoggerInterface
     /**
      * Logs with an arbitrary level.
      *
-     * @param mixed  $level
-     * @param string $message
-     * @param array  $context
+     * @param mixed   $level
+     * @param string  $message
+     * @param mixed[] $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     public function log($level, $message, array $context = array());
 }
diff --git a/vendor/psr/log/Psr/Log/LoggerTrait.php b/vendor/psr/log/Psr/Log/LoggerTrait.php
index 867225df..e392fef0 100644
--- a/vendor/psr/log/Psr/Log/LoggerTrait.php
+++ b/vendor/psr/log/Psr/Log/LoggerTrait.php
@@ -135,6 +135,8 @@ trait LoggerTrait
      * @param array  $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     abstract public function log($level, $message, array $context = array());
 }
diff --git a/vendor/psr/log/Psr/Log/NullLogger.php b/vendor/psr/log/Psr/Log/NullLogger.php
index d8cd682c..c8f7293b 100644
--- a/vendor/psr/log/Psr/Log/NullLogger.php
+++ b/vendor/psr/log/Psr/Log/NullLogger.php
@@ -20,6 +20,8 @@ class NullLogger extends AbstractLogger
      * @param array  $context
      *
      * @return void
+     *
+     * @throws \Psr\Log\InvalidArgumentException
      */
     public function log($level, $message, array $context = array())
     {
diff --git a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
index 4b861c3e..e1e5354d 100644
--- a/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
+++ b/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
@@ -4,6 +4,7 @@ namespace Psr\Log\Test;
 
 use Psr\Log\LoggerInterface;
 use Psr\Log\LogLevel;
+use PHPUnit\Framework\TestCase;
 
 /**
  * Provides a base test class for ensuring compliance with the LoggerInterface.
@@ -11,7 +12,7 @@ use Psr\Log\LogLevel;
  * Implementors can extend the class and implement abstract methods to run this
  * as part of their test suite.
  */
-abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
+abstract class LoggerInterfaceTest extends TestCase
 {
     /**
      * @return LoggerInterface
@@ -135,10 +136,3 @@ abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($expected, $this->getLogs());
     }
 }
-
-class DummyTest
-{
-    public function __toString()
-    {
-    }
-}
diff --git a/vendor/psr/log/Psr/Log/Test/TestLogger.php b/vendor/psr/log/Psr/Log/Test/TestLogger.php
index 0cdffe4f..1be32304 100644
--- a/vendor/psr/log/Psr/Log/Test/TestLogger.php
+++ b/vendor/psr/log/Psr/Log/Test/TestLogger.php
@@ -142,5 +142,6 @@ class TestLogger extends AbstractLogger
     public function reset()
     {
         $this->records = [];
+        $this->recordsByLevel = [];
     }
 }
diff --git a/vendor/psr/log/README.md b/vendor/psr/log/README.md
index 5571a25e..a9f20c43 100644
--- a/vendor/psr/log/README.md
+++ b/vendor/psr/log/README.md
@@ -38,6 +38,12 @@ class Foo
         if ($this->logger) {
             $this->logger->info('Doing work');
         }
+           
+        try {
+            $this->doSomethingElse();
+        } catch (Exception $exception) {
+            $this->logger->error('Oh no!', array('exception' => $exception));
+        }
 
         // do something useful
     }
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
index 87934d70..3f6d4eea 100644
--- a/vendor/psr/log/composer.json
+++ b/vendor/psr/log/composer.json
@@ -20,7 +20,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.0.x-dev"
+            "dev-master": "1.1.x-dev"
         }
     }
 }
diff --git a/vendor/symfony/debug/.gitignore b/vendor/symfony/debug/.gitignore
deleted file mode 100644
index c49a5d8d..00000000
--- a/vendor/symfony/debug/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/debug/BufferingLogger.php b/vendor/symfony/debug/BufferingLogger.php
index e7db3a4c..5280c33b 100644
--- a/vendor/symfony/debug/BufferingLogger.php
+++ b/vendor/symfony/debug/BufferingLogger.php
@@ -13,15 +13,22 @@ namespace Symfony\Component\Debug;
 
 use Psr\Log\AbstractLogger;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', BufferingLogger::class, \Symfony\Component\ErrorHandler\BufferingLogger::class), \E_USER_DEPRECATED);
+
 /**
  * A buffering logger that stacks logs for later.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\BufferingLogger instead.
  */
 class BufferingLogger extends AbstractLogger
 {
     private $logs = [];
 
+    /**
+     * @return void
+     */
     public function log($level, $message, array $context = [])
     {
         $this->logs[] = [$level, $message, $context];
diff --git a/vendor/symfony/debug/CHANGELOG.md b/vendor/symfony/debug/CHANGELOG.md
index 367e834f..989c1a72 100644
--- a/vendor/symfony/debug/CHANGELOG.md
+++ b/vendor/symfony/debug/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * deprecated `FlattenException`, use the `FlattenException` of the `ErrorHandler` component
+ * deprecated the whole component in favor of the `ErrorHandler` component
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/debug/Debug.php b/vendor/symfony/debug/Debug.php
index 5d2d55cf..a44b993f 100644
--- a/vendor/symfony/debug/Debug.php
+++ b/vendor/symfony/debug/Debug.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', Debug::class, \Symfony\Component\ErrorHandler\Debug::class), \E_USER_DEPRECATED);
+
 /**
  * Registers all the debug tools.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Debug instead.
  */
 class Debug
 {
@@ -28,7 +32,7 @@ class Debug
      * @param int  $errorReportingLevel The level of error reporting you want
      * @param bool $displayErrors       Whether to display errors (for development) or just log them (for production)
      */
-    public static function enable($errorReportingLevel = E_ALL, $displayErrors = true)
+    public static function enable($errorReportingLevel = \E_ALL, $displayErrors = true)
     {
         if (static::$enabled) {
             return;
@@ -39,13 +43,13 @@ class Debug
         if (null !== $errorReportingLevel) {
             error_reporting($errorReportingLevel);
         } else {
-            error_reporting(E_ALL);
+            error_reporting(\E_ALL);
         }
 
         if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
             ini_set('display_errors', 0);
             ExceptionHandler::register();
-        } elseif ($displayErrors && (!filter_var(ini_get('log_errors'), FILTER_VALIDATE_BOOLEAN) || ini_get('error_log'))) {
+        } elseif ($displayErrors && (!filter_var(ini_get('log_errors'), \FILTER_VALIDATE_BOOLEAN) || ini_get('error_log'))) {
             // CLI - display errors only if they're not already logged to STDERR
             ini_set('display_errors', 1);
         }
diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php
index 42e803b9..519a3c8f 100644
--- a/vendor/symfony/debug/DebugClassLoader.php
+++ b/vendor/symfony/debug/DebugClassLoader.php
@@ -13,6 +13,8 @@ namespace Symfony\Component\Debug;
 
 use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', DebugClassLoader::class, \Symfony\Component\ErrorHandler\DebugClassLoader::class), \E_USER_DEPRECATED);
+
 /**
  * Autoloader checking if the class is really defined in the file found.
  *
@@ -24,6 +26,8 @@ use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation;
  * @author Christophe Coevoet <stof@notk.org>
  * @author Nicolas Grekas <p@tchwork.com>
  * @author Guilhem Niot <guilhem.niot@gmail.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\DebugClassLoader instead.
  */
 class DebugClassLoader
 {
@@ -60,7 +64,7 @@ class DebugClassLoader
             } elseif (substr($test, -\strlen($file)) === $file) {
                 // filesystem is case insensitive and realpath() normalizes the case of characters
                 self::$caseCheck = 1;
-            } elseif (false !== stripos(PHP_OS, 'darwin')) {
+            } elseif (false !== stripos(\PHP_OS, 'darwin')) {
                 // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
                 self::$caseCheck = 2;
             } else {
@@ -145,7 +149,7 @@ class DebugClassLoader
      */
     public function loadClass($class)
     {
-        $e = error_reporting(error_reporting() | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR);
+        $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR);
 
         try {
             if ($this->isFinder && !isset($this->loaded[$class])) {
@@ -170,7 +174,7 @@ class DebugClassLoader
         $this->checkClass($class, $file);
     }
 
-    private function checkClass($class, $file = null)
+    private function checkClass(string $class, string $file = null)
     {
         $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
 
@@ -197,7 +201,7 @@ class DebugClassLoader
             $deprecations = $this->checkAnnotations($refl, $name);
 
             foreach ($deprecations as $message) {
-                @trigger_error($message, E_USER_DEPRECATED);
+                @trigger_error($message, \E_USER_DEPRECATED);
             }
         }
 
@@ -238,7 +242,7 @@ class DebugClassLoader
                 }
             }
 
-            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, PREG_SET_ORDER)) {
+            if ($refl->isInterface() && false !== strpos($doc, 'method') && preg_match_all('#\n \* @method\s+(static\s+)?+(?:[\w\|&\[\]\\\]+\s+)?(\w+(?:\s*\([^\)]*\))?)+(.+?([[:punct:]]\s*)?)?(?=\r?\n \*(?: @|/$|\r?\n))#', $doc, $notice, \PREG_SET_ORDER)) {
                 foreach ($notice as $method) {
                     $static = '' !== $method[1];
                     $name = $method[2];
@@ -258,7 +262,7 @@ class DebugClassLoader
         }
 
         $parent = get_parent_class($class);
-        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent);
+        $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent ?: null);
         if ($parent) {
             $parentAndOwnInterfaces[$parent] = $parent;
 
@@ -375,7 +379,7 @@ class DebugClassLoader
             if ($finalOrInternal || $method->isConstructor() || false === strpos($doc, '@param') || StatelessInvocation::class === $class) {
                 continue;
             }
-            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, PREG_SET_ORDER)) {
+            if (!preg_match_all('#\n\s+\* @param +((?(?!callable *\().*?|callable *\(.*\).*?))(?<= )\$([a-zA-Z0-9_\x7f-\xff]++)#', $doc, $matches, \PREG_SET_ORDER)) {
                 continue;
             }
             if (!isset(self::$annotatedParameters[$class][$method->name])) {
@@ -387,7 +391,7 @@ class DebugClassLoader
             foreach ($matches as list(, $parameterType, $parameterName)) {
                 if (!isset($definedParameters[$parameterName])) {
                     $parameterType = trim($parameterType);
-                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its parent class "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, $method->class);
+                    self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($class) ? 'interface' : 'parent class', $method->class);
                 }
             }
         }
@@ -440,7 +444,7 @@ class DebugClassLoader
     /**
      * `realpath` on MacOSX doesn't normalize the case of characters.
      */
-    private function darwinRealpath($real)
+    private function darwinRealpath(string $real): string
     {
         $i = 1 + strrpos($real, '/');
         $file = substr($real, $i);
@@ -455,7 +459,11 @@ class DebugClassLoader
                 $real = self::$darwinCache[$kDir][0];
             } else {
                 $dir = getcwd();
-                chdir($real);
+
+                if (!@chdir($real)) {
+                    return $real.$file;
+                }
+
                 $real = getcwd().'/';
                 chdir($dir);
 
@@ -482,7 +490,7 @@ class DebugClassLoader
         }
 
         if (isset($dirFiles[$file])) {
-            return $real .= $dirFiles[$file];
+            return $real.$dirFiles[$file];
         }
 
         $kFile = strtolower($file);
@@ -501,18 +509,15 @@ class DebugClassLoader
             self::$darwinCache[$kDir][1] = $dirFiles;
         }
 
-        return $real .= $dirFiles[$kFile];
+        return $real.$dirFiles[$kFile];
     }
 
     /**
      * `class_implements` includes interfaces from the parents so we have to manually exclude them.
      *
-     * @param string       $class
-     * @param string|false $parent
-     *
      * @return string[]
      */
-    private function getOwnInterfaces($class, $parent)
+    private function getOwnInterfaces(string $class, ?string $parent): array
     {
         $ownInterfaces = class_implements($class, false);
 
diff --git a/vendor/symfony/debug/ErrorHandler.php b/vendor/symfony/debug/ErrorHandler.php
index e866c91d..6d562c5f 100644
--- a/vendor/symfony/debug/ErrorHandler.php
+++ b/vendor/symfony/debug/ErrorHandler.php
@@ -23,6 +23,8 @@ use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface;
 use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
 use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * A generic ErrorHandler for the PHP engine.
  *
@@ -47,43 +49,45 @@ use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
  *
  * @final since Symfony 4.3
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
  */
 class ErrorHandler
 {
     private $levels = [
-        E_DEPRECATED => 'Deprecated',
-        E_USER_DEPRECATED => 'User Deprecated',
-        E_NOTICE => 'Notice',
-        E_USER_NOTICE => 'User Notice',
-        E_STRICT => 'Runtime Notice',
-        E_WARNING => 'Warning',
-        E_USER_WARNING => 'User Warning',
-        E_COMPILE_WARNING => 'Compile Warning',
-        E_CORE_WARNING => 'Core Warning',
-        E_USER_ERROR => 'User Error',
-        E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
-        E_COMPILE_ERROR => 'Compile Error',
-        E_PARSE => 'Parse Error',
-        E_ERROR => 'Error',
-        E_CORE_ERROR => 'Core Error',
+        \E_DEPRECATED => 'Deprecated',
+        \E_USER_DEPRECATED => 'User Deprecated',
+        \E_NOTICE => 'Notice',
+        \E_USER_NOTICE => 'User Notice',
+        \E_STRICT => 'Runtime Notice',
+        \E_WARNING => 'Warning',
+        \E_USER_WARNING => 'User Warning',
+        \E_COMPILE_WARNING => 'Compile Warning',
+        \E_CORE_WARNING => 'Core Warning',
+        \E_USER_ERROR => 'User Error',
+        \E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
+        \E_COMPILE_ERROR => 'Compile Error',
+        \E_PARSE => 'Parse Error',
+        \E_ERROR => 'Error',
+        \E_CORE_ERROR => 'Core Error',
     ];
 
     private $loggers = [
-        E_DEPRECATED => [null, LogLevel::INFO],
-        E_USER_DEPRECATED => [null, LogLevel::INFO],
-        E_NOTICE => [null, LogLevel::WARNING],
-        E_USER_NOTICE => [null, LogLevel::WARNING],
-        E_STRICT => [null, LogLevel::WARNING],
-        E_WARNING => [null, LogLevel::WARNING],
-        E_USER_WARNING => [null, LogLevel::WARNING],
-        E_COMPILE_WARNING => [null, LogLevel::WARNING],
-        E_CORE_WARNING => [null, LogLevel::WARNING],
-        E_USER_ERROR => [null, LogLevel::CRITICAL],
-        E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-        E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-        E_PARSE => [null, LogLevel::CRITICAL],
-        E_ERROR => [null, LogLevel::CRITICAL],
-        E_CORE_ERROR => [null, LogLevel::CRITICAL],
+        \E_DEPRECATED => [null, LogLevel::INFO],
+        \E_USER_DEPRECATED => [null, LogLevel::INFO],
+        \E_NOTICE => [null, LogLevel::WARNING],
+        \E_USER_NOTICE => [null, LogLevel::WARNING],
+        \E_STRICT => [null, LogLevel::WARNING],
+        \E_WARNING => [null, LogLevel::WARNING],
+        \E_USER_WARNING => [null, LogLevel::WARNING],
+        \E_COMPILE_WARNING => [null, LogLevel::WARNING],
+        \E_CORE_WARNING => [null, LogLevel::WARNING],
+        \E_USER_ERROR => [null, LogLevel::CRITICAL],
+        \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
+        \E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
+        \E_PARSE => [null, LogLevel::CRITICAL],
+        \E_ERROR => [null, LogLevel::CRITICAL],
+        \E_CORE_ERROR => [null, LogLevel::CRITICAL],
     ];
 
     private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED
@@ -154,7 +158,7 @@ class ErrorHandler
             $handler->setExceptionHandler($prev);
         }
 
-        $handler->throwAt(E_ALL & $handler->thrownErrors, true);
+        $handler->throwAt(\E_ALL & $handler->thrownErrors, true);
 
         return $handler;
     }
@@ -172,11 +176,10 @@ class ErrorHandler
     /**
      * Sets a logger to non assigned errors levels.
      *
-     * @param LoggerInterface $logger  A PSR-3 logger to put as default for the given levels
-     * @param array|int       $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
-     * @param bool            $replace Whether to replace or not any existing logger
+     * @param array|int $levels  An array map of E_* to LogLevel::* or an integer bit field of E_* constants
+     * @param bool      $replace Whether to replace or not any existing logger
      */
-    public function setDefaultLogger(LoggerInterface $logger, $levels = E_ALL, $replace = false)
+    public function setDefaultLogger(LoggerInterface $logger, $levels = \E_ALL, $replace = false)
     {
         $loggers = [];
 
@@ -188,7 +191,7 @@ class ErrorHandler
             }
         } else {
             if (null === $levels) {
-                $levels = E_ALL;
+                $levels = \E_ALL;
             }
             foreach ($this->loggers as $type => $log) {
                 if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) {
@@ -223,14 +226,14 @@ class ErrorHandler
             if (!\is_array($log)) {
                 $log = [$log];
             } elseif (!\array_key_exists(0, $log)) {
-                throw new \InvalidArgumentException('No logger provided');
+                throw new \InvalidArgumentException('No logger provided.');
             }
             if (null === $log[0]) {
                 $this->loggedErrors &= ~$type;
             } elseif ($log[0] instanceof LoggerInterface) {
                 $this->loggedErrors |= $type;
             } else {
-                throw new \InvalidArgumentException('Invalid logger provided');
+                throw new \InvalidArgumentException('Invalid logger provided.');
             }
             $this->loggers[$type] = $log + $prev[$type];
 
@@ -242,7 +245,7 @@ class ErrorHandler
 
         if ($flush) {
             foreach ($this->bootstrappingLogger->cleanLogs() as $log) {
-                $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : E_ERROR;
+                $type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : \E_ERROR;
                 if (!isset($flush[$type])) {
                     $this->bootstrappingLogger->log($log[0], $log[1], $log[2]);
                 } elseif ($this->loggers[$type][0]) {
@@ -280,7 +283,7 @@ class ErrorHandler
     public function throwAt($levels, $replace = false)
     {
         $prev = $this->thrownErrors;
-        $this->thrownErrors = ($levels | E_RECOVERABLE_ERROR | E_USER_ERROR) & ~E_USER_DEPRECATED & ~E_DEPRECATED;
+        $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED;
         if (!$replace) {
             $this->thrownErrors |= $prev;
         }
@@ -349,7 +352,7 @@ class ErrorHandler
     /**
      * Re-registers as a PHP error handler if levels changed.
      */
-    private function reRegister($prev)
+    private function reRegister(int $prev)
     {
         if ($prev !== $this->thrownErrors | $this->loggedErrors) {
             $handler = set_error_handler('var_dump');
@@ -382,15 +385,15 @@ class ErrorHandler
      */
     public function handleError($type, $message, $file, $line)
     {
-        if (\PHP_VERSION_ID >= 70300 && E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
-            $type = E_DEPRECATED;
+        if (\PHP_VERSION_ID >= 70300 && \E_WARNING === $type && '"' === $message[0] && false !== strpos($message, '" targeting switch is equivalent to "break')) {
+            $type = \E_DEPRECATED;
         }
 
         // Level is the current error reporting level to manage silent error.
         $level = error_reporting();
         $silenced = 0 === ($level & $type);
         // Strong errors are not authorized to be silenced.
-        $level |= E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED;
+        $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED;
         $log = $this->loggedErrors & $type;
         $throw = $this->thrownErrors & $type & $level;
         $type &= $level | $this->screamedErrors;
@@ -400,19 +403,7 @@ class ErrorHandler
         }
         $scope = $this->scopedErrors & $type;
 
-        if (4 < $numArgs = \func_num_args()) {
-            $context = $scope ? (func_get_arg(4) ?: []) : [];
-        } else {
-            $context = [];
-        }
-
-        if (isset($context['GLOBALS']) && $scope) {
-            $e = $context;                  // Whatever the signature of the method,
-            unset($e['GLOBALS'], $context); // $context is always a reference in 5.3
-            $context = $e;
-        }
-
-        if (false !== strpos($message, "class@anonymous\0")) {
+        if (false !== strpos($message, "@anonymous\0")) {
             $logMessage = $this->levels[$type].': '.(new FlattenException())->setMessage($message)->getMessage();
         } else {
             $logMessage = $this->levels[$type].': '.$message;
@@ -423,7 +414,7 @@ class ErrorHandler
             self::$toStringException = null;
         } elseif (!$throw && !($type & $level)) {
             if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) {
-                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
+                $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : [];
                 $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace);
             } elseif (isset(self::$silencedErrorCache[$id][$message])) {
                 $lightTrace = null;
@@ -458,7 +449,7 @@ class ErrorHandler
         }
 
         if ($throw) {
-            if (\PHP_VERSION_ID < 70400 && E_USER_ERROR & $type) {
+            if (\PHP_VERSION_ID < 70400 && \E_USER_ERROR & $type) {
                 for ($i = 1; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function'])
                         && '__toString' === $backtrace[$i]['function']
@@ -473,6 +464,8 @@ class ErrorHandler
                         // `return trigger_error($e, E_USER_ERROR);` allows this error handler
                         // to make $e get through the __toString() barrier.
 
+                        $context = 4 < \func_num_args() ? (func_get_arg(4) ?: []) : [];
+
                         foreach ($context as $e) {
                             if ($e instanceof \Throwable && $e->__toString() === $message) {
                                 self::$toStringException = $e;
@@ -496,7 +489,7 @@ class ErrorHandler
         if ($this->isRecursive) {
             $log = 0;
         } else {
-            if (!\defined('HHVM_VERSION')) {
+            if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
                 $currentErrorHandler = set_error_handler('var_dump');
                 restore_error_handler();
             }
@@ -508,7 +501,7 @@ class ErrorHandler
             } finally {
                 $this->isRecursive = false;
 
-                if (!\defined('HHVM_VERSION')) {
+                if (\PHP_VERSION_ID < (\PHP_VERSION_ID < 70400 ? 70316 : 70404)) {
                     set_error_handler($currentErrorHandler);
                 }
             }
@@ -533,11 +526,11 @@ class ErrorHandler
         if (!$exception instanceof \Exception) {
             $exception = new FatalThrowableError($exception);
         }
-        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : E_ERROR;
+        $type = $exception instanceof FatalErrorException ? $exception->getSeverity() : \E_ERROR;
         $handlerException = null;
 
         if (($this->loggedErrors & $type) || $exception instanceof FatalThrowableError) {
-            if (false !== strpos($message = $exception->getMessage(), "class@anonymous\0")) {
+            if (false !== strpos($message = $exception->getMessage(), "@anonymous\0")) {
                 $message = (new FlattenException())->setMessage($message)->getMessage();
             }
             if ($exception instanceof FatalErrorException) {
@@ -640,7 +633,7 @@ class ErrorHandler
             $error = error_get_last();
         }
 
-        if ($error && $error['type'] &= E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR) {
+        if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) {
             // Let's not throw anymore but keep logging
             $handler->throwAt(0, true);
             $trace = isset($error['backtrace']) ? $error['backtrace'] : null;
@@ -688,7 +681,7 @@ class ErrorHandler
     /**
      * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader.
      */
-    private function cleanTrace($backtrace, $type, $file, $line, $throw)
+    private function cleanTrace(array $backtrace, int $type, string $file, int $line, bool $throw): array
     {
         $lightTrace = $backtrace;
 
diff --git a/vendor/symfony/debug/Exception/ClassNotFoundException.php b/vendor/symfony/debug/Exception/ClassNotFoundException.php
index fa98c497..998e4a98 100644
--- a/vendor/symfony/debug/Exception/ClassNotFoundException.php
+++ b/vendor/symfony/debug/Exception/ClassNotFoundException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundException::class, \Symfony\Component\ErrorHandler\Error\ClassNotFoundError::class), \E_USER_DEPRECATED);
+
 /**
  * Class (or Trait or Interface) Not Found Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\ClassNotFoundError instead.
  */
 class ClassNotFoundException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/FatalErrorException.php b/vendor/symfony/debug/Exception/FatalErrorException.php
index 93880fbc..ca342652 100644
--- a/vendor/symfony/debug/Exception/FatalErrorException.php
+++ b/vendor/symfony/debug/Exception/FatalErrorException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorException::class, \Symfony\Component\ErrorHandler\Error\FatalError::class), \E_USER_DEPRECATED);
+
 /**
  * Fatal Error Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\FatalError instead.
  */
 class FatalErrorException extends \ErrorException
 {
diff --git a/vendor/symfony/debug/Exception/FatalThrowableError.php b/vendor/symfony/debug/Exception/FatalThrowableError.php
index cdafb2a5..65634f51 100644
--- a/vendor/symfony/debug/Exception/FatalThrowableError.php
+++ b/vendor/symfony/debug/Exception/FatalThrowableError.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4.', FatalThrowableError::class), \E_USER_DEPRECATED);
+
 /**
  * Fatal Throwable Error.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4
  */
 class FatalThrowableError extends FatalErrorException
 {
@@ -22,14 +26,14 @@ class FatalThrowableError extends FatalErrorException
 
     public function __construct(\Throwable $e)
     {
-        $this->originalClassName = \get_class($e);
+        $this->originalClassName = get_debug_type($e);
 
         if ($e instanceof \ParseError) {
-            $severity = E_PARSE;
+            $severity = \E_PARSE;
         } elseif ($e instanceof \TypeError) {
-            $severity = E_RECOVERABLE_ERROR;
+            $severity = \E_RECOVERABLE_ERROR;
         } else {
-            $severity = E_ERROR;
+            $severity = \E_ERROR;
         }
 
         \ErrorException::__construct(
diff --git a/vendor/symfony/debug/Exception/FlattenException.php b/vendor/symfony/debug/Exception/FlattenException.php
index 2e97ac39..b48769a2 100644
--- a/vendor/symfony/debug/Exception/FlattenException.php
+++ b/vendor/symfony/debug/Exception/FlattenException.php
@@ -20,6 +20,8 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  * Basically, this class removes all objects from the trace.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\FlattenException instead.
  */
 class FlattenException
 {
@@ -34,12 +36,18 @@ class FlattenException
     private $file;
     private $line;
 
+    /**
+     * @return static
+     */
     public static function create(\Exception $exception, $statusCode = null, array $headers = [])
     {
         return static::createFromThrowable($exception, $statusCode, $headers);
     }
 
-    public static function createFromThrowable(\Throwable $exception, ?int $statusCode = null, array $headers = []): self
+    /**
+     * @return static
+     */
+    public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = [])
     {
         $e = new static();
         $e->setMessage($exception->getMessage());
@@ -59,7 +67,7 @@ class FlattenException
         $e->setStatusCode($statusCode);
         $e->setHeaders($headers);
         $e->setTraceFromThrowable($exception);
-        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : \get_class($exception));
+        $e->setClass($exception instanceof FatalThrowableError ? $exception->getOriginalClassName() : get_debug_type($exception));
         $e->setFile($exception->getFile());
         $e->setLine($exception->getLine());
 
@@ -126,7 +134,7 @@ class FlattenException
      */
     public function setClass($class)
     {
-        $this->class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
+        $this->class = false !== strpos($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class;
 
         return $this;
     }
@@ -171,9 +179,9 @@ class FlattenException
      */
     public function setMessage($message)
     {
-        if (false !== strpos($message, "class@anonymous\0")) {
-            $message = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
-                return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
+        if (false !== strpos($message, "@anonymous\0")) {
+            $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) {
+                return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0];
             }, $message);
         }
 
@@ -233,7 +241,7 @@ class FlattenException
      */
     public function setTraceFromException(\Exception $exception)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1, use "setTraceFromThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->setTraceFromThrowable($exception);
     }
@@ -285,7 +293,7 @@ class FlattenException
         return $this;
     }
 
-    private function flattenArgs($args, $level = 0, &$count = 0)
+    private function flattenArgs(array $args, int $level = 0, int &$count = 0): array
     {
         $result = [];
         foreach ($args as $key => $value) {
@@ -321,7 +329,7 @@ class FlattenException
         return $result;
     }
 
-    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value)
+    private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string
     {
         $array = new \ArrayObject($value);
 
diff --git a/vendor/symfony/debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Exception/OutOfMemoryException.php
index fec19798..b1dc0ef4 100644
--- a/vendor/symfony/debug/Exception/OutOfMemoryException.php
+++ b/vendor/symfony/debug/Exception/OutOfMemoryException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', OutOfMemoryException::class, \Symfony\Component\ErrorHandler\Error\OutOfMemoryError::class), \E_USER_DEPRECATED);
+
 /**
  * Out of memory exception.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\OutOfMemoryError instead.
  */
 class OutOfMemoryException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/SilencedErrorContext.php b/vendor/symfony/debug/Exception/SilencedErrorContext.php
index 95bd7795..03e2fb30 100644
--- a/vendor/symfony/debug/Exception/SilencedErrorContext.php
+++ b/vendor/symfony/debug/Exception/SilencedErrorContext.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', SilencedErrorContext::class, \Symfony\Component\ErrorHandler\Exception\SilencedErrorContext::class), \E_USER_DEPRECATED);
+
 /**
  * Data Object that represents a Silenced Error.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext instead.
  */
 class SilencedErrorContext implements \JsonSerializable
 {
diff --git a/vendor/symfony/debug/Exception/UndefinedFunctionException.php b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
index d936c875..42ab2ec9 100644
--- a/vendor/symfony/debug/Exception/UndefinedFunctionException.php
+++ b/vendor/symfony/debug/Exception/UndefinedFunctionException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionException::class, \Symfony\Component\ErrorHandler\Error\UndefinedFunctionError::class), \E_USER_DEPRECATED);
+
 /**
  * Undefined Function Exception.
  *
  * @author Konstanton Myakshin <koc-dp@yandex.ru>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError instead.
  */
 class UndefinedFunctionException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Exception/UndefinedMethodException.php
index f627561f..d72046f3 100644
--- a/vendor/symfony/debug/Exception/UndefinedMethodException.php
+++ b/vendor/symfony/debug/Exception/UndefinedMethodException.php
@@ -11,10 +11,14 @@
 
 namespace Symfony\Component\Debug\Exception;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodException::class, \Symfony\Component\ErrorHandler\Error\UndefinedMethodError::class), \E_USER_DEPRECATED);
+
 /**
  * Undefined Method Exception.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\Error\UndefinedMethodError instead.
  */
 class UndefinedMethodException extends FatalErrorException
 {
diff --git a/vendor/symfony/debug/ExceptionHandler.php b/vendor/symfony/debug/ExceptionHandler.php
index 743de656..21be2827 100644
--- a/vendor/symfony/debug/ExceptionHandler.php
+++ b/vendor/symfony/debug/ExceptionHandler.php
@@ -15,6 +15,8 @@ use Symfony\Component\Debug\Exception\FlattenException;
 use Symfony\Component\Debug\Exception\OutOfMemoryException;
 use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ExceptionHandler::class, \Symfony\Component\ErrorHandler\ErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * ExceptionHandler converts an exception to a Response object.
  *
@@ -28,6 +30,8 @@ use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
  * @author Nicolas Grekas <p@tchwork.com>
  *
  * @final since Symfony 4.3
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorHandler instead.
  */
 class ExceptionHandler
 {
@@ -170,12 +174,12 @@ class ExceptionHandler
      * This method uses plain PHP functions like header() and echo to output
      * the response.
      *
-     * @param \Exception|FlattenException $exception An \Exception or FlattenException instance
+     * @param \Throwable|FlattenException $exception A \Throwable or FlattenException instance
      */
     public function sendPhpResponse($exception)
     {
-        if (!$exception instanceof FlattenException) {
-            $exception = FlattenException::create($exception);
+        if ($exception instanceof \Throwable) {
+            $exception = FlattenException::createFromThrowable($exception);
         }
 
         if (!headers_sent()) {
@@ -252,7 +256,11 @@ EOF
                 foreach ($e['trace'] as $trace) {
                     $content .= '<tr><td>';
                     if ($trace['function']) {
-                        $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>(<span class="trace-arguments">%s</span>)', $this->formatClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args']));
+                        $content .= sprintf('at <span class="trace-class">%s</span><span class="trace-type">%s</span><span class="trace-method">%s</span>', $this->formatClass($trace['class']), $trace['type'], $trace['function']);
+
+                        if (isset($trace['args'])) {
+                            $content .= sprintf('(<span class="trace-arguments">%s</span>)', $this->formatArgs($trace['args']));
+                        }
                     }
                     if (isset($trace['file']) && isset($trace['line'])) {
                         $content .= $this->formatPath($trace['file'], $trace['line']);
@@ -355,7 +363,7 @@ EOF;
 EOF;
     }
 
-    private function decorate($content, $css)
+    private function decorate(string $content, string $css): string
     {
         return <<<EOF
 <!DOCTYPE html>
@@ -372,14 +380,14 @@ EOF;
 EOF;
     }
 
-    private function formatClass($class)
+    private function formatClass(string $class): string
     {
         $parts = explode('\\', $class);
 
         return sprintf('<abbr title="%s">%s</abbr>', $class, array_pop($parts));
     }
 
-    private function formatPath($path, $line)
+    private function formatPath(string $path, int $line): string
     {
         $file = $this->escapeHtml(preg_match('#[^/\\\\]*+$#', $path, $file) ? $file[0] : $path);
         $fmt = $this->fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
@@ -390,7 +398,7 @@ EOF;
 
         if (\is_string($fmt)) {
             $i = strpos($f = $fmt, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, PREG_SPLIT_DELIM_CAPTURE);
+            $fmt = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
 
             for ($i = 1; isset($fmt[$i]); ++$i) {
                 if (0 === strpos($path, $k = $fmt[$i++])) {
@@ -413,12 +421,8 @@ EOF;
 
     /**
      * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
      */
-    private function formatArgs(array $args)
+    private function formatArgs(array $args): string
     {
         $result = [];
         foreach ($args as $key => $item) {
@@ -445,17 +449,17 @@ EOF;
     /**
      * HTML-encodes a string.
      */
-    private function escapeHtml($str)
+    private function escapeHtml(string $str): string
     {
-        return htmlspecialchars($str, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset);
+        return htmlspecialchars($str, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
     }
 
-    private function getSymfonyGhostAsSvg()
+    private function getSymfonyGhostAsSvg(): string
     {
         return '<svg viewBox="0 0 136 81" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4"><path d="M92.4 20.4a23.2 23.2 0 0 1 9 1.9 23.7 23.7 0 0 1 5.2 3 24.3 24.3 0 0 1 3.4 3.4 24.8 24.8 0 0 1 5 9.4c.5 1.7.8 3.4 1 5.2v14.5h.4l.5.2a7.4 7.4 0 0 0 2.5.2l.2-.2.6-.8.8-1.3-.2-.1a5.5 5.5 0 0 1-.8-.3 5.6 5.6 0 0 1-2.3-1.8 5.7 5.7 0 0 1-.9-1.6 6.5 6.5 0 0 1-.2-2.8 7.3 7.3 0 0 1 .5-2l.3-.3.8-.9.3-.3c.2-.2.5-.3.8-.3H120.7c.2 0 .3-.1.4 0h.4l.2.1.3.2.2-.4.3-.4.1-.1 1.2-1 .3-.2.4-.1.4-.1h.3l1.5.1.4.1.8.5.1.2 1 1.1v.2H129.4l.4-.2 1.4-.5h1.1c.3 0 .7.2 1 .4.2 0 .3.2.5.3l.2.2.5.3.4.6.1.3.4 1.4.1.4v.6a7.8 7.8 0 0 1-.1.6 9.9 9.9 0 0 1-.8 2.4 7.8 7.8 0 0 1-3 3.3 6.4 6.4 0 0 1-1 .5 6.1 6.1 0 0 1-.6.2l-.7.1h-.1a23.4 23.4 0 0 1-.2 1.7 14.3 14.3 0 0 1-.6 2.1l-.8 2a9.2 9.2 0 0 1-.4.6l-.7 1a9.1 9.1 0 0 1-2.3 2.2c-.9.5-2 .6-3 .7l-1.4.1h-.5l-.4.1a15.8 15.8 0 0 1-2.8-.1v4.2a9.7 9.7 0 0 1-.7 3.5 9.6 9.6 0 0 1-1.7 2.8 9.3 9.3 0 0 1-3 2.3 9 9 0 0 1-5.4.7 9 9 0 0 1-3-1 9.4 9.4 0 0 1-2.7-2.5 10 10 0 0 1-1 1.2 9.3 9.3 0 0 1-2 1.3 9 9 0 0 1-2.4 1 9 9 0 0 1-6.5-1.1A9.4 9.4 0 0 1 85 77V77a10.9 10.9 0 0 1-.6.6 9.3 9.3 0 0 1-2.7 2 9 9 0 0 1-6 .8 9 9 0 0 1-2.4-1 9.3 9.3 0 0 1-2.3-1.7 9.6 9.6 0 0 1-1.8-2.8 9.7 9.7 0 0 1-.8-3.7v-4a18.5 18.5 0 0 1-2.9.2l-1.2-.1c-1.9-.3-3.7-1-5.1-2.1A8.2 8.2 0 0 1 58 64a10.2 10.2 0 0 1-.9-1.2 15.3 15.3 0 0 1-.7-1.3 20.8 20.8 0 0 1-1.9-6.2v-.2a6.5 6.5 0 0 1-1-.3 6.1 6.1 0 0 1-.6-.3 6.6 6.6 0 0 1-.9-.5 8.2 8.2 0 0 1-2.7-3.8 10 10 0 0 1-.3-1 10.3 10.3 0 0 1-.3-1.9V47v-.4l.1-.4.6-1.4.1-.2a2 2 0 0 1 .8-.8l.3-.2.3-.2a3.2 3.2 0 0 1 1.8-.5h.4l.3.2 1.4.6.2.2.4.3.3.4.7-.7.2-.2.4-.2.6-.2h2.1l.4.2.4.2.3.2.8 1 .2-.1h.1v-.1H63l1.1.1h.3l.8.5.3.4.7 1 .2.3.1.5a11 11 0 0 1 .2 1.5c0 .8 0 1.6-.3 2.3a6 6 0 0 1-.5 1.2 5.5 5.5 0 0 1-3.3 2.5 12.3 12.3 0 0 0 1.4 3h.1l.2.1 1 .2h1.5l.5-.2H67.8l.5-.2h.1V44v-.4a26.7 26.7 0 0 1 .3-2.3 24.7 24.7 0 0 1 5.7-12.5 24.2 24.2 0 0 1 3.5-3.3 23.7 23.7 0 0 1 4.9-3 23.2 23.2 0 0 1 5.6-1.7 23.7 23.7 0 0 1 4-.3zm-.3 2a21.2 21.2 0 0 0-8 1.7 21.6 21.6 0 0 0-4.8 2.7 22.2 22.2 0 0 0-3.2 3 22.7 22.7 0 0 0-5 9.2 23.4 23.4 0 0 0-.7 4.9v15.7l-.5.1a34.3 34.3 0 0 1-1.5.3h-.2l-.4.1h-.4l-.9.2a10 10 0 0 1-1.9 0c-.5 0-1-.2-1.5-.4a1.8 1.8 0 0 1-.3-.2 2 2 0 0 1-.3-.3 5.2 5.2 0 0 1-.1-.2 9 9 0 0 1-.6-.9 13.8 13.8 0 0 1-1-2 14.3 14.3 0 0 1-.6-2 14 14 0 0 1-.1-.8v-.2h.3a12.8 12.8 0 0 0 1.4-.2 4.4 4.4 0 0 0 .3 0 3.6 3.6 0 0 0 1.1-.7 3.4 3.4 0 0 0 1.2-1.7l.2-1.2a5.1 5.1 0 0 0 0-.8 7.2 7.2 0 0 0-.1-.8l-.7-1-1.2-.2-1 .7-.1 1.3a5 5 0 0 1 .1.4v.6a1 1 0 0 1 0 .3c-.1.3-.4.4-.7.5l-1.2.4v-.7A9.9 9.9 0 0 1 60 49l.3-.6v-.2l.1-.1v-1.6l-1-1.2h-1.5l-1 1.1v.4a5.3 5.3 0 0 0-.2.6 5.5 5.5 0 0 0 0 .5c0 .7 0 1.4.3 2 0 .4.2.8.4 1.2L57 51a9.5 9.5 0 0 1-1.1-.5h-.2a2 2 0 0 1-.4-.3c-.4-.4-.5-1-.6-1.6a5.6 5.6 0 0 1 0-.5v-.5-.5l-.6-1.5-1.4-.6-.9.3s-.2 0-.3.2a2 2 0 0 1-.1 0l-.6 1.4v.7a8.5 8.5 0 0 0 .5 2c.4 1.1 1 2.1 2 2.8a4.7 4.7 0 0 0 2.1.9h1a22.8 22.8 0 0 0 .1 1 18.1 18.1 0 0 0 .8 3.8 18.2 18.2 0 0 0 1.6 3.7l1 1.3c1 1 2.3 1.6 3.7 2a11.7 11.7 0 0 0 4.8 0h.4l.5-.2.5-.1.6-.2v6.6a8 8 0 0 0 .1 1.3 7.5 7.5 0 0 0 2.4 4.3 7.2 7.2 0 0 0 2.3 1.3 7 7 0 0 0 7-1.1 7.5 7.5 0 0 0 2-2.6A7.7 7.7 0 0 0 85 72V71a8.2 8.2 0 0 0 .2 1.3c0 .7.3 1.4.6 2a7.5 7.5 0 0 0 1.7 2.3 7.3 7.3 0 0 0 2.2 1.4 7.1 7.1 0 0 0 4.6.2 7.2 7.2 0 0 0 2.4-1.2 7.5 7.5 0 0 0 2.1-2.7 7.8 7.8 0 0 0 .7-2.4V71a9.3 9.3 0 0 0 .1.6 7.6 7.6 0 0 0 .6 2.5 7.5 7.5 0 0 0 2.4 3 7.1 7.1 0 0 0 7 .8 7.3 7.3 0 0 0 2.3-1.5 7.5 7.5 0 0 0 1.6-2.3 7.6 7.6 0 0 0 .5-2l.1-1.1v-6.7l.4.1a12.2 12.2 0 0 0 2 .5 11.1 11.1 0 0 0 2.5 0h.8l1.2-.1a9.5 9.5 0 0 0 1.4-.2l.9-.3a3.5 3.5 0 0 0 .6-.4l1.2-1.4a12.2 12.2 0 0 0 .8-1.2c0-.3.2-.5.3-.7a15.9 15.9 0 0 0 .7-2l.3-1.6v-1.3l.2-.9V54.6a15.5 15.5 0 0 0 1.8 0 4.5 4.5 0 0 0 1.4-.5 5.7 5.7 0 0 0 2.5-3.2 7.6 7.6 0 0 0 .4-1.5v-.3l-.4-1.4a5.2 5.2 0 0 1-.2-.1l-.4-.4a3.8 3.8 0 0 0-.2 0 1.4 1.4 0 0 0-.5-.2l-1.4.4-.7 1.3v.7a5.7 5.7 0 0 1-.1.8l-.7 1.4a1.9 1.9 0 0 1-.5.3h-.3a9.6 9.6 0 0 1-.8.3 8.8 8.8 0 0 1-.6 0l.2-.4.2-.5.2-.3v-.4l.1-.2V50l.1-1 .1-.6v-.6a4.8 4.8 0 0 0 0-.8v-.2l-1-1.1-1.5-.2-1.1 1-.2 1.4v.1l.2.4.2.3v.4l.1 1.1v.3l.1.5v.8a9.6 9.6 0 0 1-.8-.3l-.2-.1h-.3l-.8-.1h-.2a1.6 1.6 0 0 1-.2-.2.9.9 0 0 1-.2-.2 1 1 0 0 1-.1-.5l.2-.9v-1.2l-.9-.8h-1.2l-.8.9v.3a4.8 4.8 0 0 0-.3 2l.3.9a3.5 3.5 0 0 0 1.2 1.6l1 .5.8.2 1.4.1h.4l.2.1a12.1 12.1 0 0 1-1 2.6 13.2 13.2 0 0 1-.8 1.5 9.5 9.5 0 0 1-1 1.2l-.2.3a1.7 1.7 0 0 1-.4.3 2.4 2.4 0 0 1-.7.2h-2.5a7.8 7.8 0 0 1-.6-.2l-.7-.2h-.2a14.8 14.8 0 0 1-.6-.2 23.4 23.4 0 0 1-.4-.1l-.4-.1-.3-.1V43.9a34.6 34.6 0 0 0 0-.6 23.6 23.6 0 0 0-.4-3 22.7 22.7 0 0 0-1.5-4.7 22.6 22.6 0 0 0-4.6-6.7 21.9 21.9 0 0 0-6.9-4.7 21.2 21.2 0 0 0-8.1-1.8H92zm9.1 33.7l.3.1a1 1 0 0 1 .6.8v.4a8.4 8.4 0 0 1 0 .5 8.8 8.8 0 0 1-1.6 4.2l-1 1.3A10 10 0 0 1 95 66c-1.3.3-2.7.4-4 .3a10.4 10.4 0 0 1-2.7-.8 10 10 0 0 1-3.6-2.5 9.3 9.3 0 0 1-.8-1 9 9 0 0 1-.7-1.2 8.6 8.6 0 0 1-.8-3.4V57a1 1 0 0 1 .3-.6 1 1 0 0 1 1.3-.2 1 1 0 0 1 .4.8v.4a6.5 6.5 0 0 0 .5 2.2 7 7 0 0 0 2.1 2.8l1 .6c2.6 1.6 6 1.6 8.5 0a8 8 0 0 0 1.1-.6 7.6 7.6 0 0 0 1.2-1.2 7 7 0 0 0 1-1.7 6.5 6.5 0 0 0 .4-2.5 1 1 0 0 1 .7-1h.4zM30.7 43.7c-15.5 1-28.5-6-30.1-16.4C-1.2 15.7 11.6 4 29 1.3 46.6-1.7 62.3 5.5 64 17.1c1.6 10.4-8.7 21-23.7 25a31.2 31.2 0 0 0 0 .9v.3a19 19 0 0 0 .1 1l.1.4.1.9a4.7 4.7 0 0 0 .5 1l.7 1a9.2 9.2 0 0 0 1.2 1l1.5.8.6.8-.7.6-1.1.3a11.2 11.2 0 0 1-2.6.4 8.6 8.6 0 0 1-3-.5 8.5 8.5 0 0 1-1-.4 11.2 11.2 0 0 1-1.8-1.2 13.3 13.3 0 0 1-1-1 18 18 0 0 1-.7-.6l-.4-.4a23.4 23.4 0 0 1-1.3-1.8l-.1-.1-.3-.5V45l-.3-.6v-.7zM83.1 36c3.6 0 6.5 3.2 6.5 7.1 0 4-3 7.2-6.5 7.2S76.7 47 76.7 43 79.6 36 83 36zm18 0c3.6 0 6.5 3.2 6.5 7.1 0 4-2.9 7.2-6.4 7.2S94.7 47 94.7 43s3-7.1 6.5-7.1zm-18 6.1c2 0 3.5 1.6 3.5 3.6S85 49.2 83 49.2s-3.4-1.6-3.4-3.6S81.2 42 83 42zm17.9 0c1.9 0 3.4 1.6 3.4 3.6s-1.5 3.6-3.4 3.6c-2 0-3.5-1.6-3.5-3.6S99.1 42 101 42zM17 28c-.3 1.6-1.8 5-5.2 5.8-2.5.6-4.1-.8-4.5-2.6-.4-1.9.7-3.5 2.1-4.5A3.5 3.5 0 0 1 8 24.6c-.4-2 .8-3.7 3.2-4.2 1.9-.5 3.1.2 3.4 1.5.3 1.1-.5 2.2-1.8 2.5-.9.3-1.6 0-1.7-.6a1.4 1.4 0 0 1 0-.7s.3.2 1 0c.7-.1 1-.7.9-1.2-.2-.6-1-.8-1.8-.6-1 .2-2 1-1.7 2.6.3 1 .9 1.6 1.5 1.8l.7-.2c1-.2 1.5 0 1.6.5 0 .4-.2 1-1.2 1.2a3.3 3.3 0 0 1-1.5 0c-.9.7-1.6 1.9-1.3 3.2.3 1.3 1.3 2.2 3 1.8 2.5-.7 3.8-3.7 4.2-5-.3-.5-.6-1-.7-1.6-.1-.5.1-1 .9-1.2.4 0 .7.2.8.8a2.8 2.8 0 0 1 0 1l.7 1c.6-2 1.4-4 1.7-4 .6-.2 1.5.6 1.5.6-.8.7-1.7 2.4-2.3 4.2.8.6 1.6 1 2.1 1 .5-.1.8-.6 1-1.2-.3-2.2 1-4.3 2.3-4.6.7-.2 1.3.2 1.4.8.1.5 0 1.3-.9 1.7-.2-1-.6-1.3-1-1.3-.4.1-.7 1.4-.4 2.8.2 1 .7 1.5 1.3 1.4.8-.2 1.3-1.2 1.7-2.1-.3-2.1.9-4.2 2.2-4.5.7-.2 1.2.1 1.4 1 .4 1.4-1 2.8-2.2 3.4.3.7.7 1 1.3.9 1-.3 1.6-1.5 2-2.5l-.5-3v-.3s1.6-.3 1.8.6v.1c.2-.6.7-1.2 1.3-1.4.8-.1 1.5.6 1.7 1.6.5 2.2-.5 4.4-1.8 4.7H33a31.9 31.9 0 0 0 1 5.2c-.4.1-1.8.4-2-.4l-.5-5.6c-.5 1-1.3 2.2-2.5 2.4-1 .3-1.6-.3-2-1.1-.5 1-1.3 2.1-2.4 2.4-.8.2-1.5-.1-2-1-.3.8-.9 1.5-1.5 1.7-.7.1-1.5-.3-2.4-1-.3.8-.4 1.6-.4 2.2 0 0-.7 0-.8-.4-.1-.5 0-1.5.3-2.7a10.3 10.3 0 0 1-.7-.8zm38.2-17.8l.2.9c.5 1.9.4 4.4.8 6.4 0 .6-.4 3-1.4 3.3-.2 0-.3 0-.4-.4-.1-.7 0-1.6-.3-2.6-.2-1.1-.8-1.6-1.5-1.5-.8.2-1.3 1-1.6 2l-.1-.5c-.2-1-1.8-.6-1.8-.6a6.2 6.2 0 0 1 .4 1.3l.2 1c-.2.5-.6 1-1.2 1l-.2.1a7 7 0 0 0-.1-.8c-.3-1.1-1-2-1.6-1.8a.7.7 0 0 0-.4.3c-1.3.3-2.4 2-2.1 3.9-.2.9-.6 1.7-1 1.9-.5 0-.8-.5-1.1-1.8l-.1-1.2a4 4 0 0 0 0-1.7c0-.4-.4-.7-.8-.6-.7.2-.9 1.7-.5 3.8-.2 1-.6 2-1.3 2-.4.2-.8-.2-1-1l-.2-3c1.2-.5 2-1 1.8-1.7-.1-.5-.8-.7-.8-.7s0 .7-1 1.2l-.2-1.4c-.1-.6-.4-1-1.7-.6l.4 1 .2 1.5h-1v.8c0 .3.4.3 1 .2 0 1.3 0 2.7.2 3.6.3 1.4 1.2 2 2 1.7 1-.2 1.6-1.3 2-2.3.3 1.2 1 2 1.9 1.7.7-.2 1.2-1.1 1.6-2.2.4.8 1.1 1.1 2 1 1.2-.4 1.7-1.6 1.8-2.8h.2c.6-.2 1-.6 1.3-1 0 .8 0 1.5.2 2.1.1.5.3.7.6.6.5-.1 1-.9 1-.9a4 4 0 0 1-.3-1c-.3-1.3.3-3.6 1-3.7.2 0 .3.2.5.7v.8l.2 1.5v.7c.2.7.7 1.3 1.5 1 1.3-.2 2-2.6 2.1-3.9.3.2.6.2 1 .1-.6-2.2 0-6.1-.3-7.9-.1-.4-1-.5-1.7-.5h-.4zm-21.5 12c.4 0 .7.3 1 1.1.2 1.3-.3 2.6-.9 2.8-.2 0-.7 0-1-1.2v-.4c0-1.3.4-2 1-2.2zm-5.2 1c.3 0 .6.2.6.5.2.6-.3 1.3-1.2 2-.3-1.4.1-2.3.6-2.5zm18-.4c-.5.2-1-.4-1.2-1.2-.2-1 0-2.1.7-2.5v.5c.2.7.6 1.5 1.3 1.9 0 .7-.2 1.2-.7 1.3zm10-1.6c0 .5.4.7 1 .6.8-.2 1-1 .8-1.6 0-.5-.4-1-1-.8-.5.1-1 .9-.8 1.8zm-14.3-5.5c0-.4-.5-.7-1-.5-.8.2-1 1-.9 1.5.2.6.5 1 1 .8.5 0 1.1-1 1-1.8z" fill="#fff" fill-opacity=".6"/>'.$this->addElementToGhost().'</svg>';
     }
 
-    private function addElementToGhost()
+    private function addElementToGhost(): string
     {
         if (!isset(self::GHOST_ADDONS[date('m-d')])) {
             return '';
diff --git a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
index 6ffb8363..64d75513 100644
--- a/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php
@@ -17,10 +17,14 @@ use Symfony\Component\Debug\DebugClassLoader;
 use Symfony\Component\Debug\Exception\ClassNotFoundException;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ClassNotFoundFatalErrorHandler::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for classes that do not exist.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler instead.
  */
 class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
 {
@@ -29,50 +33,34 @@ class ClassNotFoundFatalErrorHandler implements FatalErrorHandlerInterface
      */
     public function handleError(array $error, FatalErrorException $exception)
     {
-        $messageLen = \strlen($error['message']);
-        $notFoundSuffix = '\' not found';
-        $notFoundSuffixLen = \strlen($notFoundSuffix);
-        if ($notFoundSuffixLen > $messageLen) {
+        if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $error['message'], $matches)) {
             return null;
         }
-
-        if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
-            return null;
+        $typeName = strtolower($matches[1]);
+        $fullyQualifiedClassName = $matches[2];
+
+        if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
+            $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
+            $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
+            $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
+            $tail = ' for another namespace?';
+        } else {
+            $className = $fullyQualifiedClassName;
+            $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
+            $tail = '?';
         }
 
-        foreach (['class', 'interface', 'trait'] as $typeName) {
-            $prefix = ucfirst($typeName).' \'';
-            $prefixLen = \strlen($prefix);
-            if (0 !== strpos($error['message'], $prefix)) {
-                continue;
-            }
-
-            $fullyQualifiedClassName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
-            if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) {
-                $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1);
-                $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex);
-                $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix);
-                $tail = ' for another namespace?';
+        if ($candidates = $this->getClassCandidates($className)) {
+            $tail = array_pop($candidates).'"?';
+            if ($candidates) {
+                $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
             } else {
-                $className = $fullyQualifiedClassName;
-                $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className);
-                $tail = '?';
-            }
-
-            if ($candidates = $this->getClassCandidates($className)) {
-                $tail = array_pop($candidates).'"?';
-                if ($candidates) {
-                    $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail;
-                } else {
-                    $tail = ' for "'.$tail;
-                }
+                $tail = ' for "'.$tail;
             }
-            $message .= "\nDid you forget a \"use\" statement".$tail;
-
-            return new ClassNotFoundException($message, $exception);
         }
+        $message .= "\nDid you forget a \"use\" statement".$tail;
 
-        return null;
+        return new ClassNotFoundException($message, $exception);
     }
 
     /**
diff --git a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
index 6b87eb30..cc7a0ffa 100644
--- a/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
+++ b/vendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php
@@ -13,18 +13,21 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 
 use Symfony\Component\Debug\Exception\FatalErrorException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', FatalErrorHandlerInterface::class, \Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface::class), \E_USER_DEPRECATED);
+
 /**
  * Attempts to convert fatal errors to exceptions.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\FatalErrorHandler\FatalErrorHandlerInterface instead.
  */
 interface FatalErrorHandlerInterface
 {
     /**
      * Attempts to convert an error into an exception.
      *
-     * @param array               $error     An array as returned by error_get_last()
-     * @param FatalErrorException $exception A FatalErrorException instance
+     * @param array $error An array as returned by error_get_last()
      *
      * @return FatalErrorException|null A FatalErrorException instance if the class is able to convert the error, null otherwise
      */
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
index 77fc7aa2..95096a9c 100644
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php
@@ -14,10 +14,14 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 use Symfony\Component\Debug\Exception\UndefinedFunctionException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedFunctionFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for undefined functions.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer instead.
  */
 class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface
 {
diff --git a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
index ff2843b6..773f4dfa 100644
--- a/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
+++ b/vendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php
@@ -14,10 +14,14 @@ namespace Symfony\Component\Debug\FatalErrorHandler;
 use Symfony\Component\Debug\Exception\FatalErrorException;
 use Symfony\Component\Debug\Exception\UndefinedMethodException;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', UndefinedMethodFatalErrorHandler::class, \Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer::class), \E_USER_DEPRECATED);
+
 /**
  * ErrorHandler for undefined methods.
  *
  * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer instead.
  */
 class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface
 {
diff --git a/vendor/symfony/debug/LICENSE b/vendor/symfony/debug/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/debug/LICENSE
+++ b/vendor/symfony/debug/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/debug/README.md b/vendor/symfony/debug/README.md
index a1d16175..90b36f0c 100644
--- a/vendor/symfony/debug/README.md
+++ b/vendor/symfony/debug/README.md
@@ -1,12 +1,29 @@
 Debug Component
 ===============
 
+**CAUTION**: this component is deprecated since Symfony 4.4. Instead, use the
+[ErrorHandler component](https://github.com/symfony/symfony/tree/master/src/Symfony/Component/ErrorHandler).
+
+-----
+
 The Debug component provides tools to ease debugging PHP code.
 
+Getting Started
+---------------
+
+```
+$ composer install symfony/debug
+```
+
+```php
+use Symfony\Component\Debug\Debug;
+
+Debug::enable();
+```
+
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/debug/index.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/debug/Tests/DebugClassLoaderTest.php b/vendor/symfony/debug/Tests/DebugClassLoaderTest.php
deleted file mode 100644
index 30cf4a33..00000000
--- a/vendor/symfony/debug/Tests/DebugClassLoaderTest.php
+++ /dev/null
@@ -1,444 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\DebugClassLoader;
-
-class DebugClassLoaderTest extends TestCase
-{
-    /**
-     * @var int Error reporting level before running tests
-     */
-    private $errorReporting;
-
-    private $loader;
-
-    protected function setUp(): void
-    {
-        $this->errorReporting = error_reporting(E_ALL);
-        $this->loader = new ClassLoader();
-        spl_autoload_register([$this->loader, 'loadClass'], true, true);
-        DebugClassLoader::enable();
-    }
-
-    protected function tearDown(): void
-    {
-        DebugClassLoader::disable();
-        spl_autoload_unregister([$this->loader, 'loadClass']);
-        error_reporting($this->errorReporting);
-    }
-
-    public function testIdempotence()
-    {
-        DebugClassLoader::enable();
-
-        $functions = spl_autoload_functions();
-        foreach ($functions as $function) {
-            if (\is_array($function) && $function[0] instanceof DebugClassLoader) {
-                $reflClass = new \ReflectionClass($function[0]);
-                $reflProp = $reflClass->getProperty('classLoader');
-                $reflProp->setAccessible(true);
-
-                $this->assertNotInstanceOf('Symfony\Component\Debug\DebugClassLoader', $reflProp->getValue($function[0]));
-
-                return;
-            }
-        }
-
-        $this->fail('DebugClassLoader did not register');
-    }
-
-    public function testThrowingClass()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('boo');
-        try {
-            class_exists(__NAMESPACE__.'\Fixtures\Throwing');
-            $this->fail('Exception expected');
-        } catch (\Exception $e) {
-            $this->assertSame('boo', $e->getMessage());
-        }
-
-        // the second call also should throw
-        class_exists(__NAMESPACE__.'\Fixtures\Throwing');
-    }
-
-    public function testNameCaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between loaded and declared class names');
-        class_exists(__NAMESPACE__.'\TestingCaseMismatch', true);
-    }
-
-    public function testFileCaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between class and real file names');
-        if (!file_exists(__DIR__.'/Fixtures/CaseMismatch.php')) {
-            $this->markTestSkipped('Can only be run on case insensitive filesystems');
-        }
-
-        class_exists(__NAMESPACE__.'\Fixtures\CaseMismatch', true);
-    }
-
-    public function testPsr4CaseMismatch()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Case mismatch between loaded and declared class names');
-        class_exists(__NAMESPACE__.'\Fixtures\Psr4CaseMismatch', true);
-    }
-
-    public function testNotPsr0()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\NotPSR0', true));
-    }
-
-    public function testNotPsr0Bis()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\NotPSR0bis', true));
-    }
-
-    public function testClassAlias()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\ClassAlias', true));
-    }
-
-    /**
-     * @dataProvider provideDeprecatedSuper
-     */
-    public function testDeprecatedSuper($class, $super, $type)
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\'.$class, true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_DEPRECATED,
-            'message' => 'The "Test\Symfony\Component\Debug\Tests\\'.$class.'" class '.$type.' "Symfony\Component\Debug\Tests\Fixtures\\'.$super.'" that is deprecated but this is a test deprecation notice.',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function provideDeprecatedSuper()
-    {
-        return [
-            ['DeprecatedInterfaceClass', 'DeprecatedInterface', 'implements'],
-            ['DeprecatedParentClass', 'DeprecatedClass', 'extends'],
-        ];
-    }
-
-    public function testInterfaceExtendsDeprecatedInterface()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\NonDeprecatedInterfaceClass', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_NOTICE,
-            'message' => '',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function testDeprecatedSuperInSameNamespace()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Symfony\Bridge\Debug\Tests\Fixtures\ExtendsDeprecatedParent', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $xError = [
-            'type' => E_USER_NOTICE,
-            'message' => '',
-        ];
-
-        $this->assertSame($xError, $lastError);
-    }
-
-    public function testExtendedFinalClass()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        require __DIR__.'/Fixtures/FinalClasses.php';
-
-        $i = 1;
-        while (class_exists($finalClass = __NAMESPACE__.'\\Fixtures\\FinalClass'.$i++, false)) {
-            spl_autoload_call($finalClass);
-            class_exists('Test\\'.__NAMESPACE__.'\\Extends'.substr($finalClass, strrpos($finalClass, '\\') + 1), true);
-        }
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass1" class is considered final since version 3.3. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass1".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass2" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass2".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass3" class is considered final comment with @@@ and ***. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass3".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass4" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass4".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass5" class is considered final multiline comment. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass5".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass6" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass6".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass7" class is considered final another multiline comment... It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass7".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalClass8" class is considered final. It may change without further notice as of its next major version. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsFinalClass8".',
-        ], $deprecations);
-    }
-
-    public function testExtendedFinalMethod()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists(__NAMESPACE__.'\\Fixtures\\ExtendedFinalMethod', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $xError = [
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod2()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".',
-        ];
-
-        $this->assertSame($xError, $deprecations);
-    }
-
-    public function testExtendedDeprecatedMethodDoesntTriggerAnyNotice()
-    {
-        set_error_handler(function () { return false; });
-        $e = error_reporting(0);
-        trigger_error('', E_USER_NOTICE);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsAnnotatedClass', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $lastError = error_get_last();
-        unset($lastError['file'], $lastError['line']);
-
-        $this->assertSame(['type' => E_USER_NOTICE, 'message' => ''], $lastError);
-    }
-
-    public function testInternalsUse()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsInternals', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame($deprecations, [
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalInterface" interface is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternalsParent".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalClass" class is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternalsParent".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalTrait" trait is considered internal. It may change without further notice. You should not use it from "Test\Symfony\Component\Debug\Tests\ExtendsInternals".',
-            'The "Symfony\Component\Debug\Tests\Fixtures\InternalClass::internalMethod()" method is considered internal. It may change without further notice. You should not extend it from "Test\Symfony\Component\Debug\Tests\ExtendsInternals".',
-        ]);
-    }
-
-    public function testExtendedMethodDefinesNewParameters()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists(__NAMESPACE__.'\\Fixtures\SubClassWithAnnotatedParameters', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::quzMethod()" method will require a new "Quz $quz" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\ClassWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::whereAmI()" method will require a new "bool $matrix" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "$noType" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "callable(\Throwable|null $reason, mixed $value) $callback" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "string $param" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "callable  ($a,  $b) $anotherOne" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::iAmHere()" method will require a new "Type$WithDollarIsStillAType $ccc" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\InterfaceWithAnnotatedParameters", not defining it is deprecated.',
-            'The "Symfony\Component\Debug\Tests\Fixtures\SubClassWithAnnotatedParameters::isSymfony()" method will require a new "true $yes" argument in the next major version of its parent class "Symfony\Component\Debug\Tests\Fixtures\ClassWithAnnotatedParameters", not defining it is deprecated.',
-        ], $deprecations);
-    }
-
-    public function testUseTraitWithInternalMethod()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\UseTraitWithInternalMethod', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([], $deprecations);
-    }
-
-    public function testVirtualUse()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsVirtual', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::sameLineInterfaceMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::newLineInterfaceMethod()": Some description!',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::newLineInterfaceMethodNoBraces()": Description.',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::invalidInterfaceMethod()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::invalidInterfaceMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::complexInterfaceMethod($arg, ...$args)".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::complexInterfaceMethodTyped($arg, int ...$args)": Description ...',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodTyped(int $arg)": Description.',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtualParent" should implement method "static Symfony\Component\Debug\Tests\Fixtures\VirtualInterface::staticMethodTypedNoBraces()".',
-            'Class "Test\Symfony\Component\Debug\Tests\ExtendsVirtual" should implement method "Symfony\Component\Debug\Tests\Fixtures\VirtualSubInterface::subInterfaceMethod()".',
-        ], $deprecations);
-    }
-
-    public function testVirtualUseWithMagicCall()
-    {
-        $deprecations = [];
-        set_error_handler(function ($type, $msg) use (&$deprecations) { $deprecations[] = $msg; });
-        $e = error_reporting(E_USER_DEPRECATED);
-
-        class_exists('Test\\'.__NAMESPACE__.'\\ExtendsVirtualMagicCall', true);
-
-        error_reporting($e);
-        restore_error_handler();
-
-        $this->assertSame([], $deprecations);
-    }
-
-    public function testEvaluatedCode()
-    {
-        $this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\DefinitionInEvaluatedCode', true));
-    }
-}
-
-class ClassLoader
-{
-    public function loadClass($class)
-    {
-    }
-
-    public function getClassMap()
-    {
-        return [__NAMESPACE__.'\Fixtures\NotPSR0bis' => __DIR__.'/Fixtures/notPsr0Bis.php'];
-    }
-
-    public function findFile($class)
-    {
-        $fixtureDir = __DIR__.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR;
-
-        if (__NAMESPACE__.'\TestingUnsilencing' === $class) {
-            eval('-- parse error --');
-        } elseif (__NAMESPACE__.'\TestingStacking' === $class) {
-            eval('namespace '.__NAMESPACE__.'; class TestingStacking { function foo() {} }');
-        } elseif (__NAMESPACE__.'\TestingCaseMismatch' === $class) {
-            eval('namespace '.__NAMESPACE__.'; class TestingCaseMisMatch {}');
-        } elseif (__NAMESPACE__.'\Fixtures\Psr4CaseMismatch' === $class) {
-            return $fixtureDir.'psr4'.\DIRECTORY_SEPARATOR.'Psr4CaseMismatch.php';
-        } elseif (__NAMESPACE__.'\Fixtures\NotPSR0' === $class) {
-            return $fixtureDir.'reallyNotPsr0.php';
-        } elseif (__NAMESPACE__.'\Fixtures\NotPSR0bis' === $class) {
-            return $fixtureDir.'notPsr0Bis.php';
-        } elseif ('Symfony\Bridge\Debug\Tests\Fixtures\ExtendsDeprecatedParent' === $class) {
-            eval('namespace Symfony\Bridge\Debug\Tests\Fixtures; class ExtendsDeprecatedParent extends \\'.__NAMESPACE__.'\Fixtures\DeprecatedClass {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\DeprecatedParentClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class DeprecatedParentClass extends \\'.__NAMESPACE__.'\Fixtures\DeprecatedClass {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\DeprecatedInterfaceClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class DeprecatedInterfaceClass implements \\'.__NAMESPACE__.'\Fixtures\DeprecatedInterface {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\NonDeprecatedInterfaceClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class NonDeprecatedInterfaceClass implements \\'.__NAMESPACE__.'\Fixtures\NonDeprecatedInterface {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\Float' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class Float {}');
-        } elseif (0 === strpos($class, 'Test\\'.__NAMESPACE__.'\ExtendsFinalClass')) {
-            $classShortName = substr($class, strrpos($class, '\\') + 1);
-            eval('namespace Test\\'.__NAMESPACE__.'; class '.$classShortName.' extends \\'.__NAMESPACE__.'\Fixtures\\'.substr($classShortName, 7).' {}');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsAnnotatedClass' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsAnnotatedClass extends \\'.__NAMESPACE__.'\Fixtures\AnnotatedClass {
-                public function deprecatedMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsInternals' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsInternals extends ExtendsInternalsParent {
-                use \\'.__NAMESPACE__.'\Fixtures\InternalTrait;
-
-                public function internalMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsInternalsParent' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsInternalsParent extends \\'.__NAMESPACE__.'\Fixtures\InternalClass implements \\'.__NAMESPACE__.'\Fixtures\InternalInterface { }');
-        } elseif ('Test\\'.__NAMESPACE__.'\UseTraitWithInternalMethod' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class UseTraitWithInternalMethod { use \\'.__NAMESPACE__.'\Fixtures\TraitWithInternalMethod; }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtual' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtual extends ExtendsVirtualParent implements \\'.__NAMESPACE__.'\Fixtures\VirtualSubInterface {
-                public function ownClassMethod() { }
-                public function classMethod() { }
-                public function sameLineInterfaceMethodNoBraces() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualParent' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtualParent extends ExtendsVirtualAbstract {
-                public function ownParentMethod() { }
-                public function traitMethod() { }
-                public function sameLineInterfaceMethod() { }
-                public function staticMethodNoBraces() { } // should be static
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualAbstract' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; abstract class ExtendsVirtualAbstract extends ExtendsVirtualAbstractBase {
-                public static function staticMethod() { }
-                public function ownAbstractMethod() { }
-                public function interfaceMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualAbstractBase' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; abstract class ExtendsVirtualAbstractBase extends \\'.__NAMESPACE__.'\Fixtures\VirtualClass implements \\'.__NAMESPACE__.'\Fixtures\VirtualInterface {
-                public function ownAbstractBaseMethod() { }
-            }');
-        } elseif ('Test\\'.__NAMESPACE__.'\ExtendsVirtualMagicCall' === $class) {
-            eval('namespace Test\\'.__NAMESPACE__.'; class ExtendsVirtualMagicCall extends \\'.__NAMESPACE__.'\Fixtures\VirtualClassMagicCall implements \\'.__NAMESPACE__.'\Fixtures\VirtualInterface {
-            }');
-        }
-
-        return null;
-    }
-}
diff --git a/vendor/symfony/debug/Tests/ErrorHandlerTest.php b/vendor/symfony/debug/Tests/ErrorHandlerTest.php
deleted file mode 100644
index 54e656b3..00000000
--- a/vendor/symfony/debug/Tests/ErrorHandlerTest.php
+++ /dev/null
@@ -1,562 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LogLevel;
-use Psr\Log\NullLogger;
-use Symfony\Component\Debug\BufferingLogger;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
-use Symfony\Component\Debug\Tests\Fixtures\ErrorHandlerThatUsesThePreviousOne;
-use Symfony\Component\Debug\Tests\Fixtures\LoggerThatSetAnErrorHandler;
-
-/**
- * ErrorHandlerTest.
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class ErrorHandlerTest extends TestCase
-{
-    public function testRegister()
-    {
-        $handler = ErrorHandler::register();
-
-        try {
-            $this->assertInstanceOf('Symfony\Component\Debug\ErrorHandler', $handler);
-            $this->assertSame($handler, ErrorHandler::register());
-
-            $newHandler = new ErrorHandler();
-
-            $this->assertSame($handler, ErrorHandler::register($newHandler, false));
-            $h = set_error_handler('var_dump');
-            restore_error_handler();
-            $this->assertSame([$handler, 'handleError'], $h);
-
-            try {
-                $this->assertSame($newHandler, ErrorHandler::register($newHandler, true));
-                $h = set_error_handler('var_dump');
-                restore_error_handler();
-                $this->assertSame([$newHandler, 'handleError'], $h);
-            } catch (\Exception $e) {
-            }
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            if (isset($e)) {
-                throw $e;
-            }
-        } catch (\Exception $e) {
-        }
-
-        restore_error_handler();
-        restore_exception_handler();
-
-        if (isset($e)) {
-            throw $e;
-        }
-    }
-
-    public function testErrorGetLast()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $handler = ErrorHandler::register();
-        $handler->setDefaultLogger($logger);
-        $handler->screamAt(E_ALL);
-
-        try {
-            @trigger_error('Hello', E_USER_WARNING);
-            $expected = [
-                'type' => E_USER_WARNING,
-                'message' => 'Hello',
-                'file' => __FILE__,
-                'line' => __LINE__ - 5,
-            ];
-            $this->assertSame($expected, error_get_last());
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testNotice()
-    {
-        ErrorHandler::register();
-
-        try {
-            self::triggerNotice($this);
-            $this->fail('ErrorException expected');
-        } catch (\ErrorException $exception) {
-            // if an exception is thrown, the test passed
-            $this->assertEquals(E_NOTICE, $exception->getSeverity());
-            $this->assertEquals(__FILE__, $exception->getFile());
-            $this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
-
-            $trace = $exception->getTrace();
-
-            $this->assertEquals(__FILE__, $trace[0]['file']);
-            $this->assertEquals(__CLASS__, $trace[0]['class']);
-            $this->assertEquals('triggerNotice', $trace[0]['function']);
-            $this->assertEquals('::', $trace[0]['type']);
-
-            $this->assertEquals(__FILE__, $trace[0]['file']);
-            $this->assertEquals(__CLASS__, $trace[1]['class']);
-            $this->assertEquals(__FUNCTION__, $trace[1]['function']);
-            $this->assertEquals('->', $trace[1]['type']);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    // dummy function to test trace in error handler.
-    private static function triggerNotice($that)
-    {
-        $that->assertSame('', $foo.$foo.$bar);
-    }
-
-    public function testConstruct()
-    {
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            $this->assertEquals(3 | E_RECOVERABLE_ERROR | E_USER_ERROR, $handler->throwAt(0));
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testDefaultLogger()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $handler->setDefaultLogger($logger, E_NOTICE);
-            $handler->setDefaultLogger($logger, [E_USER_NOTICE => LogLevel::CRITICAL]);
-
-            $loggers = [
-                E_DEPRECATED => [null, LogLevel::INFO],
-                E_USER_DEPRECATED => [null, LogLevel::INFO],
-                E_NOTICE => [$logger, LogLevel::WARNING],
-                E_USER_NOTICE => [$logger, LogLevel::CRITICAL],
-                E_STRICT => [null, LogLevel::WARNING],
-                E_WARNING => [null, LogLevel::WARNING],
-                E_USER_WARNING => [null, LogLevel::WARNING],
-                E_COMPILE_WARNING => [null, LogLevel::WARNING],
-                E_CORE_WARNING => [null, LogLevel::WARNING],
-                E_USER_ERROR => [null, LogLevel::CRITICAL],
-                E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL],
-                E_COMPILE_ERROR => [null, LogLevel::CRITICAL],
-                E_PARSE => [null, LogLevel::CRITICAL],
-                E_ERROR => [null, LogLevel::CRITICAL],
-                E_CORE_ERROR => [null, LogLevel::CRITICAL],
-            ];
-            $this->assertSame($loggers, $handler->setLoggers([]));
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testHandleError()
-    {
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(0, true);
-            $this->assertFalse($handler->handleError(0, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            $this->assertFalse($handler->handleError(4, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(3, true);
-            try {
-                $handler->handleError(4, 'foo', 'foo.php', 12, []);
-            } catch (\ErrorException $e) {
-                $this->assertSame('Parse Error: foo', $e->getMessage());
-                $this->assertSame(4, $e->getSeverity());
-                $this->assertSame('foo.php', $e->getFile());
-                $this->assertSame(12, $e->getLine());
-            }
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(E_USER_DEPRECATED, true);
-            $this->assertFalse($handler->handleError(E_USER_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $handler = ErrorHandler::register();
-            $handler->throwAt(E_DEPRECATED, true);
-            $this->assertFalse($handler->handleError(E_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-            $warnArgCheck = function ($logLevel, $message, $context) {
-                $this->assertEquals('info', $logLevel);
-                $this->assertEquals('User Deprecated: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $exception = $context['exception'];
-                $this->assertInstanceOf(\ErrorException::class, $exception);
-                $this->assertSame('User Deprecated: foo', $exception->getMessage());
-                $this->assertSame(E_USER_DEPRECATED, $exception->getSeverity());
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($warnArgCheck)
-            ;
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger, E_USER_DEPRECATED);
-            $this->assertTrue($handler->handleError(E_USER_DEPRECATED, 'foo', 'foo.php', 12, []));
-
-            restore_error_handler();
-            restore_exception_handler();
-
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-            $line = null;
-            $logArgCheck = function ($level, $message, $context) use (&$line) {
-                $this->assertEquals('Notice: Undefined variable: undefVar', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $exception = $context['exception'];
-                $this->assertInstanceOf(SilencedErrorContext::class, $exception);
-                $this->assertSame(E_NOTICE, $exception->getSeverity());
-                $this->assertSame(__FILE__, $exception->getFile());
-                $this->assertSame($line, $exception->getLine());
-                $this->assertNotEmpty($exception->getTrace());
-                $this->assertSame(1, $exception->count);
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger, E_NOTICE);
-            $handler->screamAt(E_NOTICE);
-            unset($undefVar);
-            $line = __LINE__ + 1;
-            @$undefVar++;
-
-            restore_error_handler();
-            restore_exception_handler();
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testHandleUserError()
-    {
-        if (\PHP_VERSION_ID >= 70400) {
-            $this->markTestSkipped('PHP 7.4 allows __toString to throw exceptions');
-        }
-
-        try {
-            $handler = ErrorHandler::register();
-            $handler->throwAt(0, true);
-
-            $e = null;
-            $x = new \Exception('Foo');
-
-            try {
-                $f = new Fixtures\ToStringThrower($x);
-                $f .= ''; // Trigger $f->__toString()
-            } catch (\Exception $e) {
-            }
-
-            $this->assertSame($x, $e);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testHandleDeprecation()
-    {
-        $logArgCheck = function ($level, $message, $context) {
-            $this->assertEquals(LogLevel::INFO, $level);
-            $this->assertArrayHasKey('exception', $context);
-            $exception = $context['exception'];
-            $this->assertInstanceOf(\ErrorException::class, $exception);
-            $this->assertSame('User Deprecated: Foo deprecation', $exception->getMessage());
-        };
-
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger
-            ->expects($this->once())
-            ->method('log')
-            ->willReturnCallback($logArgCheck)
-        ;
-
-        $handler = new ErrorHandler();
-        $handler->setDefaultLogger($logger);
-        @$handler->handleError(E_USER_DEPRECATED, 'Foo deprecation', __FILE__, __LINE__, []);
-
-        restore_error_handler();
-    }
-
-    public function testHandleException()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $exception = new \Exception('foo');
-
-            $logArgCheck = function ($level, $message, $context) {
-                $this->assertSame('Uncaught Exception: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $this->assertInstanceOf(\Exception::class, $context['exception']);
-            };
-
-            $logger
-                ->expects($this->exactly(2))
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler->setDefaultLogger($logger, E_ERROR);
-
-            try {
-                $handler->handleException($exception);
-                $this->fail('Exception expected');
-            } catch (\Exception $e) {
-                $this->assertSame($exception, $e);
-            }
-
-            $handler->setExceptionHandler(function ($e) use ($exception) {
-                $this->assertSame($exception, $e);
-            });
-
-            $handler->handleException($exception);
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function testBootstrappingLogger()
-    {
-        $bootLogger = new BufferingLogger();
-        $handler = new ErrorHandler($bootLogger);
-
-        $loggers = [
-            E_DEPRECATED => [$bootLogger, LogLevel::INFO],
-            E_USER_DEPRECATED => [$bootLogger, LogLevel::INFO],
-            E_NOTICE => [$bootLogger, LogLevel::WARNING],
-            E_USER_NOTICE => [$bootLogger, LogLevel::WARNING],
-            E_STRICT => [$bootLogger, LogLevel::WARNING],
-            E_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_USER_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_COMPILE_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_CORE_WARNING => [$bootLogger, LogLevel::WARNING],
-            E_USER_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_RECOVERABLE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_COMPILE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_PARSE => [$bootLogger, LogLevel::CRITICAL],
-            E_ERROR => [$bootLogger, LogLevel::CRITICAL],
-            E_CORE_ERROR => [$bootLogger, LogLevel::CRITICAL],
-        ];
-
-        $this->assertSame($loggers, $handler->setLoggers([]));
-
-        $handler->handleError(E_DEPRECATED, 'Foo message', __FILE__, 123, []);
-
-        $logs = $bootLogger->cleanLogs();
-
-        $this->assertCount(1, $logs);
-        $log = $logs[0];
-        $this->assertSame('info', $log[0]);
-        $this->assertSame('Deprecated: Foo message', $log[1]);
-        $this->assertArrayHasKey('exception', $log[2]);
-        $exception = $log[2]['exception'];
-        $this->assertInstanceOf(\ErrorException::class, $exception);
-        $this->assertSame('Deprecated: Foo message', $exception->getMessage());
-        $this->assertSame(__FILE__, $exception->getFile());
-        $this->assertSame(123, $exception->getLine());
-        $this->assertSame(E_DEPRECATED, $exception->getSeverity());
-
-        $bootLogger->log(LogLevel::WARNING, 'Foo message', ['exception' => $exception]);
-
-        $mockLogger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $mockLogger->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::WARNING, 'Foo message', ['exception' => $exception]);
-
-        $handler->setLoggers([E_DEPRECATED => [$mockLogger, LogLevel::WARNING]]);
-    }
-
-    public function testSettingLoggerWhenExceptionIsBuffered()
-    {
-        $bootLogger = new BufferingLogger();
-        $handler = new ErrorHandler($bootLogger);
-
-        $exception = new \Exception('Foo message');
-
-        $mockLogger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $mockLogger->expects($this->once())
-            ->method('log')
-            ->with(LogLevel::CRITICAL, 'Uncaught Exception: Foo message', ['exception' => $exception]);
-
-        $handler->setExceptionHandler(function () use ($handler, $mockLogger) {
-            $handler->setDefaultLogger($mockLogger);
-        });
-
-        $handler->handleException($exception);
-    }
-
-    public function testHandleFatalError()
-    {
-        try {
-            $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-            $handler = ErrorHandler::register();
-
-            $error = [
-                'type' => E_PARSE,
-                'message' => 'foo',
-                'file' => 'bar',
-                'line' => 123,
-            ];
-
-            $logArgCheck = function ($level, $message, $context) {
-                $this->assertEquals('Fatal Parse Error: foo', $message);
-                $this->assertArrayHasKey('exception', $context);
-                $this->assertInstanceOf(\Exception::class, $context['exception']);
-            };
-
-            $logger
-                ->expects($this->once())
-                ->method('log')
-                ->willReturnCallback($logArgCheck)
-            ;
-
-            $handler->setDefaultLogger($logger, E_PARSE);
-
-            $handler->handleFatalError($error);
-
-            restore_error_handler();
-            restore_exception_handler();
-        } catch (\Exception $e) {
-            restore_error_handler();
-            restore_exception_handler();
-
-            throw $e;
-        }
-    }
-
-    public function testHandleErrorException()
-    {
-        $exception = new \Error("Class 'IReallyReallyDoNotExistAnywhereInTheRepositoryISwear' not found");
-
-        $handler = new ErrorHandler();
-        $handler->setExceptionHandler(function () use (&$args) {
-            $args = \func_get_args();
-        });
-
-        $handler->handleException($exception);
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $args[0]);
-        $this->assertStringStartsWith("Attempted to load class \"IReallyReallyDoNotExistAnywhereInTheRepositoryISwear\" from the global namespace.\nDid you forget a \"use\" statement", $args[0]->getMessage());
-    }
-
-    public function testCustomExceptionHandler()
-    {
-        $this->expectException('Exception');
-        $handler = new ErrorHandler();
-        $handler->setExceptionHandler(function ($e) use ($handler) {
-            $handler->handleException($e);
-        });
-
-        $handler->handleException(new \Exception());
-    }
-
-    /**
-     * @dataProvider errorHandlerWhenLoggingProvider
-     */
-    public function testErrorHandlerWhenLogging($previousHandlerWasDefined, $loggerSetsAnotherHandler, $nextHandlerIsDefined)
-    {
-        try {
-            if ($previousHandlerWasDefined) {
-                set_error_handler('count');
-            }
-
-            $logger = $loggerSetsAnotherHandler ? new LoggerThatSetAnErrorHandler() : new NullLogger();
-
-            $handler = ErrorHandler::register();
-            $handler->setDefaultLogger($logger);
-
-            if ($nextHandlerIsDefined) {
-                $handler = ErrorHandlerThatUsesThePreviousOne::register();
-            }
-
-            @trigger_error('foo', E_USER_DEPRECATED);
-            @trigger_error('bar', E_USER_DEPRECATED);
-
-            $this->assertSame([$handler, 'handleError'], set_error_handler('var_dump'));
-
-            if ($logger instanceof LoggerThatSetAnErrorHandler) {
-                $this->assertCount(2, $logger->cleanLogs());
-            }
-
-            restore_error_handler();
-
-            if ($previousHandlerWasDefined) {
-                restore_error_handler();
-            }
-
-            if ($nextHandlerIsDefined) {
-                restore_error_handler();
-            }
-        } finally {
-            restore_error_handler();
-            restore_exception_handler();
-        }
-    }
-
-    public function errorHandlerWhenLoggingProvider()
-    {
-        foreach ([false, true] as $previousHandlerWasDefined) {
-            foreach ([false, true] as $loggerSetsAnotherHandler) {
-                foreach ([false, true] as $nextHandlerIsDefined) {
-                    yield [$previousHandlerWasDefined, $loggerSetsAnotherHandler, $nextHandlerIsDefined];
-                }
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php b/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php
deleted file mode 100644
index 994a5efc..00000000
--- a/vendor/symfony/debug/Tests/Exception/FlattenExceptionTest.php
+++ /dev/null
@@ -1,388 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\Exception;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalThrowableError;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-use Symfony\Component\HttpKernel\Exception\ConflictHttpException;
-use Symfony\Component\HttpKernel\Exception\GoneHttpException;
-use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException;
-use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException;
-use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
-use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
-use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
-use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException;
-
-class FlattenExceptionTest extends TestCase
-{
-    public function testStatusCode()
-    {
-        $flattened = FlattenException::create(new \RuntimeException(), 403);
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new \RuntimeException());
-        $this->assertEquals('500', $flattened->getStatusCode());
-
-        $flattened = FlattenException::createFromThrowable(new \DivisionByZeroError(), 403);
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::createFromThrowable(new \DivisionByZeroError());
-        $this->assertEquals('500', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new NotFoundHttpException());
-        $this->assertEquals('404', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new UnauthorizedHttpException('Basic realm="My Realm"'));
-        $this->assertEquals('401', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new BadRequestHttpException());
-        $this->assertEquals('400', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new NotAcceptableHttpException());
-        $this->assertEquals('406', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new ConflictHttpException());
-        $this->assertEquals('409', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new MethodNotAllowedHttpException(['POST']));
-        $this->assertEquals('405', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new AccessDeniedHttpException());
-        $this->assertEquals('403', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new GoneHttpException());
-        $this->assertEquals('410', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new LengthRequiredHttpException());
-        $this->assertEquals('411', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new PreconditionFailedHttpException());
-        $this->assertEquals('412', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new PreconditionRequiredHttpException());
-        $this->assertEquals('428', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException());
-        $this->assertEquals('503', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException());
-        $this->assertEquals('429', $flattened->getStatusCode());
-
-        $flattened = FlattenException::create(new UnsupportedMediaTypeHttpException());
-        $this->assertEquals('415', $flattened->getStatusCode());
-
-        if (class_exists(SuspiciousOperationException::class)) {
-            $flattened = FlattenException::create(new SuspiciousOperationException());
-            $this->assertEquals('400', $flattened->getStatusCode());
-        }
-    }
-
-    public function testHeadersForHttpException()
-    {
-        $flattened = FlattenException::create(new MethodNotAllowedHttpException(['POST']));
-        $this->assertEquals(['Allow' => 'POST'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new UnauthorizedHttpException('Basic realm="My Realm"'));
-        $this->assertEquals(['WWW-Authenticate' => 'Basic realm="My Realm"'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException('Fri, 31 Dec 1999 23:59:59 GMT'));
-        $this->assertEquals(['Retry-After' => 'Fri, 31 Dec 1999 23:59:59 GMT'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new ServiceUnavailableHttpException(120));
-        $this->assertEquals(['Retry-After' => 120], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException('Fri, 31 Dec 1999 23:59:59 GMT'));
-        $this->assertEquals(['Retry-After' => 'Fri, 31 Dec 1999 23:59:59 GMT'], $flattened->getHeaders());
-
-        $flattened = FlattenException::create(new TooManyRequestsHttpException(120));
-        $this->assertEquals(['Retry-After' => 120], $flattened->getHeaders());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testFlattenHttpException(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened2 = FlattenException::createFromThrowable($exception);
-
-        $flattened->setPrevious($flattened2);
-
-        $this->assertEquals($exception->getMessage(), $flattened->getMessage(), 'The message is copied from the original exception.');
-        $this->assertEquals($exception->getCode(), $flattened->getCode(), 'The code is copied from the original exception.');
-        $this->assertInstanceOf($flattened->getClass(), $exception, 'The class is set to the class of the original exception');
-    }
-
-    public function testWrappedThrowable()
-    {
-        $exception = new FatalThrowableError(new \DivisionByZeroError('Ouch', 42));
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame('Ouch', $flattened->getMessage(), 'The message is copied from the original error.');
-        $this->assertSame(42, $flattened->getCode(), 'The code is copied from the original error.');
-        $this->assertSame('DivisionByZeroError', $flattened->getClass(), 'The class is set to the class of the original error');
-    }
-
-    public function testThrowable()
-    {
-        $error = new \DivisionByZeroError('Ouch', 42);
-        $flattened = FlattenException::createFromThrowable($error);
-
-        $this->assertSame('Ouch', $flattened->getMessage(), 'The message is copied from the original error.');
-        $this->assertSame(42, $flattened->getCode(), 'The code is copied from the original error.');
-        $this->assertSame('DivisionByZeroError', $flattened->getClass(), 'The class is set to the class of the original error');
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testPrevious(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened2 = FlattenException::createFromThrowable($exception);
-
-        $flattened->setPrevious($flattened2);
-
-        $this->assertSame($flattened2, $flattened->getPrevious());
-
-        $this->assertSame([$flattened2], $flattened->getAllPrevious());
-    }
-
-    public function testPreviousError()
-    {
-        $exception = new \Exception('test', 123, new \ParseError('Oh noes!', 42));
-
-        $flattened = FlattenException::create($exception)->getPrevious();
-
-        $this->assertEquals($flattened->getMessage(), 'Oh noes!', 'The message is copied from the original exception.');
-        $this->assertEquals($flattened->getCode(), 42, 'The code is copied from the original exception.');
-        $this->assertEquals($flattened->getClass(), 'ParseError', 'The class is set to the class of the original exception');
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testLine(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $this->assertSame($exception->getLine(), $flattened->getLine());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testFile(\Throwable $exception)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $this->assertSame($exception->getFile(), $flattened->getFile());
-    }
-
-    /**
-     * @dataProvider flattenDataProvider
-     */
-    public function testToArray(\Throwable $exception, string $expectedClass)
-    {
-        $flattened = FlattenException::createFromThrowable($exception);
-        $flattened->setTrace([], 'foo.php', 123);
-
-        $this->assertEquals([
-            [
-                'message' => 'test',
-                'class' => $expectedClass,
-                'trace' => [[
-                    'namespace' => '', 'short_class' => '', 'class' => '', 'type' => '', 'function' => '', 'file' => 'foo.php', 'line' => 123,
-                    'args' => [],
-                ]],
-            ],
-        ], $flattened->toArray());
-    }
-
-    public function testCreate()
-    {
-        $exception = new NotFoundHttpException(
-            'test',
-            new \RuntimeException('previous', 123)
-        );
-
-        $this->assertSame(
-            FlattenException::createFromThrowable($exception)->toArray(),
-            FlattenException::create($exception)->toArray()
-        );
-    }
-
-    public function flattenDataProvider()
-    {
-        return [
-            [new \Exception('test', 123), 'Exception'],
-            [new \Error('test', 123), 'Error'],
-        ];
-    }
-
-    public function testArguments()
-    {
-        $dh = opendir(__DIR__);
-        $fh = tmpfile();
-
-        $incomplete = unserialize('O:14:"BogusTestClass":0:{}');
-
-        $exception = $this->createException([
-            (object) ['foo' => 1],
-            new NotFoundHttpException(),
-            $incomplete,
-            $dh,
-            $fh,
-            function () {},
-            [1, 2],
-            ['foo' => 123],
-            null,
-            true,
-            false,
-            0,
-            0.0,
-            '0',
-            '',
-            INF,
-            NAN,
-        ]);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-        $args = $trace[1]['args'];
-        $array = $args[0][1];
-
-        closedir($dh);
-        fclose($fh);
-
-        $i = 0;
-        $this->assertSame(['object', 'stdClass'], $array[$i++]);
-        $this->assertSame(['object', 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException'], $array[$i++]);
-        $this->assertSame(['incomplete-object', 'BogusTestClass'], $array[$i++]);
-        $this->assertSame(['resource', 'stream'], $array[$i++]);
-        $this->assertSame(['resource', 'stream'], $array[$i++]);
-
-        $args = $array[$i++];
-        $this->assertSame($args[0], 'object');
-        $this->assertTrue('Closure' === $args[1] || is_subclass_of($args[1], '\Closure'), 'Expect object class name to be Closure or a subclass of Closure.');
-
-        $this->assertSame(['array', [['integer', 1], ['integer', 2]]], $array[$i++]);
-        $this->assertSame(['array', ['foo' => ['integer', 123]]], $array[$i++]);
-        $this->assertSame(['null', null], $array[$i++]);
-        $this->assertSame(['boolean', true], $array[$i++]);
-        $this->assertSame(['boolean', false], $array[$i++]);
-        $this->assertSame(['integer', 0], $array[$i++]);
-        $this->assertSame(['float', 0.0], $array[$i++]);
-        $this->assertSame(['string', '0'], $array[$i++]);
-        $this->assertSame(['string', ''], $array[$i++]);
-        $this->assertSame(['float', INF], $array[$i++]);
-
-        // assertEquals() does not like NAN values.
-        $this->assertEquals($array[$i][0], 'float');
-        $this->assertNan($array[$i++][1]);
-    }
-
-    public function testRecursionInArguments()
-    {
-        $a = null;
-        $a = ['foo', [2, &$a]];
-        $exception = $this->createException($a);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-        $this->assertStringContainsString('*DEEP NESTED ARRAY*', serialize($trace));
-    }
-
-    public function testTooBigArray()
-    {
-        $a = [];
-        for ($i = 0; $i < 20; ++$i) {
-            for ($j = 0; $j < 50; ++$j) {
-                for ($k = 0; $k < 10; ++$k) {
-                    $a[$i][$j][$k] = 'value';
-                }
-            }
-        }
-        $a[20] = 'value';
-        $a[21] = 'value1';
-        $exception = $this->createException($a);
-
-        $flattened = FlattenException::create($exception);
-        $trace = $flattened->getTrace();
-
-        $this->assertSame($trace[1]['args'][0], ['array', ['array', '*SKIPPED over 10000 entries*']]);
-
-        $serializeTrace = serialize($trace);
-
-        $this->assertStringContainsString('*SKIPPED over 10000 entries*', $serializeTrace);
-        $this->assertStringNotContainsString('*value1*', $serializeTrace);
-    }
-
-    public function testAnonymousClass()
-    {
-        $flattened = FlattenException::create(new class() extends \RuntimeException {
-        });
-
-        $this->assertSame('RuntimeException@anonymous', $flattened->getClass());
-
-        $flattened = FlattenException::create(new \Exception(sprintf('Class "%s" blah.', \get_class(new class() extends \RuntimeException {
-        }))));
-
-        $this->assertSame('Class "RuntimeException@anonymous" blah.', $flattened->getMessage());
-    }
-
-    public function testToStringEmptyMessage()
-    {
-        $exception = new \RuntimeException();
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    public function testToString()
-    {
-        $test = function ($a, $b, $c, $d) {
-            return new \RuntimeException('This is a test message');
-        };
-
-        $exception = $test('foo123', 1, null, 1.5);
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    public function testToStringParent()
-    {
-        $exception = new \LogicException('This is message 1');
-        $exception = new \RuntimeException('This is messsage 2', 500, $exception);
-
-        $flattened = FlattenException::create($exception);
-
-        $this->assertSame($exception->getTraceAsString(), $flattened->getTraceAsString());
-        $this->assertSame($exception->__toString(), $flattened->getAsString());
-    }
-
-    private function createException($foo)
-    {
-        return new \Exception();
-    }
-}
diff --git a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
deleted file mode 100644
index ab6da5fb..00000000
--- a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\OutOfMemoryException;
-use Symfony\Component\Debug\ExceptionHandler;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-require_once __DIR__.'/HeaderMock.php';
-
-class ExceptionHandlerTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        testHeader();
-    }
-
-    protected function tearDown(): void
-    {
-        testHeader();
-    }
-
-    public function testDebug()
-    {
-        $handler = new ExceptionHandler(false);
-
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('Whoops, looks like something went wrong.', $response);
-        $this->assertStringNotContainsString('<div class="trace trace-as-html">', $response);
-
-        $handler = new ExceptionHandler(true);
-
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('<h1 class="break-long-words exception-message">Foo</h1>', $response);
-        $this->assertStringContainsString('<div class="trace trace-as-html">', $response);
-
-        // taken from https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
-        $htmlWithXss = '<body onload=alert(\'test1\')> <b onmouseover=alert(\'Wufff!\')>click me!</b> <img src="j&#X41vascript:alert(\'test2\')"> <meta http-equiv="refresh"
-content="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg">';
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException($htmlWithXss));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString(sprintf('<h1 class="break-long-words exception-message">%s</h1>', htmlspecialchars($htmlWithXss, ENT_COMPAT | ENT_SUBSTITUTE, 'UTF-8')), $response);
-    }
-
-    public function testStatusCode()
-    {
-        $handler = new ExceptionHandler(false, 'iso8859-1');
-
-        ob_start();
-        $handler->sendPhpResponse(new NotFoundHttpException('Foo'));
-        $response = ob_get_clean();
-
-        $this->assertStringContainsString('Sorry, the page you are looking for could not be found.', $response);
-
-        $expectedHeaders = [
-            ['HTTP/1.0 404', true, null],
-            ['Content-Type: text/html; charset=iso8859-1', true, null],
-        ];
-
-        $this->assertSame($expectedHeaders, testHeader());
-    }
-
-    public function testHeaders()
-    {
-        $handler = new ExceptionHandler(false, 'iso8859-1');
-
-        ob_start();
-        $handler->sendPhpResponse(new MethodNotAllowedHttpException(['POST']));
-        ob_get_clean();
-
-        $expectedHeaders = [
-            ['HTTP/1.0 405', true, null],
-            ['Allow: POST', false, null],
-            ['Content-Type: text/html; charset=iso8859-1', true, null],
-        ];
-
-        $this->assertSame($expectedHeaders, testHeader());
-    }
-
-    public function testNestedExceptions()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->sendPhpResponse(new \RuntimeException('Foo', 0, new \RuntimeException('Bar')));
-        $response = ob_get_clean();
-
-        $this->assertStringMatchesFormat('%A<p class="break-long-words trace-message">Foo</p>%A<p class="break-long-words trace-message">Bar</p>%A', $response);
-    }
-
-    public function testHandle()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-
-        $handler->handle(new \Exception('foo'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'foo');
-    }
-
-    public function testHandleWithACustomHandlerThatOutputsSomething()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->setHandler(function () {
-            echo 'ccc';
-        });
-
-        $handler->handle(new \Exception());
-        ob_end_flush(); // Necessary because of this PHP bug : https://bugs.php.net/76563
-        $this->assertSame('ccc', ob_get_clean());
-    }
-
-    public function testHandleWithACustomHandlerThatOutputsNothing()
-    {
-        $handler = new ExceptionHandler(true);
-        $handler->setHandler(function () {});
-
-        $handler->handle(new \Exception('ccc'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc');
-    }
-
-    public function testHandleWithACustomHandlerThatFails()
-    {
-        $handler = new ExceptionHandler(true);
-        $handler->setHandler(function () {
-            throw new \RuntimeException();
-        });
-
-        $handler->handle(new \Exception('ccc'));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc');
-    }
-
-    public function testHandleOutOfMemoryException()
-    {
-        $handler = new ExceptionHandler(true);
-        ob_start();
-        $handler->setHandler(function () {
-            $this->fail('OutOfMemoryException should bypass the handler');
-        });
-
-        $handler->handle(new OutOfMemoryException('foo', 0, E_ERROR, __FILE__, __LINE__));
-
-        $this->assertThatTheExceptionWasOutput(ob_get_clean(), OutOfMemoryException::class, 'OutOfMemoryException', 'foo');
-    }
-
-    private function assertThatTheExceptionWasOutput($content, $expectedClass, $expectedTitle, $expectedMessage)
-    {
-        $this->assertStringContainsString(sprintf('<span class="exception_title"><abbr title="%s">%s</abbr></span>', $expectedClass, $expectedTitle), $content);
-        $this->assertStringContainsString(sprintf('<p class="break-long-words trace-message">%s</p>', $expectedMessage), $content);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
deleted file mode 100644
index f3fd16e2..00000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use Composer\Autoload\ClassLoader as ComposerClassLoader;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\DebugClassLoader;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler;
-
-class ClassNotFoundFatalErrorHandlerTest extends TestCase
-{
-    public static function setUpBeforeClass(): void
-    {
-        foreach (spl_autoload_functions() as $function) {
-            if (!\is_array($function)) {
-                continue;
-            }
-
-            // get class loaders wrapped by DebugClassLoader
-            if ($function[0] instanceof DebugClassLoader) {
-                $function = $function[0]->getClassLoader();
-            }
-
-            if ($function[0] instanceof ComposerClassLoader) {
-                $function[0]->add('Symfony_Component_Debug_Tests_Fixtures', \dirname(__DIR__, 5));
-                break;
-            }
-        }
-    }
-
-    /**
-     * @dataProvider provideClassNotFoundData
-     */
-    public function testHandleClassNotFound($error, $translatedMessage, $autoloader = null)
-    {
-        if ($autoloader) {
-            // Unregister all autoloaders to ensure the custom provided
-            // autoloader is the only one to be used during the test run.
-            $autoloaders = spl_autoload_functions();
-            array_map('spl_autoload_unregister', $autoloaders);
-            spl_autoload_register($autoloader);
-        }
-
-        $handler = new ClassNotFoundFatalErrorHandler();
-
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        if ($autoloader) {
-            spl_autoload_unregister($autoloader);
-            array_map('spl_autoload_register', $autoloaders);
-        }
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception);
-        $this->assertRegExp($translatedMessage, $exception->getMessage());
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideClassNotFoundData()
-    {
-        $autoloader = new ComposerClassLoader();
-        $autoloader->add('Symfony\Component\Debug\Exception\\', realpath(__DIR__.'/../../Exception'));
-        $autoloader->add('Symfony_Component_Debug_Tests_Fixtures', realpath(__DIR__.'/../../Tests/Fixtures'));
-
-        $debugClassLoader = new DebugClassLoader([$autoloader, 'loadClass']);
-
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'WhizBangFactory\' not found',
-                ],
-                "/^Attempted to load class \"WhizBangFactory\" from the global namespace.\nDid you forget a \"use\" statement\?$/",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\WhizBangFactory\' not found',
-                ],
-                "/^Attempted to load class \"WhizBangFactory\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from the global namespace.\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'PEARClass\' not found',
-                ],
-                "/^Attempted to load class \"PEARClass\" from the global namespace.\nDid you forget a \"use\" statement for \"Symfony_Component_Debug_Tests_Fixtures_PEARClass\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/",
-                [$autoloader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?/",
-                [$debugClassLoader, 'loadClass'],
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found',
-                ],
-                "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/",
-                function ($className) { /* do nothing here */ },
-            ],
-        ];
-    }
-
-    public function testCannotRedeclareClass()
-    {
-        if (!file_exists(__DIR__.'/../FIXTURES2/REQUIREDTWICE.PHP')) {
-            $this->markTestSkipped('Can only be run on case insensitive filesystems');
-        }
-
-        require_once __DIR__.'/../FIXTURES2/REQUIREDTWICE.PHP';
-
-        $error = [
-            'type' => 1,
-            'line' => 12,
-            'file' => 'foo.php',
-            'message' => 'Class \'Foo\\Bar\\RequiredTwice\' not found',
-        ];
-
-        $handler = new ClassNotFoundFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php
deleted file mode 100644
index de9994e4..00000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler;
-
-class UndefinedFunctionFatalErrorHandlerTest extends TestCase
-{
-    /**
-     * @dataProvider provideUndefinedFunctionData
-     */
-    public function testUndefinedFunction($error, $translatedMessage)
-    {
-        $handler = new UndefinedFunctionFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedFunctionException', $exception);
-        // class names are case insensitive and PHP do not return the same
-        $this->assertSame(strtolower($translatedMessage), strtolower($exception->getMessage()));
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideUndefinedFunctionData()
-    {
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function test_namespaced_function()',
-                ],
-                "Attempted to call function \"test_namespaced_function\" from the global namespace.\nDid you mean to call \"\\symfony\\component\\debug\\tests\\fatalerrorhandler\\test_namespaced_function\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function Foo\\Bar\\Baz\\test_namespaced_function()',
-                ],
-                "Attempted to call function \"test_namespaced_function\" from namespace \"Foo\\Bar\\Baz\".\nDid you mean to call \"\\symfony\\component\\debug\\tests\\fatalerrorhandler\\test_namespaced_function\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function foo()',
-                ],
-                'Attempted to call function "foo" from the global namespace.',
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined function Foo\\Bar\\Baz\\foo()',
-                ],
-                'Attempted to call function "foo" from namespace "Foo\Bar\Baz".',
-            ],
-        ];
-    }
-}
-
-function test_namespaced_function()
-{
-}
diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php
deleted file mode 100644
index 268a8413..00000000
--- a/vendor/symfony/debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug\Tests\FatalErrorHandler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FatalErrorException;
-use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler;
-
-class UndefinedMethodFatalErrorHandlerTest extends TestCase
-{
-    /**
-     * @dataProvider provideUndefinedMethodData
-     */
-    public function testUndefinedMethod($error, $translatedMessage)
-    {
-        $handler = new UndefinedMethodFatalErrorHandler();
-        $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
-
-        $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedMethodException', $exception);
-        $this->assertSame($translatedMessage, $exception->getMessage());
-        $this->assertSame($error['type'], $exception->getSeverity());
-        $this->assertSame($error['file'], $exception->getFile());
-        $this->assertSame($error['line'], $exception->getLine());
-    }
-
-    public function provideUndefinedMethodData()
-    {
-        return [
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::what()',
-                ],
-                'Attempted to call an undefined method named "what" of class "SplObjectStorage".',
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::walid()',
-                ],
-                "Attempted to call an undefined method named \"walid\" of class \"SplObjectStorage\".\nDid you mean to call \"valid\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'line' => 12,
-                    'file' => 'foo.php',
-                    'message' => 'Call to undefined method SplObjectStorage::offsetFet()',
-                ],
-                "Attempted to call an undefined method named \"offsetFet\" of class \"SplObjectStorage\".\nDid you mean to call e.g. \"offsetGet\", \"offsetSet\" or \"offsetUnset\"?",
-            ],
-            [
-                [
-                    'type' => 1,
-                    'message' => 'Call to undefined method class@anonymous::test()',
-                    'file' => '/home/possum/work/symfony/test.php',
-                    'line' => 11,
-                ],
-                'Attempted to call an undefined method named "test" of class "class@anonymous".',
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php b/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php
deleted file mode 100644
index 4eecb6d3..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/AnnotatedClass.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class AnnotatedClass
-{
-    /**
-     * @deprecated
-     */
-    public function deprecatedMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php b/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php
deleted file mode 100644
index 9d6dbaa7..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/ClassAlias.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-class_alias('Symfony\Component\Debug\Tests\Fixtures\NotPSR0bis', 'Symfony\Component\Debug\Tests\Fixtures\ClassAlias');
diff --git a/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php
deleted file mode 100644
index d6eec9aa..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/ClassWithAnnotatedParameters.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ClassWithAnnotatedParameters
-{
-    /**
-     * @param string $foo this is a foo parameter
-     */
-    public function fooMethod(string $foo)
-    {
-    }
-
-    /**
-     * @param string $bar parameter not implemented yet
-     */
-    public function barMethod(/* string $bar = null */)
-    {
-    }
-
-    /**
-     * @param Quz $quz parameter not implemented yet
-     */
-    public function quzMethod(/* Quz $quz = null */)
-    {
-    }
-
-    /**
-     * @param true $yes
-     */
-    public function isSymfony()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php b/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php
deleted file mode 100644
index ff6976e0..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/DefinitionInEvaluatedCode.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-eval('
-    namespace Symfony\Component\Debug\Tests\Fixtures;
-
-    class DefinitionInEvaluatedCode
-    {
-    }
-');
diff --git a/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php b/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php
deleted file mode 100644
index 51fde5af..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/DeprecatedClass.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @deprecated but this is a test
- *             deprecation notice
- * @foobar
- */
-class DeprecatedClass
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php b/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php
deleted file mode 100644
index 6bab62f9..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/DeprecatedInterface.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @deprecated but this is a test
- *             deprecation notice
- * @foobar
- */
-interface DeprecatedInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php b/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php
deleted file mode 100644
index d449c40c..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/ErrorHandlerThatUsesThePreviousOne.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ErrorHandlerThatUsesThePreviousOne
-{
-    private static $previous;
-
-    public static function register()
-    {
-        $handler = new static();
-
-        self::$previous = set_error_handler([$handler, 'handleError']);
-
-        return $handler;
-    }
-
-    public function handleError($type, $message, $file, $line, $context)
-    {
-        return \call_user_func(self::$previous, $type, $message, $file, $line, $context);
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php b/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php
deleted file mode 100644
index 050d19ff..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/ExtendedFinalMethod.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ExtendedFinalMethod extends FinalMethod
-{
-    use FinalMethod2Trait;
-
-    /**
-     * {@inheritdoc}
-     */
-    public function finalMethod()
-    {
-    }
-
-    public function anotherMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php b/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php
deleted file mode 100644
index 4c2b0aaf..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalClasses.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @final since version 3.3.
- */
-class FinalClass1
-{
-    // simple comment
-}
-
-/**
- * @final
- */
-class FinalClass2
-{
-    // no comment
-}
-
-/**
- * @final comment with @@@ and ***
- *
- * @author John Doe
- */
-class FinalClass3
-{
-    // with comment and a tag after
-}
-
-/**
- * @final
- *
- * @author John Doe
- */
-class FinalClass4
-{
-    // without comment and a tag after
-}
-
-/**
- * @author John Doe
- *
- *
- * @final multiline
- * comment
- */
-class FinalClass5
-{
-    // with comment and a tag before
-}
-
-/**
- * @author John Doe
- *
- * @final
- */
-class FinalClass6
-{
-    // without comment and a tag before
-}
-
-/**
- * @author John Doe
- *
- * @final another
- *        multiline comment...
- *
- * @return string
- */
-class FinalClass7
-{
-    // with comment and a tag before and after
-}
-
-/**
- * @author John Doe
- * @final
- *
- * @return string
- */
-class FinalClass8
-{
-    // without comment and a tag before and after
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php b/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php
deleted file mode 100644
index 60a28b24..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalMethod.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class FinalMethod
-{
-    /**
-     * @final
-     */
-    public function finalMethod()
-    {
-    }
-
-    /**
-     * @final
-     *
-     * @return int
-     */
-    public function finalMethod2()
-    {
-    }
-
-    public function anotherMethod()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php b/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php
deleted file mode 100644
index 8547f3af..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/FinalMethod2Trait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait FinalMethod2Trait
-{
-    public function finalMethod2()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php
deleted file mode 100644
index 86593db1..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/InterfaceWithAnnotatedParameters.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * Ensures a deprecation is triggered when a new parameter is not declared in child classes.
- */
-interface InterfaceWithAnnotatedParameters
-{
-    /**
-     * @param bool $matrix
-     */
-    public function whereAmI();
-
-    /**
-     * @param       $noType
-     * @param callable(\Throwable|null $reason, mixed $value) $callback and a comment
-     * about this great param
-     * @param string                                          $param (comment with $dollar)
-     * @param $defined
-     * @param  callable  ($a,  $b)  $anotherOne
-     * @param callable (mixed $a, $b) $definedCallable
-     * @param Type$WithDollarIsStillAType $ccc
-     * @param \JustAType
-     */
-    public function iAmHere();
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalClass.php b/vendor/symfony/debug/Tests/Fixtures/InternalClass.php
deleted file mode 100644
index 30efe79b..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalClass.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-class InternalClass
-{
-    use InternalTrait2;
-
-    public function usedInInternalClass()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php b/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php
deleted file mode 100644
index dd79f501..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalInterface.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-interface InternalInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php b/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php
deleted file mode 100644
index 7bb4635c..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalTrait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-trait InternalTrait
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php b/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php
deleted file mode 100644
index e4cbe12a..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/InternalTrait2.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @internal
- */
-trait InternalTrait2
-{
-    /**
-     * @internal
-     */
-    public function internalMethod()
-    {
-    }
-
-    /**
-     * @internal but should not trigger a deprecation
-     */
-    public function usedInInternalClass()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php b/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php
deleted file mode 100644
index dd856362..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/LoggerThatSetAnErrorHandler.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-use Symfony\Component\Debug\BufferingLogger;
-
-class LoggerThatSetAnErrorHandler extends BufferingLogger
-{
-    public function log($level, $message, array $context = [])
-    {
-        set_error_handler('is_string');
-        parent::log($level, $message, $context);
-        restore_error_handler();
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php b/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php
deleted file mode 100644
index a4179a57..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/NonDeprecatedInterface.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-interface NonDeprecatedInterface extends DeprecatedInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/PEARClass.php b/vendor/symfony/debug/Tests/Fixtures/PEARClass.php
deleted file mode 100644
index 39f22818..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/PEARClass.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-class Symfony_Component_Debug_Tests_Fixtures_PEARClass
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php
deleted file mode 100644
index 5d05d798..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/SubClassWithAnnotatedParameters.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class SubClassWithAnnotatedParameters extends ClassWithAnnotatedParameters implements InterfaceWithAnnotatedParameters
-{
-    use TraitWithAnnotatedParameters;
-
-    public function fooMethod(string $foo)
-    {
-    }
-
-    public function barMethod($bar = null)
-    {
-    }
-
-    public function quzMethod()
-    {
-    }
-
-    public function whereAmI()
-    {
-    }
-
-    /**
-     * @param                      $defined
-     * @param Type\Does\Not\Matter $definedCallable
-     */
-    public function iAmHere()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/Throwing.php b/vendor/symfony/debug/Tests/Fixtures/Throwing.php
deleted file mode 100644
index 21e0aba1..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/Throwing.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-throw new \Exception('boo');
diff --git a/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php b/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php
deleted file mode 100644
index 24ac8926..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/ToStringThrower.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class ToStringThrower
-{
-    private $exception;
-
-    public function __construct(\Exception $e)
-    {
-        $this->exception = $e;
-    }
-
-    public function __toString()
-    {
-        try {
-            throw $this->exception;
-        } catch (\Exception $e) {
-            // Using user_error() here is on purpose so we do not forget
-            // that this alias also should work alongside with trigger_error().
-            return trigger_error($e, E_USER_ERROR);
-        }
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php b/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php
deleted file mode 100644
index 5eb5fbf8..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/TraitWithAnnotatedParameters.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait TraitWithAnnotatedParameters
-{
-    /**
-     * `@param` annotations in traits are not parsed.
-     */
-    public function isSymfony()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php b/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php
deleted file mode 100644
index 4c3dae37..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/TraitWithInternalMethod.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-trait TraitWithInternalMethod
-{
-    /**
-     * @internal
-     */
-    public function foo()
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php b/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php
deleted file mode 100644
index 25712519..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualClass.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string classMethod()
- */
-class VirtualClass
-{
-    use VirtualTrait;
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php b/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php
deleted file mode 100644
index de33e8af..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualClassMagicCall.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string magicMethod()
- * @method static string staticMagicMethod()
- */
-class VirtualClassMagicCall
-{
-    public static function __callStatic($name, $arguments)
-    {
-    }
-
-    public function __call($name, $arguments)
-    {
-    }
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php b/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php
deleted file mode 100644
index 943014ee..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string interfaceMethod()
- * @method        sameLineInterfaceMethod($arg)
- * @method sameLineInterfaceMethodNoBraces
- *
- * Ignored
- * @method
- * @method
- *
- * Not ignored
- * @method newLineInterfaceMethod() Some description!
- * @method \stdClass newLineInterfaceMethodNoBraces Description
- *
- * Invalid
- * @method unknownType invalidInterfaceMethod()
- * @method unknownType|string invalidInterfaceMethodNoBraces
- *
- * Complex
- * @method              complexInterfaceMethod($arg, ...$args)
- * @method string[]|int complexInterfaceMethodTyped($arg, int ...$args) Description ...
- *
- * Static
- * @method static Foo&Bar staticMethod()
- * @method static staticMethodNoBraces
- * @method static \stdClass staticMethodTyped(int $arg) Description
- * @method static \stdClass[] staticMethodTypedNoBraces
- */
-interface VirtualInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php b/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php
deleted file mode 100644
index dee19731..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualSubInterface.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string subInterfaceMethod()
- */
-interface VirtualSubInterface extends VirtualInterface
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php b/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php
deleted file mode 100644
index f584a8aa..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/VirtualTrait.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-/**
- * @method string traitMethod()
- */
-trait VirtualTrait
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/casemismatch.php b/vendor/symfony/debug/Tests/Fixtures/casemismatch.php
deleted file mode 100644
index 691d660f..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/casemismatch.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class CaseMismatch
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php b/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php
deleted file mode 100644
index 4cf52671..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/notPsr0Bis.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class NotPSR0bis
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php b/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php
deleted file mode 100644
index ec48dd22..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/psr4/Psr4CaseMismatch.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class PSR4CaseMismatch
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php b/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
deleted file mode 100644
index 8554725a..00000000
--- a/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-class NotPSR0
-{
-}
diff --git a/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php b/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
deleted file mode 100644
index 604bc37f..00000000
--- a/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures2;
-
-class RequiredTwice
-{
-}
diff --git a/vendor/symfony/debug/Tests/HeaderMock.php b/vendor/symfony/debug/Tests/HeaderMock.php
deleted file mode 100644
index d7564db4..00000000
--- a/vendor/symfony/debug/Tests/HeaderMock.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Debug;
-
-function headers_sent()
-{
-    return false;
-}
-
-function header($str, $replace = true, $status = null)
-{
-    Tests\testHeader($str, $replace, $status);
-}
-
-namespace Symfony\Component\Debug\Tests;
-
-function testHeader()
-{
-    static $headers = [];
-
-    if (!$h = \func_get_args()) {
-        $h = $headers;
-        $headers = [];
-
-        return $h;
-    }
-
-    $headers[] = \func_get_args();
-}
diff --git a/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt b/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt
deleted file mode 100644
index 53839c48..00000000
--- a/vendor/symfony/debug/Tests/phpt/debug_class_loader.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Test DebugClassLoader with previously loaded parents
---FILE--
-<?php
-
-namespace Symfony\Component\Debug\Tests\Fixtures;
-
-use Symfony\Component\Debug\DebugClassLoader;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-class_exists(FinalMethod::class);
-
-set_error_handler(function ($type, $msg) { echo $msg, "\n"; });
-
-DebugClassLoader::enable();
-
-class_exists(ExtendedFinalMethod::class);
-
-?>
---EXPECTF--
-The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".
-The "Symfony\Component\Debug\Tests\Fixtures\FinalMethod::finalMethod2()" method is considered final. It may change without further notice as of its next major version. You should not extend it from "Symfony\Component\Debug\Tests\Fixtures\ExtendedFinalMethod".
diff --git a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt b/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
deleted file mode 100644
index 9cd44388..00000000
--- a/vendor/symfony/debug/Tests/phpt/decorate_exception_hander.phpt
+++ /dev/null
@@ -1,47 +0,0 @@
---TEST--
-Test catching fatal errors when handlers are nested
---INI--
-display_errors=0
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-set_error_handler('var_dump');
-set_exception_handler('var_dump');
-
-ErrorHandler::register(null, false);
-
-if (true) {
-    class foo extends missing
-    {
-    }
-}
-
-?>
---EXPECTF--
-object(Symfony\Component\Debug\Exception\ClassNotFoundException)#%d (8) {
-  ["message":protected]=>
-  string(131) "Attempted to load class "missing" from namespace "Symfony\Component\Debug".
-Did you forget a "use" statement for another namespace?"
-  ["string":"Exception":private]=>
-  string(0) ""
-  ["code":protected]=>
-  int(0)
-  ["file":protected]=>
-  string(%d) "%s"
-  ["line":protected]=>
-  int(%d)
-  ["trace":"Exception":private]=>
-  array(%d) {%A}
-  ["previous":"Exception":private]=>
-  NULL
-  ["severity":protected]=>
-  int(1)
-}
diff --git a/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt b/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
deleted file mode 100644
index b743d93a..00000000
--- a/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-Test rethrowing in custom exception handler
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-if (true) {
-    class TestLogger extends \Psr\Log\AbstractLogger
-    {
-        public function log($level, $message, array $context = [])
-        {
-            echo $message, "\n";
-        }
-    }
-}
-
-set_exception_handler(function ($e) { echo 123; throw $e; });
-ErrorHandler::register()->setDefaultLogger(new TestLogger());
-ini_set('display_errors', 1);
-
-throw new \Exception('foo');
-?>
---EXPECTF--
-Uncaught Exception: foo
-123
-Fatal error: Uncaught %s:25
-Stack trace:
-%a
diff --git a/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt b/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
deleted file mode 100644
index 1736a3b5..00000000
--- a/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
+++ /dev/null
@@ -1,42 +0,0 @@
---TEST--
-Test catching fatal errors when handlers are nested
---FILE--
-<?php
-
-namespace Symfony\Component\Debug;
-
-$vendor = __DIR__;
-while (!file_exists($vendor.'/vendor')) {
-    $vendor = \dirname($vendor);
-}
-require $vendor.'/vendor/autoload.php';
-
-Debug::enable();
-ini_set('display_errors', 0);
-
-$eHandler = set_error_handler('var_dump');
-$xHandler = set_exception_handler('var_dump');
-
-var_dump([
-    $eHandler[0] === $xHandler[0] ? 'Error and exception handlers do match' : 'Error and exception handlers are different',
-]);
-
-$eHandler[0]->setExceptionHandler('print_r');
-
-if (true) {
-    class Broken implements \JsonSerializable
-    {
-    }
-}
-
-?>
---EXPECTF--
-array(1) {
-  [0]=>
-  string(37) "Error and exception handlers do match"
-}
-object(Symfony\Component\Debug\Exception\FatalErrorException)#%d (%d) {
-  ["message":protected]=>
-  string(179) "Error: Class Symfony\Component\Debug\Broken contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (JsonSerializable::jsonSerialize)"
-%a
-}
diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json
index 7fd5ff9c..e54a603a 100644
--- a/vendor/symfony/debug/composer.json
+++ b/vendor/symfony/debug/composer.json
@@ -16,14 +16,15 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "psr/log": "~1.0"
+        "php": ">=7.1.3",
+        "psr/log": "~1.0",
+        "symfony/polyfill-php80": "^1.15"
     },
     "conflict": {
         "symfony/http-kernel": "<3.4"
     },
     "require-dev": {
-        "symfony/http-kernel": "~3.4|~4.0"
+        "symfony/http-kernel": "^3.4|^4.0|^5.0"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\Debug\\": "" },
@@ -31,10 +32,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/debug/phpunit.xml.dist b/vendor/symfony/debug/phpunit.xml.dist
deleted file mode 100644
index a51bbff9..00000000
--- a/vendor/symfony/debug/phpunit.xml.dist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Debug Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-        <testsuite name="Symfony Debug Extension Test Suite">
-            <directory suffix=".phpt">./Resources/ext/tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/event-dispatcher-contracts/LICENSE b/vendor/symfony/event-dispatcher-contracts/LICENSE
index 3f853aaf..69d925ba 100644
--- a/vendor/symfony/event-dispatcher-contracts/LICENSE
+++ b/vendor/symfony/event-dispatcher-contracts/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/event-dispatcher-contracts/composer.json b/vendor/symfony/event-dispatcher-contracts/composer.json
index 55802a49..862c2565 100644
--- a/vendor/symfony/event-dispatcher-contracts/composer.json
+++ b/vendor/symfony/event-dispatcher-contracts/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": "^7.1.3"
+        "php": ">=7.1.3"
     },
     "suggest": {
         "psr/event-dispatcher": "",
@@ -29,6 +29,10 @@
     "extra": {
         "branch-alias": {
             "dev-master": "1.1-dev"
+        },
+        "thanks": {
+            "name": "symfony/contracts",
+            "url": "https://github.com/symfony/contracts"
         }
     }
 }
diff --git a/vendor/symfony/event-dispatcher/.gitignore b/vendor/symfony/event-dispatcher/.gitignore
deleted file mode 100644
index c49a5d8d..00000000
--- a/vendor/symfony/event-dispatcher/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/event-dispatcher/CHANGELOG.md b/vendor/symfony/event-dispatcher/CHANGELOG.md
index 7653cad1..54fd0422 100644
--- a/vendor/symfony/event-dispatcher/CHANGELOG.md
+++ b/vendor/symfony/event-dispatcher/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * `AddEventAliasesPass` has been added, allowing applications and bundles to extend the event alias mapping used by `RegisterListenersPass`.
+ * Made the `event` attribute of the `kernel.event_listener` tag optional for FQCN events.
+
 4.3.0
 -----
 
@@ -10,7 +16,7 @@ CHANGELOG
 4.1.0
 -----
 
- * added support for invokable event listeners tagged with `kernel.event_listener` by default 
+ * added support for invokable event listeners tagged with `kernel.event_listener` by default
  * The `TraceableEventDispatcher::getOrphanedEvents()` method has been added.
  * The `TraceableEventDispatcherInterface` has been deprecated.
 
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
index 513c6ade..d320a262 100644
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
@@ -145,13 +145,13 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
         } else {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
 
             if (!$event instanceof Event) {
-                throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of %s, %s given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+                throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of "%s", "%s" given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event)));
             }
         }
 
@@ -323,7 +323,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
     {
     }
 
-    private function preProcess($eventName)
+    private function preProcess(string $eventName)
     {
         if (!$this->dispatcher->hasListeners($eventName)) {
             $this->orphanedEvents[$this->currentRequestHash][] = $eventName;
@@ -341,7 +341,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
         }
     }
 
-    private function postProcess($eventName)
+    private function postProcess(string $eventName)
     {
         unset($this->wrappedListeners[$eventName]);
         $skipped = false;
diff --git a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
index 3e6493eb..4b27d3b2 100644
--- a/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
+++ b/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php
@@ -16,8 +16,10 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\EventDispatcher\Event as LegacyEvent;
 use Symfony\Component\EventDispatcher\EventDispatcher;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Contracts\EventDispatcher\Event;
 
 /**
  * Compiler pass to register tagged services for an event dispatcher.
@@ -54,12 +56,12 @@ class RegisterListenersPass implements CompilerPassInterface
             return;
         }
 
+        $aliases = [];
+
         if ($container->hasParameter($this->eventAliasesParameter)) {
             $aliases = $container->getParameter($this->eventAliasesParameter);
-            $container->getParameterBag()->remove($this->eventAliasesParameter);
-        } else {
-            $aliases = [];
         }
+
         $definition = $container->findDefinition($this->dispatcherService);
 
         foreach ($container->findTaggedServiceIds($this->listenerTag, true) as $id => $events) {
@@ -67,8 +69,14 @@ class RegisterListenersPass implements CompilerPassInterface
                 $priority = isset($event['priority']) ? $event['priority'] : 0;
 
                 if (!isset($event['event'])) {
-                    throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
+                    if ($container->getDefinition($id)->hasTag($this->subscriberTag)) {
+                        continue;
+                    }
+
+                    $event['method'] = $event['method'] ?? '__invoke';
+                    $event['event'] = $this->getEventFromTypeDeclaration($container, $id, $event['method']);
                 }
+
                 $event['event'] = $aliases[$event['event']] ?? $event['event'];
 
                 if (!isset($event['method'])) {
@@ -122,6 +130,24 @@ class RegisterListenersPass implements CompilerPassInterface
             ExtractingEventDispatcher::$aliases = [];
         }
     }
+
+    private function getEventFromTypeDeclaration(ContainerBuilder $container, string $id, string $method): string
+    {
+        if (
+            null === ($class = $container->getDefinition($id)->getClass())
+            || !($r = $container->getReflectionClass($class, false))
+            || !$r->hasMethod($method)
+            || 1 > ($m = $r->getMethod($method))->getNumberOfParameters()
+            || !($type = $m->getParameters()[0]->getType()) instanceof \ReflectionNamedType
+            || $type->isBuiltin()
+            || Event::class === ($name = $type->getName())
+            || LegacyEvent::class === $name
+        ) {
+            throw new InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag));
+        }
+
+        return $name;
+    }
 }
 
 /**
@@ -139,7 +165,7 @@ class ExtractingEventDispatcher extends EventDispatcher implements EventSubscrib
         $this->listeners[] = [$eventName, $listener[1], $priority];
     }
 
-    public static function getSubscribedEvents()
+    public static function getSubscribedEvents(): array
     {
         $events = [];
 
diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php
index ebfd1ec6..d22bcea1 100644
--- a/vendor/symfony/event-dispatcher/EventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/EventDispatcher.php
@@ -38,7 +38,7 @@ class EventDispatcher implements EventDispatcherInterface
 
     public function __construct()
     {
-        if (__CLASS__ === \get_class($this)) {
+        if (__CLASS__ === static::class) {
             $this->optimized = [];
         }
     }
@@ -54,13 +54,13 @@ class EventDispatcher implements EventDispatcherInterface
 
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), E_USER_DEPRECATED);
+        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
         } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
         }
 
         if (null !== $this->optimized && null !== $eventName) {
@@ -111,14 +111,16 @@ class EventDispatcher implements EventDispatcherInterface
             return null;
         }
 
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
             $listener[0] = $listener[0]();
+            $listener[1] = $listener[1] ?? '__invoke';
         }
 
         foreach ($this->listeners[$eventName] as $priority => &$listeners) {
             foreach ($listeners as &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure) {
+                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
                     $v[0] = $v[0]();
+                    $v[1] = $v[1] ?? '__invoke';
                 }
                 if ($v === $listener) {
                     return $priority;
@@ -165,14 +167,16 @@ class EventDispatcher implements EventDispatcherInterface
             return;
         }
 
-        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+        if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
             $listener[0] = $listener[0]();
+            $listener[1] = $listener[1] ?? '__invoke';
         }
 
         foreach ($this->listeners[$eventName] as $priority => &$listeners) {
             foreach ($listeners as $k => &$v) {
-                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure) {
+                if ($v !== $listener && \is_array($v) && isset($v[0]) && $v[0] instanceof \Closure && 2 >= \count($v)) {
                     $v[0] = $v[0]();
+                    $v[1] = $v[1] ?? '__invoke';
                 }
                 if ($v === $listener) {
                     unset($listeners[$k], $this->sorted[$eventName], $this->optimized[$eventName]);
@@ -270,9 +274,10 @@ class EventDispatcher implements EventDispatcherInterface
         $this->sorted[$eventName] = [];
 
         foreach ($this->listeners[$eventName] as &$listeners) {
-            foreach ($listeners as $k => $listener) {
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+            foreach ($listeners as $k => &$listener) {
+                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
                     $listener[0] = $listener[0]();
+                    $listener[1] = $listener[1] ?? '__invoke';
                 }
                 $this->sorted[$eventName][] = $listener;
             }
@@ -290,10 +295,11 @@ class EventDispatcher implements EventDispatcherInterface
         foreach ($this->listeners[$eventName] as &$listeners) {
             foreach ($listeners as &$listener) {
                 $closure = &$this->optimized[$eventName][];
-                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure) {
+                if (\is_array($listener) && isset($listener[0]) && $listener[0] instanceof \Closure && 2 >= \count($listener)) {
                     $closure = static function (...$args) use (&$listener, &$closure) {
                         if ($listener[0] instanceof \Closure) {
                             $listener[0] = $listener[0]();
+                            $listener[1] = $listener[1] ?? '__invoke';
                         }
                         ($closure = \Closure::fromCallable($listener))(...$args);
                     };
diff --git a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
index 824f2159..741590b1 100644
--- a/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
+++ b/vendor/symfony/event-dispatcher/EventSubscriberInterface.php
@@ -40,6 +40,9 @@ interface EventSubscriberInterface
      *  * ['eventName' => ['methodName', $priority]]
      *  * ['eventName' => [['methodName1', $priority], ['methodName2']]]
      *
+     * The code must not depend on runtime state as it will only be called at compile time.
+     * All logic depending on runtime state must be put into the individual methods handling the events.
+     *
      * @return array The event names to listen to
      */
     public static function getSubscribedEvents();
diff --git a/vendor/symfony/event-dispatcher/LICENSE b/vendor/symfony/event-dispatcher/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/event-dispatcher/LICENSE
+++ b/vendor/symfony/event-dispatcher/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
index be0d381a..8ee6cba1 100644
--- a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
+++ b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php
@@ -38,7 +38,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
             return $dispatcher;
         }
 
-        @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The signature of the "%s::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.', $r->class), \E_USER_DEPRECATED);
 
         $self = new self();
         $self->dispatcher = $dispatcher;
@@ -59,13 +59,13 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
 
         if (\is_object($event)) {
             $eventName = $eventName ?? \get_class($event);
-        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) {
-            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), E_USER_DEPRECATED);
+        } elseif (\is_string($event) && (null === $eventName || $eventName instanceof ContractsEvent || $eventName instanceof Event)) {
+            @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), \E_USER_DEPRECATED);
             $swap = $event;
             $event = $eventName ?? new Event();
             $eventName = $swap;
         } else {
-            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, "%s" given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event)));
         }
 
         $listeners = $this->getListeners($eventName);
@@ -116,7 +116,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function getListeners($eventName = null)
+    public function getListeners($eventName = null): array
     {
         return $this->dispatcher->getListeners($eventName);
     }
@@ -124,7 +124,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function getListenerPriority($eventName, $listener)
+    public function getListenerPriority($eventName, $listener): ?int
     {
         return $this->dispatcher->getListenerPriority($eventName, $listener);
     }
@@ -132,7 +132,7 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface
     /**
      * {@inheritdoc}
      */
-    public function hasListeners($eventName = null)
+    public function hasListeners($eventName = null): bool
     {
         return $this->dispatcher->hasListeners($eventName);
     }
diff --git a/vendor/symfony/event-dispatcher/LegacyEventProxy.php b/vendor/symfony/event-dispatcher/LegacyEventProxy.php
index cad8cfae..45ee251d 100644
--- a/vendor/symfony/event-dispatcher/LegacyEventProxy.php
+++ b/vendor/symfony/event-dispatcher/LegacyEventProxy.php
@@ -37,7 +37,7 @@ final class LegacyEventProxy extends Event
         return $this->event;
     }
 
-    public function isPropagationStopped()
+    public function isPropagationStopped(): bool
     {
         if (!$this->event instanceof ContractsEvent && !$this->event instanceof StoppableEventInterface) {
             return false;
diff --git a/vendor/symfony/event-dispatcher/README.md b/vendor/symfony/event-dispatcher/README.md
index 185c3fec..e0d38eed 100644
--- a/vendor/symfony/event-dispatcher/README.md
+++ b/vendor/symfony/event-dispatcher/README.md
@@ -8,7 +8,7 @@ them.
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/event_dispatcher/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/event_dispatcher.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php
deleted file mode 100644
index 442b88fb..00000000
--- a/vendor/symfony/event-dispatcher/Tests/ChildEventDispatcherTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-
-class ChildEventDispatcherTest extends EventDispatcherTest
-{
-    protected function createEventDispatcher()
-    {
-        return new ChildEventDispatcher();
-    }
-}
-
-class ChildEventDispatcher extends EventDispatcher
-{
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
deleted file mode 100644
index ea476eee..00000000
--- a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
+++ /dev/null
@@ -1,319 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\Stopwatch\Stopwatch;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-class TraceableEventDispatcherTest extends TestCase
-{
-    public function testAddRemoveListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame($listener, $listeners[0]);
-
-        $tdispatcher->removeListener('foo', $listener);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo'));
-    }
-
-    public function testHasListeners()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $this->assertFalse($dispatcher->hasListeners('foo'));
-        $this->assertFalse($tdispatcher->hasListeners('foo'));
-
-        $tdispatcher->addListener('foo', $listener = function () {});
-        $this->assertTrue($dispatcher->hasListeners('foo'));
-        $this->assertTrue($tdispatcher->hasListeners('foo'));
-    }
-
-    public function testGetListenerPriority()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $tdispatcher->addListener('foo', function () {}, 123);
-
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0]));
-
-        // Verify that priority is preserved when listener is removed and re-added
-        // in preProcess() and postProcess().
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0]));
-    }
-
-    public function testGetListenerPriorityWhileDispatching()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $priorityWhileDispatching = null;
-
-        $listener = function () use ($tdispatcher, &$priorityWhileDispatching, &$listener) {
-            $priorityWhileDispatching = $tdispatcher->getListenerPriority('bar', $listener);
-        };
-
-        $tdispatcher->addListener('bar', $listener, 5);
-        $tdispatcher->dispatch(new Event(), 'bar');
-        $this->assertSame(5, $priorityWhileDispatching);
-    }
-
-    public function testAddRemoveSubscriber()
-    {
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-
-        $subscriber = new EventSubscriber();
-
-        $tdispatcher->addSubscriber($subscriber);
-        $listeners = $dispatcher->getListeners('foo');
-        $this->assertCount(1, $listeners);
-        $this->assertSame([$subscriber, 'call'], $listeners[0]);
-
-        $tdispatcher->removeSubscriber($subscriber);
-        $this->assertCount(0, $dispatcher->getListeners('foo'));
-    }
-
-    public function testGetCalledListeners()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $listeners = $tdispatcher->getNotCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([], $tdispatcher->getCalledListeners());
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-        $this->assertEquals([], $tdispatcher->getNotCalledListeners());
-    }
-
-    public function testClearCalledListeners()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $tdispatcher->reset();
-
-        $listeners = $tdispatcher->getNotCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-        unset($listeners[0]['stub']);
-        $this->assertEquals([], $tdispatcher->getCalledListeners());
-        $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
-    }
-
-    public function testDispatchContractsEvent()
-    {
-        $expectedEvent = new ContractsEvent();
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function ($event) use ($expectedEvent) {
-            $this->assertSame($event, $expectedEvent);
-        }, 5);
-        $tdispatcher->dispatch($expectedEvent, 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-    }
-
-    public function testDispatchAfterReset()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {}, 5);
-
-        $tdispatcher->reset();
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $listeners = $tdispatcher->getCalledListeners();
-        $this->assertArrayHasKey('stub', $listeners[0]);
-    }
-
-    public function testGetCalledListenersNested()
-    {
-        $tdispatcher = null;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $event, $eventName, $dispatcher) use (&$tdispatcher) {
-            $tdispatcher = $dispatcher;
-            $dispatcher->dispatch(new Event(), 'bar');
-        });
-        $dispatcher->addListener('bar', function (Event $event) {});
-        $dispatcher->dispatch(new Event(), 'foo');
-        $this->assertSame($dispatcher, $tdispatcher);
-        $this->assertCount(2, $dispatcher->getCalledListeners());
-    }
-
-    public function testItReturnsNoOrphanedEventsWhenCreated()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertEmpty($events);
-    }
-
-    public function testItReturnsOrphanedEventsAfterDispatch()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(1, $events);
-        $this->assertEquals(['foo'], $events);
-    }
-
-    public function testItDoesNotReturnHandledEvents()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->addListener('foo', function () {});
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertEmpty($events);
-    }
-
-    public function testLogger()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function () {});
-        $tdispatcher->addListener('foo', $listener2 = function () {});
-
-        $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(1))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-    }
-
-    public function testLoggerWithStoppedEvent()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
-        $tdispatcher->addListener('foo', $listener2 = function () {});
-
-        $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(1))->method('debug')->with('Listener "{listener}" stopped propagation of the event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
-        $logger->expects($this->at(2))->method('debug')->with('Listener "{listener}" was not called for event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-    }
-
-    public function testDispatchCallListeners()
-    {
-        $called = [];
-
-        $dispatcher = new EventDispatcher();
-        $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-        $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo1'; }, 10);
-        $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo2'; }, 20);
-
-        $tdispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertSame(['foo2', 'foo1'], $called);
-    }
-
-    public function testDispatchNested()
-    {
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $loop = 1;
-        $dispatchedEvents = 0;
-        $dispatcher->addListener('foo', $listener1 = function () use ($dispatcher, &$loop) {
-            ++$loop;
-            if (2 == $loop) {
-                $dispatcher->dispatch(new Event(), 'foo');
-            }
-        });
-        $dispatcher->addListener('foo', function () use (&$dispatchedEvents) {
-            ++$dispatchedEvents;
-        });
-
-        $dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertSame(2, $dispatchedEvents);
-    }
-
-    public function testDispatchReusedEventNested()
-    {
-        $nestedCall = false;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('foo', function (Event $e) use ($dispatcher) {
-            $dispatcher->dispatch(new Event(), 'bar', $e);
-        });
-        $dispatcher->addListener('bar', function (Event $e) use (&$nestedCall) {
-            $nestedCall = true;
-        });
-
-        $this->assertFalse($nestedCall);
-        $dispatcher->dispatch(new Event(), 'foo');
-        $this->assertTrue($nestedCall);
-    }
-
-    public function testListenerCanRemoveItselfWhenExecuted()
-    {
-        $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $listener1 = function ($event, $eventName, EventDispatcherInterface $dispatcher) use (&$listener1) {
-            $dispatcher->removeListener('foo', $listener1);
-        };
-        $eventDispatcher->addListener('foo', $listener1);
-        $eventDispatcher->addListener('foo', function () {});
-        $eventDispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
-    }
-
-    public function testClearOrphanedEvents()
-    {
-        $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $tdispatcher->dispatch(new Event(), 'foo');
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(1, $events);
-        $tdispatcher->reset();
-        $events = $tdispatcher->getOrphanedEvents();
-        $this->assertCount(0, $events);
-    }
-}
-
-class EventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['foo' => 'call'];
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php
deleted file mode 100644
index 75e90120..00000000
--- a/vendor/symfony/event-dispatcher/Tests/Debug/WrappedListenerTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Debug\WrappedListener;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class WrappedListenerTest extends TestCase
-{
-    /**
-     * @dataProvider provideListenersToDescribe
-     */
-    public function testListenerDescription($listener, $expected)
-    {
-        $wrappedListener = new WrappedListener($listener, null, $this->getMockBuilder(Stopwatch::class)->getMock(), $this->getMockBuilder(EventDispatcherInterface::class)->getMock());
-
-        $this->assertStringMatchesFormat($expected, $wrappedListener->getPretty());
-    }
-
-    public function provideListenersToDescribe()
-    {
-        return [
-            [new FooListener(), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::__invoke'],
-            [[new FooListener(), 'listen'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'],
-            [['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'],
-            [['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'invalidMethod'], 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::invalidMethod'],
-            ['var_dump', 'var_dump'],
-            [function () {}, 'closure'],
-            [\Closure::fromCallable([new FooListener(), 'listen']), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'],
-            [\Closure::fromCallable(['Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic']), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'],
-            [\Closure::fromCallable(function () {}), 'closure'],
-        ];
-    }
-}
-
-class FooListener
-{
-    public function listen()
-    {
-    }
-
-    public function __invoke()
-    {
-    }
-
-    public static function listenStatic()
-    {
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php b/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
deleted file mode 100644
index 780f7087..00000000
--- a/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-class RegisterListenersPassTest extends TestCase
-{
-    /**
-     * Tests that event subscribers not implementing EventSubscriberInterface
-     * trigger an exception.
-     */
-    public function testEventSubscriberWithoutInterface()
-    {
-        $this->expectException('InvalidArgumentException');
-        $builder = new ContainerBuilder();
-        $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', 'stdClass')
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-    }
-
-    public function testValidEventSubscriber()
-    {
-        $builder = new ContainerBuilder();
-        $eventDispatcherDefinition = $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService')
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('my_event_subscriber')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $eventDispatcherDefinition->getMethodCalls());
-    }
-
-    public function testAliasedEventSubscriber(): void
-    {
-        $builder = new ContainerBuilder();
-        $builder->setParameter('event_dispatcher.event_aliases', [AliasedEvent::class => 'aliased_event']);
-        $builder->register('event_dispatcher');
-        $builder->register('my_event_subscriber', AliasedSubscriber::class)
-            ->addTag('kernel.event_subscriber');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($builder);
-
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'aliased_event',
-                    [new ServiceClosureArgument(new Reference('my_event_subscriber')), 'onAliasedEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $builder->getDefinition('event_dispatcher')->getMethodCalls());
-    }
-
-    public function testAbstractEventListener()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The service "foo" tagged "kernel.event_listener" must not be abstract.');
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_listener', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testAbstractEventSubscriber()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The service "foo" tagged "kernel.event_subscriber" must not be abstract.');
-        $container = new ContainerBuilder();
-        $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testEventSubscriberResolvableClassName()
-    {
-        $container = new ContainerBuilder();
-
-        $container->setParameter('subscriber.class', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService');
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-
-    public function testHotPathEvents()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('foo', SubscriberService::class)->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        (new RegisterListenersPass())->setHotPathEvents(['event'])->process($container);
-
-        $this->assertTrue($container->getDefinition('foo')->hasTag('container.hot_path'));
-    }
-
-    public function testEventSubscriberUnresolvableClassName()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('You have requested a non-existent parameter "subscriber.class"');
-        $container = new ContainerBuilder();
-        $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', []);
-        $container->register('event_dispatcher', 'stdClass');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-    }
-
-    public function testInvokableEventListener()
-    {
-        $container = new ContainerBuilder();
-        $container->register('foo', \stdClass::class)->addTag('kernel.event_listener', ['event' => 'foo.bar']);
-        $container->register('bar', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => 'foo.bar']);
-        $container->register('baz', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => 'event']);
-        $container->register('event_dispatcher', \stdClass::class);
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'foo.bar',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onFooBar'],
-                    0,
-                ],
-            ],
-            [
-                'addListener',
-                [
-                    'foo.bar',
-                    [new ServiceClosureArgument(new Reference('bar')), '__invoke'],
-                    0,
-                ],
-            ],
-            [
-                'addListener',
-                [
-                    'event',
-                    [new ServiceClosureArgument(new Reference('baz')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-
-    public function testAliasedEventListener(): void
-    {
-        $container = new ContainerBuilder();
-        $container->setParameter('event_dispatcher.event_aliases', [AliasedEvent::class => 'aliased_event']);
-        $container->register('foo', InvokableListenerService::class)->addTag('kernel.event_listener', ['event' => AliasedEvent::class, 'method' => 'onEvent']);
-        $container->register('event_dispatcher');
-
-        $registerListenersPass = new RegisterListenersPass();
-        $registerListenersPass->process($container);
-
-        $definition = $container->getDefinition('event_dispatcher');
-        $expectedCalls = [
-            [
-                'addListener',
-                [
-                    'aliased_event',
-                    [new ServiceClosureArgument(new Reference('foo')), 'onEvent'],
-                    0,
-                ],
-            ],
-        ];
-        $this->assertEquals($expectedCalls, $definition->getMethodCalls());
-    }
-}
-
-class SubscriberService implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return [
-            'event' => 'onEvent',
-        ];
-    }
-}
-
-class InvokableListenerService
-{
-    public function __invoke()
-    {
-    }
-
-    public function onEvent()
-    {
-    }
-}
-
-final class AliasedSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents(): array
-    {
-        return [
-            AliasedEvent::class => 'onAliasedEvent',
-        ];
-    }
-}
-
-final class AliasedEvent
-{
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
deleted file mode 100644
index 83d10a89..00000000
--- a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-class EventDispatcherTest extends TestCase
-{
-    /* Some pseudo events */
-    const preFoo = 'pre.foo';
-    const postFoo = 'post.foo';
-    const preBar = 'pre.bar';
-    const postBar = 'post.bar';
-
-    /**
-     * @var EventDispatcher
-     */
-    private $dispatcher;
-
-    private $listener;
-
-    protected function setUp(): void
-    {
-        $this->dispatcher = $this->createEventDispatcher();
-        $this->listener = new TestEventListener();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->dispatcher = null;
-        $this->listener = null;
-    }
-
-    protected function createEventDispatcher()
-    {
-        return new EventDispatcher();
-    }
-
-    public function testInitialState()
-    {
-        $this->assertEquals([], $this->dispatcher->getListeners());
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddListener()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->assertTrue($this->dispatcher->hasListeners());
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::preFoo));
-        $this->assertCount(1, $this->dispatcher->getListeners(self::postFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners());
-    }
-
-    public function testGetListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener1->name = '1';
-        $listener2->name = '2';
-        $listener3->name = '3';
-
-        $this->dispatcher->addListener('pre.foo', [$listener1, 'preFoo'], -10);
-        $this->dispatcher->addListener('pre.foo', [$listener2, 'preFoo'], 10);
-        $this->dispatcher->addListener('pre.foo', [$listener3, 'preFoo']);
-
-        $expected = [
-            [$listener2, 'preFoo'],
-            [$listener3, 'preFoo'],
-            [$listener1, 'preFoo'],
-        ];
-
-        $this->assertSame($expected, $this->dispatcher->getListeners('pre.foo'));
-    }
-
-    public function testGetAllListenersSortsByPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-        $listener3 = new TestEventListener();
-        $listener4 = new TestEventListener();
-        $listener5 = new TestEventListener();
-        $listener6 = new TestEventListener();
-
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->addListener('post.foo', $listener4, -10);
-        $this->dispatcher->addListener('post.foo', $listener5);
-        $this->dispatcher->addListener('post.foo', $listener6, 10);
-
-        $expected = [
-            'pre.foo' => [$listener3, $listener2, $listener1],
-            'post.foo' => [$listener6, $listener5, $listener4],
-        ];
-
-        $this->assertSame($expected, $this->dispatcher->getListeners());
-    }
-
-    public function testGetListenerPriority()
-    {
-        $listener1 = new TestEventListener();
-        $listener2 = new TestEventListener();
-
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-
-        $this->assertSame(-10, $this->dispatcher->getListenerPriority('pre.foo', $listener1));
-        $this->assertSame(0, $this->dispatcher->getListenerPriority('pre.foo', $listener2));
-        $this->assertNull($this->dispatcher->getListenerPriority('pre.bar', $listener2));
-        $this->assertNull($this->dispatcher->getListenerPriority('pre.foo', function () {}));
-    }
-
-    public function testDispatch()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertTrue($this->listener->preFooInvoked);
-        $this->assertFalse($this->listener->postFooInvoked);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), 'noevent'));
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), self::preFoo));
-        $event = new Event();
-        $return = $this->dispatcher->dispatch($event, self::preFoo);
-        $this->assertSame($event, $return);
-    }
-
-    public function testDispatchContractsEvent()
-    {
-        $this->dispatcher->addListener('pre.foo', [$this->listener, 'preFoo']);
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo']);
-        $this->dispatcher->dispatch(new ContractsEvent(), self::preFoo);
-        $this->assertTrue($this->listener->preFooInvoked);
-        $this->assertFalse($this->listener->postFooInvoked);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), 'noevent'));
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(new Event(), self::preFoo));
-        $event = new Event();
-        $return = $this->dispatcher->dispatch($event, self::preFoo);
-        $this->assertSame($event, $return);
-    }
-
-    public function testDispatchForClosure()
-    {
-        $invoked = 0;
-        $listener = function () use (&$invoked) {
-            ++$invoked;
-        };
-        $this->dispatcher->addListener('pre.foo', $listener);
-        $this->dispatcher->addListener('post.foo', $listener);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertEquals(1, $invoked);
-    }
-
-    public function testStopEventPropagation()
-    {
-        $otherListener = new TestEventListener();
-
-        // postFoo() stops the propagation, so only one listener should
-        // be executed
-        // Manually set priority to enforce $this->listener to be called first
-        $this->dispatcher->addListener('post.foo', [$this->listener, 'postFoo'], 10);
-        $this->dispatcher->addListener('post.foo', [$otherListener, 'postFoo']);
-        $this->dispatcher->dispatch(new Event(), self::postFoo);
-        $this->assertTrue($this->listener->postFooInvoked);
-        $this->assertFalse($otherListener->postFooInvoked);
-    }
-
-    public function testDispatchByPriority()
-    {
-        $invoked = [];
-        $listener1 = function () use (&$invoked) {
-            $invoked[] = '1';
-        };
-        $listener2 = function () use (&$invoked) {
-            $invoked[] = '2';
-        };
-        $listener3 = function () use (&$invoked) {
-            $invoked[] = '3';
-        };
-        $this->dispatcher->addListener('pre.foo', $listener1, -10);
-        $this->dispatcher->addListener('pre.foo', $listener2);
-        $this->dispatcher->addListener('pre.foo', $listener3, 10);
-        $this->dispatcher->dispatch(new Event(), self::preFoo);
-        $this->assertEquals(['3', '2', '1'], $invoked);
-    }
-
-    public function testRemoveListener()
-    {
-        $this->dispatcher->addListener('pre.bar', $this->listener);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('pre.bar', $this->listener);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preBar));
-        $this->dispatcher->removeListener('notExists', $this->listener);
-    }
-
-    public function testAddSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testAddSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\Tests\TestEventSubscriberWithPriorities', $listeners[0][0]);
-    }
-
-    public function testAddSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-
-        $listeners = $this->dispatcher->getListeners('pre.foo');
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $listeners);
-        $this->assertEquals('preFoo2', $listeners[0][1]);
-    }
-
-    public function testRemoveSubscriber()
-    {
-        $eventSubscriber = new TestEventSubscriber();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertTrue($this->dispatcher->hasListeners(self::postFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertFalse($this->dispatcher->hasListeners(self::postFoo));
-    }
-
-    public function testRemoveSubscriberWithPriorities()
-    {
-        $eventSubscriber = new TestEventSubscriberWithPriorities();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    public function testRemoveSubscriberWithMultipleListeners()
-    {
-        $eventSubscriber = new TestEventSubscriberWithMultipleListeners();
-        $this->dispatcher->addSubscriber($eventSubscriber);
-        $this->assertTrue($this->dispatcher->hasListeners(self::preFoo));
-        $this->assertCount(2, $this->dispatcher->getListeners(self::preFoo));
-        $this->dispatcher->removeSubscriber($eventSubscriber);
-        $this->assertFalse($this->dispatcher->hasListeners(self::preFoo));
-    }
-
-    public function testEventReceivesTheDispatcherInstanceAsArgument()
-    {
-        $listener = new TestWithDispatcher();
-        $this->dispatcher->addListener('test', [$listener, 'foo']);
-        $this->assertNull($listener->name);
-        $this->assertNull($listener->dispatcher);
-        $this->dispatcher->dispatch(new Event(), 'test');
-        $this->assertEquals('test', $listener->name);
-        $this->assertSame($this->dispatcher, $listener->dispatcher);
-    }
-
-    /**
-     * @see https://bugs.php.net/62976
-     *
-     * This bug affects:
-     *  - The PHP 5.3 branch for versions < 5.3.18
-     *  - The PHP 5.4 branch for versions < 5.4.8
-     *  - The PHP 5.5 branch is not affected
-     */
-    public function testWorkaroundForPhpBug62976()
-    {
-        $dispatcher = $this->createEventDispatcher();
-        $dispatcher->addListener('bug.62976', new CallableClass());
-        $dispatcher->removeListener('bug.62976', function () {});
-        $this->assertTrue($dispatcher->hasListeners('bug.62976'));
-    }
-
-    public function testHasListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-
-    public function testGetListenersWhenAddedCallbackListenerIsRemoved()
-    {
-        $listener = function () {};
-        $this->dispatcher->addListener('foo', $listener);
-        $this->dispatcher->removeListener('foo', $listener);
-        $this->assertSame([], $this->dispatcher->getListeners());
-    }
-
-    public function testHasListenersWithoutEventsReturnsFalseAfterHasListenersWithEventHasBeenCalled()
-    {
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-        $this->assertFalse($this->dispatcher->hasListeners());
-    }
-
-    public function testHasListenersIsLazy()
-    {
-        $called = 0;
-        $listener = [function () use (&$called) { ++$called; }, 'onFoo'];
-        $this->dispatcher->addListener('foo', $listener);
-        $this->assertTrue($this->dispatcher->hasListeners());
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->assertSame(0, $called);
-    }
-
-    public function testDispatchLazyListener()
-    {
-        $called = 0;
-        $factory = function () use (&$called) {
-            ++$called;
-
-            return new TestWithDispatcher();
-        };
-        $this->dispatcher->addListener('foo', [$factory, 'foo']);
-        $this->assertSame(0, $called);
-        $this->dispatcher->dispatch(new Event(), 'foo');
-        $this->dispatcher->dispatch(new Event(), 'foo');
-        $this->assertSame(1, $called);
-    }
-
-    public function testRemoveFindsLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo']);
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->dispatcher->removeListener('foo', [$test, 'foo']);
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-
-        $this->dispatcher->addListener('foo', [$test, 'foo']);
-        $this->assertTrue($this->dispatcher->hasListeners('foo'));
-        $this->dispatcher->removeListener('foo', [$factory, 'foo']);
-        $this->assertFalse($this->dispatcher->hasListeners('foo'));
-    }
-
-    public function testPriorityFindsLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo'], 3);
-        $this->assertSame(3, $this->dispatcher->getListenerPriority('foo', [$test, 'foo']));
-        $this->dispatcher->removeListener('foo', [$factory, 'foo']);
-
-        $this->dispatcher->addListener('foo', [$test, 'foo'], 5);
-        $this->assertSame(5, $this->dispatcher->getListenerPriority('foo', [$factory, 'foo']));
-    }
-
-    public function testGetLazyListeners()
-    {
-        $test = new TestWithDispatcher();
-        $factory = function () use ($test) { return $test; };
-
-        $this->dispatcher->addListener('foo', [$factory, 'foo'], 3);
-        $this->assertSame([[$test, 'foo']], $this->dispatcher->getListeners('foo'));
-
-        $this->dispatcher->removeListener('foo', [$test, 'foo']);
-        $this->dispatcher->addListener('bar', [$factory, 'foo'], 3);
-        $this->assertSame(['bar' => [[$test, 'foo']]], $this->dispatcher->getListeners());
-    }
-
-    public function testMutatingWhilePropagationIsStopped()
-    {
-        $testLoaded = false;
-        $test = new TestEventListener();
-        $this->dispatcher->addListener('foo', [$test, 'postFoo']);
-        $this->dispatcher->addListener('foo', [function () use ($test, &$testLoaded) {
-            $testLoaded = true;
-
-            return $test;
-        }, 'preFoo']);
-
-        $this->dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertTrue($test->postFooInvoked);
-        $this->assertFalse($test->preFooInvoked);
-
-        $this->assertsame(0, $this->dispatcher->getListenerPriority('foo', [$test, 'preFoo']));
-
-        $test->preFoo(new Event());
-        $this->dispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertTrue($testLoaded);
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithoutEvent()
-    {
-        $this->dispatcher->dispatch('foo');
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithEvent()
-    {
-        $this->dispatcher->dispatch('foo', new Event());
-    }
-
-    public function testLegacySignatureWithNewEventObject()
-    {
-        $this->expectException('TypeError');
-        $this->expectExceptionMessage('Argument 1 passed to "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given.');
-        $this->dispatcher->dispatch('foo', new ContractsEvent());
-    }
-}
-
-class CallableClass
-{
-    public function __invoke()
-    {
-    }
-}
-
-class TestEventListener
-{
-    public $preFooInvoked = false;
-    public $postFooInvoked = false;
-
-    /* Listener methods */
-
-    public function preFoo($e)
-    {
-        $this->preFooInvoked = true;
-    }
-
-    public function postFoo($e)
-    {
-        $this->postFooInvoked = true;
-
-        if (!$this->preFooInvoked) {
-            $e->stopPropagation();
-        }
-    }
-}
-
-class TestWithDispatcher
-{
-    public $name;
-    public $dispatcher;
-
-    public function foo($e, $name, $dispatcher)
-    {
-        $this->name = $name;
-        $this->dispatcher = $dispatcher;
-    }
-}
-
-class TestEventSubscriber implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['pre.foo' => 'preFoo', 'post.foo' => 'postFoo'];
-    }
-}
-
-class TestEventSubscriberWithPriorities implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return [
-            'pre.foo' => ['preFoo', 10],
-            'post.foo' => ['postFoo'],
-        ];
-    }
-}
-
-class TestEventSubscriberWithMultipleListeners implements EventSubscriberInterface
-{
-    public static function getSubscribedEvents()
-    {
-        return ['pre.foo' => [
-            ['preFoo1'],
-            ['preFoo2', 10],
-        ]];
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/EventTest.php b/vendor/symfony/event-dispatcher/Tests/EventTest.php
deleted file mode 100644
index 34ed3ba7..00000000
--- a/vendor/symfony/event-dispatcher/Tests/EventTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-
-/**
- * @group legacy
- */
-class EventTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\EventDispatcher\Event
-     */
-    protected $event;
-
-    /**
-     * Sets up the fixture, for example, opens a network connection.
-     * This method is called before a test is executed.
-     */
-    protected function setUp(): void
-    {
-        $this->event = new Event();
-    }
-
-    /**
-     * Tears down the fixture, for example, closes a network connection.
-     * This method is called after a test is executed.
-     */
-    protected function tearDown(): void
-    {
-        $this->event = null;
-    }
-
-    public function testIsPropagationStopped()
-    {
-        $this->assertFalse($this->event->isPropagationStopped());
-    }
-
-    public function testStopPropagationAndIsPropagationStopped()
-    {
-        $this->event->stopPropagation();
-        $this->assertTrue($this->event->isPropagationStopped());
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php b/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
deleted file mode 100644
index 484e1a5f..00000000
--- a/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\GenericEvent;
-
-/**
- * Test class for Event.
- */
-class GenericEventTest extends TestCase
-{
-    /**
-     * @var GenericEvent
-     */
-    private $event;
-
-    private $subject;
-
-    /**
-     * Prepares the environment before running a test.
-     */
-    protected function setUp(): void
-    {
-        $this->subject = new \stdClass();
-        $this->event = new GenericEvent($this->subject, ['name' => 'Event']);
-    }
-
-    /**
-     * Cleans up the environment after running a test.
-     */
-    protected function tearDown(): void
-    {
-        $this->subject = null;
-        $this->event = null;
-    }
-
-    public function testConstruct()
-    {
-        $this->assertEquals($this->event, new GenericEvent($this->subject, ['name' => 'Event']));
-    }
-
-    /**
-     * Tests Event->getArgs().
-     */
-    public function testGetArguments()
-    {
-        // test getting all
-        $this->assertSame(['name' => 'Event'], $this->event->getArguments());
-    }
-
-    public function testSetArguments()
-    {
-        $result = $this->event->setArguments(['foo' => 'bar']);
-        $this->assertSame(['foo' => 'bar'], $this->event->getArguments());
-        $this->assertSame($this->event, $result);
-    }
-
-    public function testSetArgument()
-    {
-        $result = $this->event->setArgument('foo2', 'bar2');
-        $this->assertSame(['name' => 'Event', 'foo2' => 'bar2'], $this->event->getArguments());
-        $this->assertEquals($this->event, $result);
-    }
-
-    public function testGetArgument()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event->getArgument('name'));
-    }
-
-    public function testGetArgException()
-    {
-        $this->expectException('\InvalidArgumentException');
-        $this->event->getArgument('nameNotExist');
-    }
-
-    public function testOffsetGet()
-    {
-        // test getting key
-        $this->assertEquals('Event', $this->event['name']);
-
-        // test getting invalid arg
-        $this->expectException('InvalidArgumentException');
-        $this->assertFalse($this->event['nameNotExist']);
-    }
-
-    public function testOffsetSet()
-    {
-        $this->event['foo2'] = 'bar2';
-        $this->assertSame(['name' => 'Event', 'foo2' => 'bar2'], $this->event->getArguments());
-    }
-
-    public function testOffsetUnset()
-    {
-        unset($this->event['name']);
-        $this->assertSame([], $this->event->getArguments());
-    }
-
-    public function testOffsetIsset()
-    {
-        $this->assertArrayHasKey('name', $this->event);
-        $this->assertArrayNotHasKey('nameNotExist', $this->event);
-    }
-
-    public function testHasArgument()
-    {
-        $this->assertTrue($this->event->hasArgument('name'));
-        $this->assertFalse($this->event->hasArgument('nameNotExist'));
-    }
-
-    public function testGetSubject()
-    {
-        $this->assertSame($this->subject, $this->event->getSubject());
-    }
-
-    public function testHasIterator()
-    {
-        $data = [];
-        foreach ($this->event as $key => $value) {
-            $data[$key] = $value;
-        }
-        $this->assertEquals(['name' => 'Event'], $data);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
deleted file mode 100644
index edce6f19..00000000
--- a/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\ImmutableEventDispatcher;
-
-/**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
-class ImmutableEventDispatcherTest extends TestCase
-{
-    /**
-     * @var MockObject
-     */
-    private $innerDispatcher;
-
-    /**
-     * @var ImmutableEventDispatcher
-     */
-    private $dispatcher;
-
-    protected function setUp(): void
-    {
-        $this->innerDispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock();
-        $this->dispatcher = new ImmutableEventDispatcher($this->innerDispatcher);
-    }
-
-    public function testDispatchDelegates()
-    {
-        $event = new Event();
-        $resultEvent = new Event();
-
-        $this->innerDispatcher->expects($this->once())
-            ->method('dispatch')
-            ->with($event, 'event')
-            ->willReturn($resultEvent);
-
-        $this->assertSame($resultEvent, $this->dispatcher->dispatch('event', $event));
-    }
-
-    public function testGetListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('getListeners')
-            ->with('event')
-            ->willReturn(['result']);
-
-        $this->assertSame(['result'], $this->dispatcher->getListeners('event'));
-    }
-
-    public function testHasListenersDelegates()
-    {
-        $this->innerDispatcher->expects($this->once())
-            ->method('hasListeners')
-            ->with('event')
-            ->willReturn(true);
-
-        $this->assertTrue($this->dispatcher->hasListeners('event'));
-    }
-
-    public function testAddListenerDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $this->dispatcher->addListener('event', function () { return 'foo'; });
-    }
-
-    public function testAddSubscriberDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $subscriber = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventSubscriberInterface')->getMock();
-
-        $this->dispatcher->addSubscriber($subscriber);
-    }
-
-    public function testRemoveListenerDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $this->dispatcher->removeListener('event', function () { return 'foo'; });
-    }
-
-    public function testRemoveSubscriberDisallowed()
-    {
-        $this->expectException('\BadMethodCallException');
-        $subscriber = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventSubscriberInterface')->getMock();
-
-        $this->dispatcher->removeSubscriber($subscriber);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php
deleted file mode 100644
index 30bd0c33..00000000
--- a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher\Tests;
-
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy;
-use Symfony\Contracts\EventDispatcher\Event as ContractsEvent;
-
-/**
- * @group legacy
- */
-class LegacyEventDispatcherTest extends EventDispatcherTest
-{
-    /**
-     * @group legacy
-     * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.
-     * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithoutEvent()
-    {
-        $this->createEventDispatcher()->dispatch('foo');
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3.
-     * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.
-     */
-    public function testLegacySignatureWithEvent()
-    {
-        $this->createEventDispatcher()->dispatch('foo', new Event());
-    }
-
-    public function testLegacySignatureWithNewEventObject()
-    {
-        $this->expectException('TypeError');
-        $this->expectExceptionMessage('Argument 1 passed to "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given.');
-        $this->createEventDispatcher()->dispatch('foo', new ContractsEvent());
-    }
-
-    protected function createEventDispatcher()
-    {
-        return LegacyEventDispatcherProxy::decorate(new TestLegacyEventDispatcher());
-    }
-}
-
-class TestLegacyEventDispatcher extends EventDispatcher
-{
-    public function dispatch($eventName, Event $event = null)
-    {
-        return parent::dispatch($event, $eventName);
-    }
-}
diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json
index 8449c478..5bb0f7d4 100644
--- a/vendor/symfony/event-dispatcher/composer.json
+++ b/vendor/symfony/event-dispatcher/composer.json
@@ -16,16 +16,17 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
+        "php": ">=7.1.3",
         "symfony/event-dispatcher-contracts": "^1.1"
     },
     "require-dev": {
-        "symfony/dependency-injection": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/config": "~3.4|~4.0",
-        "symfony/http-foundation": "^3.4|^4.0",
-        "symfony/service-contracts": "^1.1",
-        "symfony/stopwatch": "~3.4|~4.0",
+        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/config": "^3.4|^4.0|^5.0",
+        "symfony/error-handler": "~3.4|~4.4",
+        "symfony/http-foundation": "^3.4|^4.0|^5.0",
+        "symfony/service-contracts": "^1.1|^2",
+        "symfony/stopwatch": "^3.4|^4.0|^5.0",
         "psr/log": "~1.0"
     },
     "conflict": {
@@ -45,10 +46,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/event-dispatcher/phpunit.xml.dist b/vendor/symfony/event-dispatcher/phpunit.xml.dist
deleted file mode 100644
index f2eb1692..00000000
--- a/vendor/symfony/event-dispatcher/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony EventDispatcher Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-foundation/.gitignore b/vendor/symfony/http-foundation/.gitignore
deleted file mode 100644
index c49a5d8d..00000000
--- a/vendor/symfony/http-foundation/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/http-foundation/AcceptHeader.php b/vendor/symfony/http-foundation/AcceptHeader.php
index 3f5fbb8f..c3c8d0c3 100644
--- a/vendor/symfony/http-foundation/AcceptHeader.php
+++ b/vendor/symfony/http-foundation/AcceptHeader.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AcceptHeaderItem::class);
+
 /**
  * Represents an Accept-* header.
  *
@@ -153,7 +156,7 @@ class AcceptHeader
     /**
      * Sorts items by descending quality.
      */
-    private function sort()
+    private function sort(): void
     {
         if (!$this->sorted) {
             uasort($this->items, function (AcceptHeaderItem $a, AcceptHeaderItem $b) {
diff --git a/vendor/symfony/http-foundation/ApacheRequest.php b/vendor/symfony/http-foundation/ApacheRequest.php
index 4e99186d..5d942687 100644
--- a/vendor/symfony/http-foundation/ApacheRequest.php
+++ b/vendor/symfony/http-foundation/ApacheRequest.php
@@ -11,9 +11,13 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ApacheRequest::class, Request::class), \E_USER_DEPRECATED);
+
 /**
  * Request represents an HTTP request from an Apache server.
  *
+ * @deprecated since Symfony 4.4. Use the Request class instead.
+ *
  * @author Fabien Potencier <fabien@symfony.com>
  */
 class ApacheRequest extends Request
diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php
index de3c159b..07ecb1fc 100644
--- a/vendor/symfony/http-foundation/BinaryFileResponse.php
+++ b/vendor/symfony/http-foundation/BinaryFileResponse.php
@@ -204,7 +204,7 @@ class BinaryFileResponse extends Response
 
         if (!$this->headers->has('Accept-Ranges')) {
             // Only accept ranges on safe HTTP methods
-            $this->headers->set('Accept-Ranges', $request->isMethodSafe(false) ? 'bytes' : 'none');
+            $this->headers->set('Accept-Ranges', $request->isMethodSafe() ? 'bytes' : 'none');
         }
 
         if (self::$trustXSendfileTypeHeader && $request->headers->has('X-Sendfile-Type')) {
@@ -217,7 +217,7 @@ class BinaryFileResponse extends Response
             }
             if ('x-accel-redirect' === strtolower($type)) {
                 // Do X-Accel-Mapping substitutions.
-                // @link http://wiki.nginx.org/X-accel#X-Accel-Redirect
+                // @link https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/#x-accel-redirect
                 $parts = HeaderUtils::split($request->headers->get('X-Accel-Mapping', ''), ',=');
                 foreach ($parts as $part) {
                     list($pathPrefix, $location) = $part;
@@ -234,33 +234,36 @@ class BinaryFileResponse extends Response
                 $this->headers->set($type, $path);
                 $this->maxlen = 0;
             }
-        } elseif ($request->headers->has('Range')) {
+        } elseif ($request->headers->has('Range') && $request->isMethod('GET')) {
             // Process the range headers.
             if (!$request->headers->has('If-Range') || $this->hasValidIfRangeHeader($request->headers->get('If-Range'))) {
                 $range = $request->headers->get('Range');
 
-                list($start, $end) = explode('-', substr($range, 6), 2) + [0];
+                if (0 === strpos($range, 'bytes=')) {
+                    list($start, $end) = explode('-', substr($range, 6), 2) + [0];
 
-                $end = ('' === $end) ? $fileSize - 1 : (int) $end;
+                    $end = ('' === $end) ? $fileSize - 1 : (int) $end;
 
-                if ('' === $start) {
-                    $start = $fileSize - $end;
-                    $end = $fileSize - 1;
-                } else {
-                    $start = (int) $start;
-                }
+                    if ('' === $start) {
+                        $start = $fileSize - $end;
+                        $end = $fileSize - 1;
+                    } else {
+                        $start = (int) $start;
+                    }
 
-                if ($start <= $end) {
-                    if ($start < 0 || $end > $fileSize - 1) {
-                        $this->setStatusCode(416);
-                        $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
-                    } elseif (0 !== $start || $end !== $fileSize - 1) {
-                        $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
-                        $this->offset = $start;
-
-                        $this->setStatusCode(206);
-                        $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
-                        $this->headers->set('Content-Length', $end - $start + 1);
+                    if ($start <= $end) {
+                        $end = min($end, $fileSize - 1);
+                        if ($start < 0 || $start > $end) {
+                            $this->setStatusCode(416);
+                            $this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
+                        } elseif ($end - $start < $fileSize - 1) {
+                            $this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
+                            $this->offset = $start;
+
+                            $this->setStatusCode(206);
+                            $this->headers->set('Content-Range', sprintf('bytes %s-%s/%s', $start, $end, $fileSize));
+                            $this->headers->set('Content-Length', $end - $start + 1);
+                        }
                     }
                 }
             }
@@ -269,7 +272,7 @@ class BinaryFileResponse extends Response
         return $this;
     }
 
-    private function hasValidIfRangeHeader($header)
+    private function hasValidIfRangeHeader(?string $header): bool
     {
         if ($this->getEtag() === $header) {
             return true;
@@ -343,7 +346,7 @@ class BinaryFileResponse extends Response
     }
 
     /**
-     * If this is set to true, the file will be unlinked after the request is send
+     * If this is set to true, the file will be unlinked after the request is sent
      * Note: If the X-Sendfile header is used, the deleteFileAfterSend setting will not be used.
      *
      * @param bool $shouldDelete
diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md
index 1ce01aea..3fa73a26 100644
--- a/vendor/symfony/http-foundation/CHANGELOG.md
+++ b/vendor/symfony/http-foundation/CHANGELOG.md
@@ -1,6 +1,21 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * passing arguments to `Request::isMethodSafe()` is deprecated.
+ * `ApacheRequest` is deprecated, use the `Request` class instead.
+ * passing a third argument to `HeaderBag::get()` is deprecated, use method `all()` instead
+ * [BC BREAK] `PdoSessionHandler` with MySQL changed the type of the lifetime column,
+   make sure to run `ALTER TABLE sessions MODIFY sess_lifetime INTEGER UNSIGNED NOT NULL` to
+   update your database.
+ * `PdoSessionHandler` now precalculates the expiry timestamp in the lifetime column,
+    make sure to run `CREATE INDEX EXPIRY ON sessions (sess_lifetime)` to update your database
+    to speed up garbage collection of expired sessions.
+ * added `SessionHandlerFactory` to create session handlers with a DSN
+ * added `IpUtils::anonymize()` to help with GDPR compliance.
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/http-foundation/Cookie.php b/vendor/symfony/http-foundation/Cookie.php
index 1e22c745..70eb5ea8 100644
--- a/vendor/symfony/http-foundation/Cookie.php
+++ b/vendor/symfony/http-foundation/Cookie.php
@@ -94,7 +94,7 @@ class Cookie
     public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/', string $domain = null, ?bool $secure = false, bool $httpOnly = true, bool $raw = false, string $sameSite = null)
     {
         if (9 > \func_num_args()) {
-            @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The default value of the "$secure" and "$samesite" arguments of "%s"\'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         // from PHP source code
diff --git a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
index c25c3629..136d2a9f 100644
--- a/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
+++ b/vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php
@@ -18,9 +18,6 @@ namespace Symfony\Component\HttpFoundation\File\Exception;
  */
 class AccessDeniedException extends FileException
 {
-    /**
-     * @param string $path The path to the accessed file
-     */
     public function __construct(string $path)
     {
         parent::__construct(sprintf('The file %s could not be accessed', $path));
diff --git a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
index 0f1f3f95..31bdf68f 100644
--- a/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
+++ b/vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php
@@ -18,9 +18,6 @@ namespace Symfony\Component\HttpFoundation\File\Exception;
  */
 class FileNotFoundException extends FileException
 {
-    /**
-     * @param string $path The path to the file that was not found
-     */
     public function __construct(string $path)
     {
         parent::__construct(sprintf('The file "%s" does not exist', $path));
diff --git a/vendor/symfony/http-foundation/File/File.php b/vendor/symfony/http-foundation/File/File.php
index 396ff345..c72a6d99 100644
--- a/vendor/symfony/http-foundation/File/File.php
+++ b/vendor/symfony/http-foundation/File/File.php
@@ -91,7 +91,7 @@ class File extends \SplFileInfo
         $renamed = rename($this->getPathname(), $target);
         restore_error_handler();
         if (!$renamed) {
-            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error)));
+            throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
         }
 
         @chmod($target, 0666 & ~umask());
@@ -99,14 +99,17 @@ class File extends \SplFileInfo
         return $target;
     }
 
+    /**
+     * @return self
+     */
     protected function getTargetFile($directory, $name = null)
     {
         if (!is_dir($directory)) {
             if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
-                throw new FileException(sprintf('Unable to create the "%s" directory', $directory));
+                throw new FileException(sprintf('Unable to create the "%s" directory.', $directory));
             }
         } elseif (!is_writable($directory)) {
-            throw new FileException(sprintf('Unable to write in the "%s" directory', $directory));
+            throw new FileException(sprintf('Unable to write in the "%s" directory.', $directory));
         }
 
         $target = rtrim($directory, '/\\').\DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
@@ -119,7 +122,7 @@ class File extends \SplFileInfo
      *
      * @param string $name The new file name
      *
-     * @return string containing
+     * @return string
      */
     protected function getName($name)
     {
diff --git a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
index 4ac20133..f35bb37b 100644
--- a/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/ExtensionGuesser.php
@@ -13,7 +13,7 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
 
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * A singleton mime type to file extension guesser.
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
index 9633f017..6d2c274a 100644
--- a/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\FileBinaryMimeTypeGuesser as NewFileBinaryMimeTypeGuesser;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), \E_USER_DEPRECATED);
 
 /**
  * Guesses the mime type with the binary "file" (only available on *nix).
@@ -36,7 +36,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
      *
      * @param string $cmd The command to run to get the mime type of a file
      */
-    public function __construct(string $cmd = 'file -b --mime %s 2>/dev/null')
+    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
     {
         $this->cmd = $cmd;
     }
@@ -85,7 +85,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
         ob_start();
 
         // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
+        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
         if ($return > 0) {
             ob_end_clean();
 
@@ -94,7 +94,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 
         $type = trim(ob_get_clean());
 
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
+        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
             // it's not a type, but an error message
             return null;
         }
diff --git a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
index 70a01d7a..658ad607 100644
--- a/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/FileinfoMimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\FileinfoMimeTypeGuesser as NewFileinfoMimeTypeGuesser;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), \E_USER_DEPRECATED);
 
 /**
  * Guesses the mime type using the PECL extension FileInfo.
@@ -65,10 +65,16 @@ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
             return null;
         }
 
-        if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
+        if (!$finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
             return null;
         }
+        $mimeType = $finfo->file($path);
 
-        return $finfo->file($path);
+        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
+            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
+            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
+        }
+
+        return $mimeType;
     }
 }
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
index 651be070..2380919b 100644
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/MimeTypeExtensionGuesser.php
@@ -13,7 +13,7 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
 
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * Provides a best-guess mapping of mime type to file extension.
@@ -625,7 +625,7 @@ class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
         'audio/basic' => 'au',
         'audio/midi' => 'mid',
         'audio/mp4' => 'm4a',
-        'audio/mpeg' => 'mpga',
+        'audio/mpeg' => 'mp3',
         'audio/ogg' => 'oga',
         'audio/s3m' => 's3m',
         'audio/silk' => 'sil',
diff --git a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
index ece2109c..bdac4314 100644
--- a/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
+++ b/vendor/symfony/http-foundation/File/MimeType/MimeTypeGuesser.php
@@ -15,7 +15,7 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
 use Symfony\Component\Mime\MimeTypes;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), \E_USER_DEPRECATED);
 
 /**
  * A singleton mime type guesser.
@@ -130,7 +130,7 @@ class MimeTypeGuesser implements MimeTypeGuesserInterface
         }
 
         if (2 === \count($this->guessers) && !FileBinaryMimeTypeGuesser::isSupported() && !FileinfoMimeTypeGuesser::isSupported()) {
-            throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)');
+            throw new \LogicException('Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?).');
         }
 
         return null;
diff --git a/vendor/symfony/http-foundation/File/UploadedFile.php b/vendor/symfony/http-foundation/File/UploadedFile.php
index 2367098a..e0b068a5 100644
--- a/vendor/symfony/http-foundation/File/UploadedFile.php
+++ b/vendor/symfony/http-foundation/File/UploadedFile.php
@@ -31,7 +31,7 @@ use Symfony\Component\Mime\MimeTypes;
  */
 class UploadedFile extends File
 {
-    private $test = false;
+    private $test;
     private $originalName;
     private $mimeType;
     private $error;
@@ -66,15 +66,15 @@ class UploadedFile extends File
         $this->mimeType = $mimeType ?: 'application/octet-stream';
 
         if (4 < \func_num_args() ? !\is_bool($test) : null !== $error && @filesize($path) === $error) {
-            @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a size as 4th argument to the constructor of "%s" is deprecated since Symfony 4.1.', __CLASS__), \E_USER_DEPRECATED);
             $error = $test;
             $test = 5 < \func_num_args() ? func_get_arg(5) : false;
         }
 
-        $this->error = $error ?: UPLOAD_ERR_OK;
+        $this->error = $error ?: \UPLOAD_ERR_OK;
         $this->test = $test;
 
-        parent::__construct($path, UPLOAD_ERR_OK === $this->error);
+        parent::__construct($path, \UPLOAD_ERR_OK === $this->error);
     }
 
     /**
@@ -83,7 +83,7 @@ class UploadedFile extends File
      * It is extracted from the request from which the file has been uploaded.
      * Then it should not be considered as a safe value.
      *
-     * @return string|null The original name
+     * @return string The original name
      */
     public function getClientOriginalName()
     {
@@ -100,7 +100,7 @@ class UploadedFile extends File
      */
     public function getClientOriginalExtension()
     {
-        return pathinfo($this->originalName, PATHINFO_EXTENSION);
+        return pathinfo($this->originalName, \PATHINFO_EXTENSION);
     }
 
     /**
@@ -112,7 +112,7 @@ class UploadedFile extends File
      * For a trusted mime type, use getMimeType() instead (which guesses the mime
      * type based on the file content).
      *
-     * @return string|null The mime type
+     * @return string The mime type
      *
      * @see getMimeType()
      */
@@ -155,7 +155,7 @@ class UploadedFile extends File
      */
     public function getClientSize()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.1. Use getSize() instead.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->getSize();
     }
@@ -180,7 +180,7 @@ class UploadedFile extends File
      */
     public function isValid()
     {
-        $isOk = UPLOAD_ERR_OK === $this->error;
+        $isOk = \UPLOAD_ERR_OK === $this->error;
 
         return $this->test ? $isOk : $isOk && is_uploaded_file($this->getPathname());
     }
@@ -208,7 +208,7 @@ class UploadedFile extends File
             $moved = move_uploaded_file($this->getPathname(), $target);
             restore_error_handler();
             if (!$moved) {
-                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error)));
+                throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s).', $this->getPathname(), $target, strip_tags($error)));
             }
 
             @chmod($target, 0666 & ~umask());
@@ -217,19 +217,19 @@ class UploadedFile extends File
         }
 
         switch ($this->error) {
-            case UPLOAD_ERR_INI_SIZE:
+            case \UPLOAD_ERR_INI_SIZE:
                 throw new IniSizeFileException($this->getErrorMessage());
-            case UPLOAD_ERR_FORM_SIZE:
+            case \UPLOAD_ERR_FORM_SIZE:
                 throw new FormSizeFileException($this->getErrorMessage());
-            case UPLOAD_ERR_PARTIAL:
+            case \UPLOAD_ERR_PARTIAL:
                 throw new PartialFileException($this->getErrorMessage());
-            case UPLOAD_ERR_NO_FILE:
+            case \UPLOAD_ERR_NO_FILE:
                 throw new NoFileException($this->getErrorMessage());
-            case UPLOAD_ERR_CANT_WRITE:
+            case \UPLOAD_ERR_CANT_WRITE:
                 throw new CannotWriteFileException($this->getErrorMessage());
-            case UPLOAD_ERR_NO_TMP_DIR:
+            case \UPLOAD_ERR_NO_TMP_DIR:
                 throw new NoTmpDirFileException($this->getErrorMessage());
-            case UPLOAD_ERR_EXTENSION:
+            case \UPLOAD_ERR_EXTENSION:
                 throw new ExtensionFileException($this->getErrorMessage());
         }
 
@@ -246,15 +246,13 @@ class UploadedFile extends File
         $sizePostMax = self::parseFilesize(ini_get('post_max_size'));
         $sizeUploadMax = self::parseFilesize(ini_get('upload_max_filesize'));
 
-        return min($sizePostMax ?: PHP_INT_MAX, $sizeUploadMax ?: PHP_INT_MAX);
+        return min($sizePostMax ?: \PHP_INT_MAX, $sizeUploadMax ?: \PHP_INT_MAX);
     }
 
     /**
      * Returns the given size from an ini value in bytes.
-     *
-     * @return int The given size in bytes
      */
-    private static function parseFilesize($size)
+    private static function parseFilesize($size): int
     {
         if ('' === $size) {
             return 0;
@@ -292,17 +290,17 @@ class UploadedFile extends File
     public function getErrorMessage()
     {
         static $errors = [
-            UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
-            UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
-            UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
-            UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
-            UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
-            UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
-            UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
+            \UPLOAD_ERR_INI_SIZE => 'The file "%s" exceeds your upload_max_filesize ini directive (limit is %d KiB).',
+            \UPLOAD_ERR_FORM_SIZE => 'The file "%s" exceeds the upload limit defined in your form.',
+            \UPLOAD_ERR_PARTIAL => 'The file "%s" was only partially uploaded.',
+            \UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
+            \UPLOAD_ERR_CANT_WRITE => 'The file "%s" could not be written on disk.',
+            \UPLOAD_ERR_NO_TMP_DIR => 'File could not be uploaded: missing temporary directory.',
+            \UPLOAD_ERR_EXTENSION => 'File upload was stopped by a PHP extension.',
         ];
 
         $errorCode = $this->error;
-        $maxFilesize = UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0;
+        $maxFilesize = \UPLOAD_ERR_INI_SIZE === $errorCode ? self::getMaxFilesize() / 1024 : 0;
         $message = isset($errors[$errorCode]) ? $errors[$errorCode] : 'The file "%s" was not uploaded due to an unknown error.';
 
         return sprintf($message, $this->getClientOriginalName(), $maxFilesize);
diff --git a/vendor/symfony/http-foundation/FileBag.php b/vendor/symfony/http-foundation/FileBag.php
index f3248a59..46744434 100644
--- a/vendor/symfony/http-foundation/FileBag.php
+++ b/vendor/symfony/http-foundation/FileBag.php
@@ -24,7 +24,7 @@ class FileBag extends ParameterBag
     private static $fileKeys = ['error', 'name', 'size', 'tmp_name', 'type'];
 
     /**
-     * @param array $parameters An array of HTTP files
+     * @param array|UploadedFile[] $parameters An array of HTTP files
      */
     public function __construct(array $parameters = [])
     {
@@ -81,7 +81,7 @@ class FileBag extends ParameterBag
             sort($keys);
 
             if ($keys == self::$fileKeys) {
-                if (UPLOAD_ERR_NO_FILE == $file['error']) {
+                if (\UPLOAD_ERR_NO_FILE == $file['error']) {
                     $file = null;
                 } else {
                     $file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error'], false);
diff --git a/vendor/symfony/http-foundation/HeaderBag.php b/vendor/symfony/http-foundation/HeaderBag.php
index 7782f742..a74dce88 100644
--- a/vendor/symfony/http-foundation/HeaderBag.php
+++ b/vendor/symfony/http-foundation/HeaderBag.php
@@ -18,12 +18,12 @@ namespace Symfony\Component\HttpFoundation;
  */
 class HeaderBag implements \IteratorAggregate, \Countable
 {
+    protected const UPPER = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+    protected const LOWER = '-abcdefghijklmnopqrstuvwxyz';
+
     protected $headers = [];
     protected $cacheControl = [];
 
-    /**
-     * @param array $headers An array of HTTP headers
-     */
     public function __construct(array $headers = [])
     {
         foreach ($headers as $key => $values) {
@@ -58,10 +58,16 @@ class HeaderBag implements \IteratorAggregate, \Countable
     /**
      * Returns the headers.
      *
+     * @param string|null $key The name of the headers to return or null to get them all
+     *
      * @return array An array of headers
      */
-    public function all()
+    public function all(/*string $key = null*/)
     {
+        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
+            return $this->headers[strtr($key, self::UPPER, self::LOWER)] ?? [];
+        }
+
         return $this->headers;
     }
 
@@ -77,8 +83,6 @@ class HeaderBag implements \IteratorAggregate, \Countable
 
     /**
      * Replaces the current HTTP headers by a new set.
-     *
-     * @param array $headers An array of HTTP headers
      */
     public function replace(array $headers = [])
     {
@@ -88,8 +92,6 @@ class HeaderBag implements \IteratorAggregate, \Countable
 
     /**
      * Adds new headers the current HTTP headers set.
-     *
-     * @param array $headers An array of HTTP headers
      */
     public function add(array $headers)
     {
@@ -103,36 +105,29 @@ class HeaderBag implements \IteratorAggregate, \Countable
      *
      * @param string      $key     The header name
      * @param string|null $default The default value
-     * @param bool        $first   Whether to return the first value or all header values
      *
-     * @return string|string[]|null The first header value or default value if $first is true, an array of values otherwise
+     * @return string|null The first header value or default value
      */
-    public function get($key, $default = null, $first = true)
+    public function get($key, $default = null)
     {
-        $key = str_replace('_', '-', strtolower($key));
-        $headers = $this->all();
+        $headers = $this->all((string) $key);
+        if (2 < \func_num_args()) {
+            @trigger_error(sprintf('Passing a third argument to "%s()" is deprecated since Symfony 4.4, use method "all()" instead', __METHOD__), \E_USER_DEPRECATED);
 
-        if (!\array_key_exists($key, $headers)) {
-            if (null === $default) {
-                return $first ? null : [];
+            if (!func_get_arg(2)) {
+                return $headers;
             }
-
-            return $first ? $default : [$default];
         }
 
-        if ($first) {
-            if (!$headers[$key]) {
-                return $default;
-            }
-
-            if (null === $headers[$key][0]) {
-                return null;
-            }
+        if (!$headers) {
+            return $default;
+        }
 
-            return (string) $headers[$key][0];
+        if (null === $headers[0]) {
+            return null;
         }
 
-        return $headers[$key];
+        return (string) $headers[0];
     }
 
     /**
@@ -144,7 +139,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function set($key, $values, $replace = true)
     {
-        $key = str_replace('_', '-', strtolower($key));
+        $key = strtr($key, self::UPPER, self::LOWER);
 
         if (\is_array($values)) {
             $values = array_values($values);
@@ -176,7 +171,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function has($key)
     {
-        return \array_key_exists(str_replace('_', '-', strtolower($key)), $this->all());
+        return \array_key_exists(strtr($key, self::UPPER, self::LOWER), $this->all());
     }
 
     /**
@@ -189,7 +184,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function contains($key, $value)
     {
-        return \in_array($value, $this->get($key, null, false));
+        return \in_array($value, $this->all((string) $key));
     }
 
     /**
@@ -199,7 +194,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
      */
     public function remove($key)
     {
-        $key = str_replace('_', '-', strtolower($key));
+        $key = strtr($key, self::UPPER, self::LOWER);
 
         unset($this->headers[$key]);
 
@@ -211,10 +206,9 @@ class HeaderBag implements \IteratorAggregate, \Countable
     /**
      * Returns the HTTP header value converted to a date.
      *
-     * @param string    $key     The parameter key
-     * @param \DateTime $default The default value
+     * @param string $key The parameter key
      *
-     * @return \DateTime|null The parsed DateTime or the default value if the header does not exist
+     * @return \DateTimeInterface|null The parsed DateTime or the default value if the header does not exist
      *
      * @throws \RuntimeException When the HTTP header is not parseable
      */
@@ -224,8 +218,8 @@ class HeaderBag implements \IteratorAggregate, \Countable
             return $default;
         }
 
-        if (false === $date = \DateTime::createFromFormat(DATE_RFC2822, $value)) {
-            throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value));
+        if (false === $date = \DateTime::createFromFormat(\DATE_RFC2822, $value)) {
+            throw new \RuntimeException(sprintf('The "%s" HTTP header is not parseable (%s).', $key, $value));
         }
 
         return $date;
diff --git a/vendor/symfony/http-foundation/HeaderUtils.php b/vendor/symfony/http-foundation/HeaderUtils.php
index 5866e3b2..f4add930 100644
--- a/vendor/symfony/http-foundation/HeaderUtils.php
+++ b/vendor/symfony/http-foundation/HeaderUtils.php
@@ -62,7 +62,7 @@ class HeaderUtils
                 \s*
                 (?<separator>['.$quotedSeparators.'])
                 \s*
-            /x', trim($header), $matches, PREG_SET_ORDER);
+            /x', trim($header), $matches, \PREG_SET_ORDER);
 
         return self::groupParts($matches, $separators);
     }
diff --git a/vendor/symfony/http-foundation/IpUtils.php b/vendor/symfony/http-foundation/IpUtils.php
index 67d13e57..a61d3e53 100644
--- a/vendor/symfony/http-foundation/IpUtils.php
+++ b/vendor/symfony/http-foundation/IpUtils.php
@@ -68,7 +68,7 @@ class IpUtils
             return self::$checkedIps[$cacheKey];
         }
 
-        if (!filter_var($requestIp, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
+        if (!filter_var($requestIp, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) {
             return self::$checkedIps[$cacheKey] = false;
         }
 
@@ -76,7 +76,7 @@ class IpUtils
             list($address, $netmask) = explode('/', $ip, 2);
 
             if ('0' === $netmask) {
-                return self::$checkedIps[$cacheKey] = filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
+                return self::$checkedIps[$cacheKey] = filter_var($address, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4);
             }
 
             if ($netmask < 0 || $netmask > 32) {
@@ -153,4 +153,36 @@ class IpUtils
 
         return self::$checkedIps[$cacheKey] = true;
     }
+
+    /**
+     * Anonymizes an IP/IPv6.
+     *
+     * Removes the last byte for v4 and the last 8 bytes for v6 IPs
+     */
+    public static function anonymize(string $ip): string
+    {
+        $wrappedIPv6 = false;
+        if ('[' === substr($ip, 0, 1) && ']' === substr($ip, -1, 1)) {
+            $wrappedIPv6 = true;
+            $ip = substr($ip, 1, -1);
+        }
+
+        $packedAddress = inet_pton($ip);
+        if (4 === \strlen($packedAddress)) {
+            $mask = '255.255.255.0';
+        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff:ffff'))) {
+            $mask = '::ffff:ffff:ff00';
+        } elseif ($ip === inet_ntop($packedAddress & inet_pton('::ffff:ffff'))) {
+            $mask = '::ffff:ff00';
+        } else {
+            $mask = 'ffff:ffff:ffff:ffff:0000:0000:0000:0000';
+        }
+        $ip = inet_ntop($packedAddress & inet_pton($mask));
+
+        if ($wrappedIPv6) {
+            $ip = '['.$ip.']';
+        }
+
+        return $ip;
+    }
 }
diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php
index 11a0bebf..f6b247bf 100644
--- a/vendor/symfony/http-foundation/JsonResponse.php
+++ b/vendor/symfony/http-foundation/JsonResponse.php
@@ -159,11 +159,11 @@ class JsonResponse extends Response
             throw $e;
         }
 
-        if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $this->encodingOptions)) {
+        if (\PHP_VERSION_ID >= 70300 && (\JSON_THROW_ON_ERROR & $this->encodingOptions)) {
             return $this->setJson($data);
         }
 
-        if (JSON_ERROR_NONE !== json_last_error()) {
+        if (\JSON_ERROR_NONE !== json_last_error()) {
             throw new \InvalidArgumentException(json_last_error_msg());
         }
 
diff --git a/vendor/symfony/http-foundation/LICENSE b/vendor/symfony/http-foundation/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/http-foundation/LICENSE
+++ b/vendor/symfony/http-foundation/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php
index 194ba2c6..1de753d3 100644
--- a/vendor/symfony/http-foundation/ParameterBag.php
+++ b/vendor/symfony/http-foundation/ParameterBag.php
@@ -23,9 +23,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
      */
     protected $parameters;
 
-    /**
-     * @param array $parameters An array of parameters
-     */
     public function __construct(array $parameters = [])
     {
         $this->parameters = $parameters;
@@ -53,8 +50,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
     /**
      * Replaces the current parameters by a new set.
-     *
-     * @param array $parameters An array of parameters
      */
     public function replace(array $parameters = [])
     {
@@ -63,8 +58,6 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
     /**
      * Adds parameters.
-     *
-     * @param array $parameters An array of parameters
      */
     public function add(array $parameters = [])
     {
@@ -154,7 +147,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
     public function getDigits($key, $default = '')
     {
         // we need to remove - and + because they're allowed in the filter
-        return str_replace(['-', '+'], '', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT));
+        return str_replace(['-', '+'], '', $this->filter($key, $default, \FILTER_SANITIZE_NUMBER_INT));
     }
 
     /**
@@ -180,7 +173,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
      */
     public function getBoolean($key, $default = false)
     {
-        return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN);
+        return $this->filter($key, $default, \FILTER_VALIDATE_BOOLEAN);
     }
 
     /**
@@ -195,7 +188,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
      *
      * @return mixed
      */
-    public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = [])
+    public function filter($key, $default = null, $filter = \FILTER_DEFAULT, $options = [])
     {
         $value = $this->get($key, $default);
 
@@ -206,7 +199,7 @@ class ParameterBag implements \IteratorAggregate, \Countable
 
         // Add a convenience check for arrays.
         if (\is_array($value) && !isset($options['flags'])) {
-            $options['flags'] = FILTER_REQUIRE_ARRAY;
+            $options['flags'] = \FILTER_REQUIRE_ARRAY;
         }
 
         return filter_var($value, $filter, $options);
diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md
index 8907f0b9..ac98f9b8 100644
--- a/vendor/symfony/http-foundation/README.md
+++ b/vendor/symfony/http-foundation/README.md
@@ -7,7 +7,7 @@ specification.
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/http_foundation/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/http_foundation.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/http-foundation/RedirectResponse.php b/vendor/symfony/http-foundation/RedirectResponse.php
index 3abdf3eb..6348aca5 100644
--- a/vendor/symfony/http-foundation/RedirectResponse.php
+++ b/vendor/symfony/http-foundation/RedirectResponse.php
@@ -34,6 +34,11 @@ class RedirectResponse extends Response
      */
     public function __construct(?string $url, int $status = 302, array $headers = [])
     {
+        if (null === $url) {
+            @trigger_error(sprintf('Passing a null url when instantiating a "%s" is deprecated since Symfony 4.4.', __CLASS__), \E_USER_DEPRECATED);
+            $url = '';
+        }
+
         parent::__construct('', $status, $headers);
 
         $this->setTargetUrl($url);
@@ -82,7 +87,7 @@ class RedirectResponse extends Response
      */
     public function setTargetUrl($url)
     {
-        if (empty($url)) {
+        if ('' === ($url ?? '')) {
             throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
         }
 
@@ -93,14 +98,14 @@ class RedirectResponse extends Response
 <html>
     <head>
         <meta charset="UTF-8" />
-        <meta http-equiv="refresh" content="0;url=%1$s" />
+        <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
 
         <title>Redirecting to %1$s</title>
     </head>
     <body>
         Redirecting to <a href="%1$s">%1$s</a>.
     </body>
-</html>', htmlspecialchars($url, ENT_QUOTES, 'UTF-8')));
+</html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
 
         $this->headers->set('Location', $url);
 
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
index 9af2c282..faaa65f9 100644
--- a/vendor/symfony/http-foundation/Request.php
+++ b/vendor/symfony/http-foundation/Request.php
@@ -15,6 +15,14 @@ use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
 use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
 use Symfony\Component\HttpFoundation\Session\SessionInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AcceptHeader::class);
+class_exists(FileBag::class);
+class_exists(HeaderBag::class);
+class_exists(HeaderUtils::class);
+class_exists(ParameterBag::class);
+class_exists(ServerBag::class);
+
 /**
  * Request represents an HTTP request.
  *
@@ -192,6 +200,10 @@ class Request
 
     protected static $requestFactory;
 
+    /**
+     * @var string|null
+     */
+    private $preferredFormat;
     private $isHostValid = true;
     private $isForwardedValid = true;
 
@@ -499,7 +511,7 @@ class Request
                 throw $e;
             }
 
-            return trigger_error($e, E_USER_ERROR);
+            return trigger_error($e, \E_USER_ERROR);
         }
 
         $cookieHeader = '';
@@ -537,7 +549,7 @@ class Request
 
         foreach ($this->headers->all() as $key => $value) {
             $key = strtoupper(str_replace('-', '_', $key));
-            if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH'])) {
+            if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
                 $_SERVER[$key] = implode(', ', $value);
             } else {
                 $_SERVER['HTTP_'.$key] = implode(', ', $value);
@@ -563,14 +575,22 @@ class Request
      *
      * You should only list the reverse proxies that you manage directly.
      *
-     * @param array $proxies          A list of trusted proxies
+     * @param array $proxies          A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
      * @param int   $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
      *
      * @throws \InvalidArgumentException When $trustedHeaderSet is invalid
      */
     public static function setTrustedProxies(array $proxies, int $trustedHeaderSet)
     {
-        self::$trustedProxies = $proxies;
+        self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) {
+            if ('REMOTE_ADDR' !== $proxy) {
+                $proxies[] = $proxy;
+            } elseif (isset($_SERVER['REMOTE_ADDR'])) {
+                $proxies[] = $_SERVER['REMOTE_ADDR'];
+            }
+
+            return $proxies;
+        }, []);
         self::$trustedHeaderSet = $trustedHeaderSet;
     }
 
@@ -632,14 +652,14 @@ class Request
      */
     public static function normalizeQueryString($qs)
     {
-        if ('' == $qs) {
+        if ('' === ($qs ?? '')) {
             return '';
         }
 
         parse_str($qs, $qs);
         ksort($qs);
 
-        return http_build_query($qs, '', '&', PHP_QUERY_RFC3986);
+        return http_build_query($qs, '', '&', \PHP_QUERY_RFC3986);
     }
 
     /**
@@ -702,7 +722,7 @@ class Request
     /**
      * Gets the Session.
      *
-     * @return SessionInterface|null The session
+     * @return SessionInterface The session
      */
     public function getSession()
     {
@@ -712,8 +732,8 @@ class Request
         }
 
         if (null === $session) {
-            @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), E_USER_DEPRECATED);
-            // throw new \BadMethodCallException('Session has not been set');
+            @trigger_error(sprintf('Calling "%s()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.', __METHOD__), \E_USER_DEPRECATED);
+            // throw new \BadMethodCallException('Session has not been set.');
         }
 
         return $session;
@@ -745,11 +765,6 @@ class Request
         return null !== $this->session;
     }
 
-    /**
-     * Sets the Session.
-     *
-     * @param SessionInterface $session The Session
-     */
     public function setSession(SessionInterface $session)
     {
         $this->session = $session;
@@ -1353,6 +1368,8 @@ class Request
      *  * _format request attribute
      *  * $default
      *
+     * @see getPreferredFormat
+     *
      * @param string|null $default The default format
      *
      * @return string|null The request format
@@ -1447,15 +1464,12 @@ class Request
      *
      * @see https://tools.ietf.org/html/rfc7231#section-4.2.1
      *
-     * @param bool $andCacheable Adds the additional condition that the method should be cacheable. True by default.
-     *
      * @return bool
      */
-    public function isMethodSafe(/* $andCacheable = true */)
+    public function isMethodSafe()
     {
-        if (!\func_num_args() || func_get_arg(0)) {
-            // setting $andCacheable to false should be deprecated in 4.1
-            throw new \BadMethodCallException('Checking only for cacheable HTTP methods with Symfony\Component\HttpFoundation\Request::isMethodSafe() is not supported.');
+        if (\func_num_args() > 0) {
+            @trigger_error(sprintf('Passing arguments to "%s()" has been deprecated since Symfony 4.4; use "%s::isMethodCacheable()" to check if the method is cacheable instead.', __METHOD__, __CLASS__), \E_USER_DEPRECATED);
         }
 
         return \in_array($this->getMethod(), ['GET', 'HEAD', 'OPTIONS', 'TRACE']);
@@ -1561,7 +1575,7 @@ class Request
      */
     public function getETags()
     {
-        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY);
+        return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, \PREG_SPLIT_NO_EMPTY);
     }
 
     /**
@@ -1572,10 +1586,33 @@ class Request
         return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma');
     }
 
+    /**
+     * Gets the preferred format for the response by inspecting, in the following order:
+     *   * the request format set using setRequestFormat
+     *   * the values of the Accept HTTP header.
+     *
+     * Note that if you use this method, you should send the "Vary: Accept" header
+     * in the response to prevent any issues with intermediary HTTP caches.
+     */
+    public function getPreferredFormat(?string $default = 'html'): ?string
+    {
+        if (null !== $this->preferredFormat || null !== $this->preferredFormat = $this->getRequestFormat(null)) {
+            return $this->preferredFormat;
+        }
+
+        foreach ($this->getAcceptableContentTypes() as $mimeType) {
+            if ($this->preferredFormat = $this->getFormat($mimeType)) {
+                return $this->preferredFormat;
+            }
+        }
+
+        return $default;
+    }
+
     /**
      * Returns the preferred language.
      *
-     * @param array $locales An array of ordered available locales
+     * @param string[] $locales An array of ordered available locales
      *
      * @return string|null The preferred locale
      */
@@ -1795,12 +1832,12 @@ class Request
             $requestUri = '/'.$requestUri;
         }
 
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
+        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
             // full $baseUrl matches
             return $prefix;
         }
 
-        if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) {
+        if ($baseUrl && null !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(\dirname($baseUrl), '/'.\DIRECTORY_SEPARATOR).'/')) {
             // directory portion of $baseUrl matches
             return rtrim($prefix, '/'.\DIRECTORY_SEPARATOR);
         }
@@ -1904,7 +1941,7 @@ class Request
         ];
     }
 
-    private function setPhpDefaultLocale(string $locale)
+    private function setPhpDefaultLocale(string $locale): void
     {
         // if either the class Locale doesn't exist, or an exception is thrown when
         // setting the default locale, the intl module is not installed, and
@@ -1919,14 +1956,12 @@ class Request
 
     /**
      * Returns the prefix as encoded in the string when the string starts with
-     * the given prefix, false otherwise.
-     *
-     * @return string|false The prefix as it is encoded in $string, or false
+     * the given prefix, null otherwise.
      */
-    private function getUrlencodedPrefix(string $string, string $prefix)
+    private function getUrlencodedPrefix(string $string, string $prefix): ?string
     {
         if (0 !== strpos(rawurldecode($string), $prefix)) {
-            return false;
+            return null;
         }
 
         $len = \strlen($prefix);
@@ -1935,10 +1970,10 @@ class Request
             return $match[0];
         }
 
-        return false;
+        return null;
     }
 
-    private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
+    private static function createRequestFromFactory(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): self
     {
         if (self::$requestFactory) {
             $request = (self::$requestFactory)($query, $request, $attributes, $cookies, $files, $server, $content);
@@ -1966,7 +2001,7 @@ class Request
         return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies);
     }
 
-    private function getTrustedValues($type, $ip = null)
+    private function getTrustedValues(int $type, string $ip = null): array
     {
         $clientValues = [];
         $forwardedValues = [];
@@ -2017,7 +2052,7 @@ class Request
         throw new ConflictingHeadersException(sprintf('The request has both a trusted "%s" header and a trusted "%s" header, conflicting with each other. You should either configure your proxy to remove one of them, or configure your project to distrust the offending one.', self::$trustedHeaders[self::HEADER_FORWARDED], self::$trustedHeaders[$type]));
     }
 
-    private function normalizeAndFilterClientIps(array $clientIps, $ip)
+    private function normalizeAndFilterClientIps(array $clientIps, string $ip): array
     {
         if (!$clientIps) {
             return [];
@@ -2039,7 +2074,7 @@ class Request
                 $clientIps[$key] = $clientIp = substr($clientIp, 1, $i - 1);
             }
 
-            if (!filter_var($clientIp, FILTER_VALIDATE_IP)) {
+            if (!filter_var($clientIp, \FILTER_VALIDATE_IP)) {
                 unset($clientIps[$key]);
 
                 continue;
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
index 1e616453..e64b2729 100644
--- a/vendor/symfony/http-foundation/Response.php
+++ b/vendor/symfony/http-foundation/Response.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\HttpFoundation;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(ResponseHeaderBag::class);
+
 /**
  * Response represents an HTTP response.
  *
@@ -267,10 +270,12 @@ class Response
             $this->setContent(null);
             $headers->remove('Content-Type');
             $headers->remove('Content-Length');
+            // prevent PHP from sending the Content-Type header based on default_mimetype
+            ini_set('default_mimetype', '');
         } else {
             // Content-type based on the Request
             if (!$headers->has('Content-Type')) {
-                $format = $request->getRequestFormat();
+                $format = $request->getRequestFormat(null);
                 if (null !== $format && $mimeType = $request->getMimeType($format)) {
                     $headers->set('Content-Type', $mimeType);
                 }
@@ -628,7 +633,7 @@ class Response
     }
 
     /**
-     * Returns true if the response must be revalidated by caches.
+     * Returns true if the response must be revalidated by shared caches once it has become stale.
      *
      * This method indicates that the response must not be served stale by a
      * cache in any circumstance without first revalidating with the origin.
@@ -1024,7 +1029,7 @@ class Response
      */
     public function getVary(): array
     {
-        if (!$vary = $this->headers->get('Vary', null, false)) {
+        if (!$vary = $this->headers->all('Vary')) {
             return [];
         }
 
@@ -1208,11 +1213,11 @@ class Response
      *
      * @final
      */
-    public static function closeOutputBuffers(int $targetLevel, bool $flush)
+    public static function closeOutputBuffers(int $targetLevel, bool $flush): void
     {
         $status = ob_get_status(true);
         $level = \count($status);
-        $flags = PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? PHP_OUTPUT_HANDLER_FLUSHABLE : PHP_OUTPUT_HANDLER_CLEANABLE);
+        $flags = \PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? \PHP_OUTPUT_HANDLER_FLUSHABLE : \PHP_OUTPUT_HANDLER_CLEANABLE);
 
         while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || ($s['flags'] & $flags) === $flags : $s['del'])) {
             if ($flush) {
@@ -1230,7 +1235,7 @@ class Response
      *
      * @final
      */
-    protected function ensureIEOverSSLCompatibility(Request $request)
+    protected function ensureIEOverSSLCompatibility(Request $request): void
     {
         if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && 1 == preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) && true === $request->isSecure()) {
             if ((int) preg_replace('/(MSIE )(.*?);/', '$2', $match[0]) < 9) {
diff --git a/vendor/symfony/http-foundation/ResponseHeaderBag.php b/vendor/symfony/http-foundation/ResponseHeaderBag.php
index cf44d0ec..e71034ab 100644
--- a/vendor/symfony/http-foundation/ResponseHeaderBag.php
+++ b/vendor/symfony/http-foundation/ResponseHeaderBag.php
@@ -51,7 +51,7 @@ class ResponseHeaderBag extends HeaderBag
     {
         $headers = [];
         foreach ($this->all() as $name => $value) {
-            $headers[isset($this->headerNames[$name]) ? $this->headerNames[$name] : $name] = $value;
+            $headers[$this->headerNames[$name] ?? $name] = $value;
         }
 
         return $headers;
@@ -87,10 +87,19 @@ class ResponseHeaderBag extends HeaderBag
 
     /**
      * {@inheritdoc}
+     *
+     * @param string|null $key The name of the headers to return or null to get them all
      */
-    public function all()
+    public function all(/*string $key = null*/)
     {
         $headers = parent::all();
+
+        if (1 <= \func_num_args() && null !== $key = func_get_arg(0)) {
+            $key = strtr($key, self::UPPER, self::LOWER);
+
+            return 'set-cookie' !== $key ? $headers[$key] ?? [] : array_map('strval', $this->getCookies());
+        }
+
         foreach ($this->getCookies() as $cookie) {
             $headers['set-cookie'][] = (string) $cookie;
         }
@@ -103,7 +112,7 @@ class ResponseHeaderBag extends HeaderBag
      */
     public function set($key, $values, $replace = true)
     {
-        $uniqueKey = str_replace('_', '-', strtolower($key));
+        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
 
         if ('set-cookie' === $uniqueKey) {
             if ($replace) {
@@ -134,7 +143,7 @@ class ResponseHeaderBag extends HeaderBag
      */
     public function remove($key)
     {
-        $uniqueKey = str_replace('_', '-', strtolower($key));
+        $uniqueKey = strtr($key, self::UPPER, self::LOWER);
         unset($this->headerNames[$uniqueKey]);
 
         if ('set-cookie' === $uniqueKey) {
@@ -243,10 +252,13 @@ class ResponseHeaderBag extends HeaderBag
      * @param string $domain
      * @param bool   $secure
      * @param bool   $httpOnly
+     * @param string $sameSite
      */
-    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true)
+    public function clearCookie($name, $path = '/', $domain = null, $secure = false, $httpOnly = true/*, $sameSite = null*/)
     {
-        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, null));
+        $sameSite = \func_num_args() > 5 ? func_get_arg(5) : null;
+
+        $this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly, false, $sameSite));
     }
 
     /**
@@ -267,13 +279,13 @@ class ResponseHeaderBag extends HeaderBag
      */
     protected function computeCacheControlValue()
     {
-        if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) {
-            return 'no-cache, private';
-        }
-
         if (!$this->cacheControl) {
+            if ($this->has('Last-Modified') || $this->has('Expires')) {
+                return 'private, must-revalidate'; // allows for heuristic expiration (RFC 7234 Section 4.2.2) in the case of "Last-Modified"
+            }
+
             // conservative by default
-            return 'private, must-revalidate';
+            return 'no-cache, private';
         }
 
         $header = $this->getCacheControlHeader();
@@ -289,7 +301,7 @@ class ResponseHeaderBag extends HeaderBag
         return $header;
     }
 
-    private function initDate()
+    private function initDate(): void
     {
         $now = \DateTime::createFromFormat('U', time());
         $now->setTimezone(new \DateTimeZone('UTC'));
diff --git a/vendor/symfony/http-foundation/ServerBag.php b/vendor/symfony/http-foundation/ServerBag.php
index 4c82b177..02c70911 100644
--- a/vendor/symfony/http-foundation/ServerBag.php
+++ b/vendor/symfony/http-foundation/ServerBag.php
@@ -28,13 +28,10 @@ class ServerBag extends ParameterBag
     public function getHeaders()
     {
         $headers = [];
-        $contentHeaders = ['CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true];
         foreach ($this->parameters as $key => $value) {
             if (0 === strpos($key, 'HTTP_')) {
                 $headers[substr($key, 5)] = $value;
-            }
-            // CONTENT_* are not prefixed with HTTP_
-            elseif (isset($contentHeaders[$key])) {
+            } elseif (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
                 $headers[$key] = $value;
             }
         }
@@ -46,13 +43,13 @@ class ServerBag extends ParameterBag
             /*
              * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
              * For this workaround to work, add these lines to your .htaccess file:
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+             * RewriteCond %{HTTP:Authorization} .+
+             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
              *
              * A sample .htaccess file:
              * RewriteEngine On
-             * RewriteCond %{HTTP:Authorization} ^(.+)$
-             * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+             * RewriteCond %{HTTP:Authorization} .+
+             * RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
              * RewriteCond %{REQUEST_FILENAME} !-f
              * RewriteRule ^(.*)$ app.php [QSA,L]
              */
diff --git a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
index 0d8d1799..6fa22939 100644
--- a/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
+++ b/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php
@@ -50,15 +50,10 @@ interface AttributeBagInterface extends SessionBagInterface
     /**
      * Returns attributes.
      *
-     * @return array Attributes
+     * @return array
      */
     public function all();
 
-    /**
-     * Sets attributes.
-     *
-     * @param array $attributes Attributes
-     */
     public function replace(array $attributes);
 
     /**
diff --git a/vendor/symfony/http-foundation/Session/Session.php b/vendor/symfony/http-foundation/Session/Session.php
index db0b9aeb..b6973aaa 100644
--- a/vendor/symfony/http-foundation/Session/Session.php
+++ b/vendor/symfony/http-foundation/Session/Session.php
@@ -18,6 +18,11 @@ use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
 use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(AttributeBag::class);
+class_exists(FlashBag::class);
+class_exists(SessionBagProxy::class);
+
 /**
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Drak <drak@zikula.org>
@@ -31,11 +36,6 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
     private $data = [];
     private $usageIndex = 0;
 
-    /**
-     * @param SessionStorageInterface $storage    A SessionStorageInterface instance
-     * @param AttributeBagInterface   $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag)
-     * @param FlashBagInterface       $flashes    A FlashBagInterface instance (defaults null for default FlashBag)
-     */
     public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
     {
         $this->storage = $storage ?: new NativeSessionStorage();
@@ -134,29 +134,22 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
     /**
      * Returns the number of attributes.
      *
-     * @return int The number of attributes
+     * @return int
      */
     public function count()
     {
         return \count($this->getAttributeBag()->all());
     }
 
-    /**
-     * @return int
-     *
-     * @internal
-     */
-    public function getUsageIndex()
+    public function &getUsageIndex(): int
     {
         return $this->usageIndex;
     }
 
     /**
-     * @return bool
-     *
      * @internal
      */
-    public function isEmpty()
+    public function isEmpty(): bool
     {
         if ($this->isStarted()) {
             ++$this->usageIndex;
@@ -272,10 +265,8 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable
      * Gets the attributebag interface.
      *
      * Note that this method was added to help with IDE autocompletion.
-     *
-     * @return AttributeBagInterface
      */
-    private function getAttributeBag()
+    private function getAttributeBag(): AttributeBagInterface
     {
         return $this->getBag($this->attributeName);
     }
diff --git a/vendor/symfony/http-foundation/Session/SessionBagProxy.php b/vendor/symfony/http-foundation/Session/SessionBagProxy.php
index 3504bdfe..0ae8231e 100644
--- a/vendor/symfony/http-foundation/Session/SessionBagProxy.php
+++ b/vendor/symfony/http-foundation/Session/SessionBagProxy.php
@@ -22,27 +22,21 @@ final class SessionBagProxy implements SessionBagInterface
     private $data;
     private $usageIndex;
 
-    public function __construct(SessionBagInterface $bag, array &$data, &$usageIndex)
+    public function __construct(SessionBagInterface $bag, array &$data, ?int &$usageIndex)
     {
         $this->bag = $bag;
         $this->data = &$data;
         $this->usageIndex = &$usageIndex;
     }
 
-    /**
-     * @return SessionBagInterface
-     */
-    public function getBag()
+    public function getBag(): SessionBagInterface
     {
         ++$this->usageIndex;
 
         return $this->bag;
     }
 
-    /**
-     * @return bool
-     */
-    public function isEmpty()
+    public function isEmpty(): bool
     {
         if (!isset($this->data[$this->bag->getStorageKey()])) {
             return true;
@@ -55,7 +49,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function getName()
+    public function getName(): string
     {
         return $this->bag->getName();
     }
@@ -63,7 +57,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function initialize(array &$array)
+    public function initialize(array &$array): void
     {
         ++$this->usageIndex;
         $this->data[$this->bag->getStorageKey()] = &$array;
@@ -74,7 +68,7 @@ final class SessionBagProxy implements SessionBagInterface
     /**
      * {@inheritdoc}
      */
-    public function getStorageKey()
+    public function getStorageKey(): string
     {
         return $this->bag->getStorageKey();
     }
diff --git a/vendor/symfony/http-foundation/Session/SessionInterface.php b/vendor/symfony/http-foundation/Session/SessionInterface.php
index 95fca857..e758c6bd 100644
--- a/vendor/symfony/http-foundation/Session/SessionInterface.php
+++ b/vendor/symfony/http-foundation/Session/SessionInterface.php
@@ -23,7 +23,7 @@ interface SessionInterface
     /**
      * Starts the session storage.
      *
-     * @return bool True if session started
+     * @return bool
      *
      * @throws \RuntimeException if session fails to start
      */
@@ -32,7 +32,7 @@ interface SessionInterface
     /**
      * Returns the session ID.
      *
-     * @return string The session ID
+     * @return string
      */
     public function getId();
 
@@ -46,7 +46,7 @@ interface SessionInterface
     /**
      * Returns the session name.
      *
-     * @return mixed The session name
+     * @return string
      */
     public function getName();
 
@@ -68,7 +68,7 @@ interface SessionInterface
      *                      to expire with browser session. Time is in seconds, and is
      *                      not a Unix timestamp.
      *
-     * @return bool True if session invalidated, false if error
+     * @return bool
      */
     public function invalidate($lifetime = null);
 
@@ -82,7 +82,7 @@ interface SessionInterface
      *                       to expire with browser session. Time is in seconds, and is
      *                       not a Unix timestamp.
      *
-     * @return bool True if session migrated, false if error
+     * @return bool
      */
     public function migrate($destroy = false, $lifetime = null);
 
@@ -100,7 +100,7 @@ interface SessionInterface
      *
      * @param string $name The attribute name
      *
-     * @return bool true if the attribute is defined, false otherwise
+     * @return bool
      */
     public function has($name);
 
@@ -125,14 +125,12 @@ interface SessionInterface
     /**
      * Returns attributes.
      *
-     * @return array Attributes
+     * @return array
      */
     public function all();
 
     /**
      * Sets attributes.
-     *
-     * @param array $attributes Attributes
      */
     public function replace(array $attributes);
 
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
index 78340efb..42c3df54 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php
@@ -29,7 +29,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     private $igbinaryEmptyData;
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -64,18 +64,27 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     abstract protected function doDestroy($sessionId);
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
         $this->prefetchData = $this->read($sessionId);
         $this->prefetchId = $sessionId;
 
+        if (\PHP_VERSION_ID < 70317 || (70400 <= \PHP_VERSION_ID && \PHP_VERSION_ID < 70405)) {
+            // work around https://bugs.php.net/79413
+            foreach (debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) {
+                if (!isset($frame['class']) && isset($frame['function']) && \in_array($frame['function'], ['session_regenerate_id', 'session_create_id'], true)) {
+                    return '' === $this->prefetchData;
+                }
+            }
+        }
+
         return '' !== $this->prefetchData;
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -98,7 +107,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $data)
     {
@@ -115,13 +124,13 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
-        if (!headers_sent() && filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN)) {
+        if (!headers_sent() && filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN)) {
             if (!$this->sessionName) {
-                throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', \get_class($this)));
+                throw new \LogicException(sprintf('Session name cannot be empty, did you forget to call "parent::open()" in "%s"?.', static::class));
             }
             $cookie = SessionUtils::popSessionCookie($this->sessionName, $sessionId);
 
@@ -134,7 +143,7 @@ abstract class AbstractSessionHandler implements \SessionHandlerInterface, \Sess
              */
             if (null === $cookie || isset($_COOKIE[$this->sessionName])) {
                 if (\PHP_VERSION_ID < 70300) {
-                    setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), FILTER_VALIDATE_BOOLEAN));
+                    setcookie($this->sessionName, '', 0, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), filter_var(ini_get('session.cookie_secure'), \FILTER_VALIDATE_BOOLEAN), filter_var(ini_get('session.cookie_httponly'), \FILTER_VALIDATE_BOOLEAN));
                 } else {
                     $params = session_get_cookie_params();
                     unset($params['lifetime']);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
index a399be5f..6711e0a5 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php
@@ -47,7 +47,7 @@ class MemcachedSessionHandler extends AbstractSessionHandler
         $this->memcached = $memcached;
 
         if ($diff = array_diff(array_keys($options), ['prefix', 'expiretime'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s"', implode(', ', $diff)));
+            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
         }
 
         $this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
index 253d8cb6..c6b16d11 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php
@@ -39,7 +39,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -50,7 +50,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -72,7 +72,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -83,7 +83,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -92,7 +92,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $sessionData)
     {
@@ -103,7 +103,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -112,7 +112,7 @@ class MigratingSessionHandler implements \SessionHandlerInterface, \SessionUpdat
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $sessionData)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
index db85f06e..6cb88477 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php
@@ -61,15 +61,12 @@ class MongoDbSessionHandler extends AbstractSessionHandler
      * If you use such an index, you can drop `gc_probability` to 0 since
      * no garbage-collection is required.
      *
-     * @param \MongoDB\Client $mongo   A MongoDB\Client instance
-     * @param array           $options An associative array of field options
-     *
      * @throws \InvalidArgumentException When "database" or "collection" not provided
      */
     public function __construct(\MongoDB\Client $mongo, array $options)
     {
         if (!isset($options['database']) || !isset($options['collection'])) {
-            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler');
+            throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler.');
         }
 
         $this->mongo = $mongo;
@@ -83,7 +80,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -103,7 +100,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function gc($maxlifetime)
     {
@@ -137,7 +134,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
@@ -171,10 +168,7 @@ class MongoDbSessionHandler extends AbstractSessionHandler
         return $dbData[$this->options['data_field']]->getData();
     }
 
-    /**
-     * @return \MongoDB\Collection
-     */
-    private function getCollection()
+    private function getCollection(): \MongoDB\Collection
     {
         if (null === $this->collection) {
             $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
index bdfc9d81..effc9db5 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php
@@ -38,7 +38,7 @@ class NativeFileSessionHandler extends \SessionHandler
 
         if ($count = substr_count($savePath, ';')) {
             if ($count > 2) {
-                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath));
+                throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'.', $savePath));
             }
 
             // characters after last ';' are the path
@@ -46,7 +46,7 @@ class NativeFileSessionHandler extends \SessionHandler
         }
 
         if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $baseDir));
+            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $baseDir));
         }
 
         ini_set('session.save_path', $savePath);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
index 3ba9378c..0634e46d 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php
@@ -19,7 +19,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
 class NullSessionHandler extends AbstractSessionHandler
 {
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -27,7 +27,7 @@ class NullSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -43,7 +43,7 @@ class NullSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
index 4f770c14..01b41205 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php
@@ -65,6 +65,8 @@ class PdoSessionHandler extends AbstractSessionHandler
      */
     const LOCK_TRANSACTIONAL = 2;
 
+    private const MAX_LIFETIME = 315576000;
+
     /**
      * @var \PDO|null PDO instance or null when not connected yet
      */
@@ -165,7 +167,6 @@ class PdoSessionHandler extends AbstractSessionHandler
      *  * lock_mode: The strategy for locking, see constants [default: LOCK_TRANSACTIONAL]
      *
      * @param \PDO|string|null $pdoOrDsn A \PDO instance or DSN string or URL string or null
-     * @param array            $options  An associative array of options
      *
      * @throws \InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
      */
@@ -173,7 +174,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     {
         if ($pdoOrDsn instanceof \PDO) {
             if (\PDO::ERRMODE_EXCEPTION !== $pdoOrDsn->getAttribute(\PDO::ATTR_ERRMODE)) {
-                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION))', __CLASS__));
+                throw new \InvalidArgumentException(sprintf('"%s" requires PDO error mode attribute be set to throw Exceptions (i.e. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)).', __CLASS__));
             }
 
             $this->pdo = $pdoOrDsn;
@@ -218,7 +219,7 @@ class PdoSessionHandler extends AbstractSessionHandler
                 // - trailing space removal
                 // - case-insensitivity
                 // - language processing like é == e
-                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol MEDIUMINT NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8_bin, ENGINE = InnoDB";
+                $sql = "CREATE TABLE $this->table ($this->idCol VARBINARY(128) NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER UNSIGNED NOT NULL, $this->timeCol INTEGER UNSIGNED NOT NULL) COLLATE utf8mb4_bin, ENGINE = InnoDB";
                 break;
             case 'sqlite':
                 $sql = "CREATE TABLE $this->table ($this->idCol TEXT NOT NULL PRIMARY KEY, $this->dataCol BLOB NOT NULL, $this->lifetimeCol INTEGER NOT NULL, $this->timeCol INTEGER NOT NULL)";
@@ -238,6 +239,7 @@ class PdoSessionHandler extends AbstractSessionHandler
 
         try {
             $this->pdo->exec($sql);
+            $this->pdo->exec("CREATE INDEX EXPIRY ON $this->table ($this->lifetimeCol)");
         } catch (\PDOException $e) {
             $this->rollback();
 
@@ -258,7 +260,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -272,7 +274,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -365,18 +367,18 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
-        $maxlifetime = (int) ini_get('session.gc_maxlifetime');
+        $expiry = time() + (int) ini_get('session.gc_maxlifetime');
 
         try {
             $updateStmt = $this->pdo->prepare(
-                "UPDATE $this->table SET $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id"
+                "UPDATE $this->table SET $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id"
             );
             $updateStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
-            $updateStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+            $updateStmt->bindParam(':expiry', $expiry, \PDO::PARAM_INT);
             $updateStmt->bindValue(':time', time(), \PDO::PARAM_INT);
             $updateStmt->execute();
         } catch (\PDOException $e) {
@@ -389,7 +391,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -403,14 +405,21 @@ class PdoSessionHandler extends AbstractSessionHandler
             $this->gcCalled = false;
 
             // delete the session records that have expired
+            $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol < :time AND $this->lifetimeCol > :min";
+            $stmt = $this->pdo->prepare($sql);
+            $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
+            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
+            $stmt->execute();
+            // to be removed in 6.0
             if ('mysql' === $this->driver) {
-                $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol + $this->timeCol < :time";
+                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol + $this->timeCol < :time";
             } else {
-                $sql = "DELETE FROM $this->table WHERE $this->lifetimeCol < :time - $this->timeCol";
+                $legacySql = "DELETE FROM $this->table WHERE $this->lifetimeCol <= :min AND $this->lifetimeCol < :time - $this->timeCol";
             }
 
-            $stmt = $this->pdo->prepare($sql);
+            $stmt = $this->pdo->prepare($legacySql);
             $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
+            $stmt->bindValue(':min', self::MAX_LIFETIME, \PDO::PARAM_INT);
             $stmt->execute();
         }
 
@@ -423,10 +432,8 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Lazy-connects to the database.
-     *
-     * @param string $dsn DSN string
      */
-    private function connect($dsn)
+    private function connect(string $dsn): void
     {
         $this->pdo = new \PDO($dsn, $this->username, $this->password, $this->connectionOptions);
         $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
@@ -436,13 +443,9 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Builds a PDO DSN from a URL-like connection string.
      *
-     * @param string $dsnOrUrl
-     *
-     * @return string
-     *
      * @todo implement missing support for oci DSN (which look totally different from other PDO ones)
      */
-    private function buildDsnFromUrl($dsnOrUrl)
+    private function buildDsnFromUrl(string $dsnOrUrl): string
     {
         // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid
         $url = preg_replace('#^((?:pdo_)?sqlite3?):///#', '$1://localhost/', $dsnOrUrl);
@@ -465,7 +468,7 @@ class PdoSessionHandler extends AbstractSessionHandler
         }
 
         if (!isset($params['scheme'])) {
-            throw new \InvalidArgumentException('URLs without scheme are not supported to configure the PdoSessionHandler');
+            throw new \InvalidArgumentException('URLs without scheme are not supported to configure the PdoSessionHandler.');
         }
 
         $driverAliasMap = [
@@ -541,7 +544,7 @@ class PdoSessionHandler extends AbstractSessionHandler
      * due to https://percona.com/blog/2013/12/12/one-more-innodb-gap-lock-to-avoid/ .
      * So we change it to READ COMMITTED.
      */
-    private function beginTransaction()
+    private function beginTransaction(): void
     {
         if (!$this->inTransaction) {
             if ('sqlite' === $this->driver) {
@@ -559,7 +562,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Helper method to commit a transaction.
      */
-    private function commit()
+    private function commit(): void
     {
         if ($this->inTransaction) {
             try {
@@ -581,7 +584,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     /**
      * Helper method to rollback a transaction.
      */
-    private function rollback()
+    private function rollback(): void
     {
         // We only need to rollback if we are in a transaction. Otherwise the resulting
         // error would hide the real problem why rollback was called. We might not be
@@ -623,7 +626,12 @@ class PdoSessionHandler extends AbstractSessionHandler
             $sessionRows = $selectStmt->fetchAll(\PDO::FETCH_NUM);
 
             if ($sessionRows) {
-                if ($sessionRows[0][1] + $sessionRows[0][2] < time()) {
+                $expiry = (int) $sessionRows[0][1];
+                if ($expiry <= self::MAX_LIFETIME) {
+                    $expiry += $sessionRows[0][2];
+                }
+
+                if ($expiry < time()) {
                     $this->sessionExpired = true;
 
                     return '';
@@ -637,7 +645,7 @@ class PdoSessionHandler extends AbstractSessionHandler
                 throw new \RuntimeException('Failed to read session: INSERT reported a duplicate id but next SELECT did not return any data.');
             }
 
-            if (!filter_var(ini_get('session.use_strict_mode'), FILTER_VALIDATE_BOOLEAN) && self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
+            if (!filter_var(ini_get('session.use_strict_mode'), \FILTER_VALIDATE_BOOLEAN) && self::LOCK_TRANSACTIONAL === $this->lockMode && 'sqlite' !== $this->driver) {
                 // In strict mode, session fixation is not possible: new sessions always start with a unique
                 // random id, so that concurrency is not possible and this code path can be skipped.
                 // Exclusive-reading of non-existent rows does not block, so we need to do an insert to block
@@ -676,7 +684,7 @@ class PdoSessionHandler extends AbstractSessionHandler
      *       - for oci using DBMS_LOCK.REQUEST
      *       - for sqlsrv using sp_getapplock with LockOwner = Session
      */
-    private function doAdvisoryLock(string $sessionId)
+    private function doAdvisoryLock(string $sessionId): \PDOStatement
     {
         switch ($this->driver) {
             case 'mysql':
@@ -754,6 +762,7 @@ class PdoSessionHandler extends AbstractSessionHandler
         if (self::LOCK_TRANSACTIONAL === $this->lockMode) {
             $this->beginTransaction();
 
+            // selecting the time column should be removed in 6.0
             switch ($this->driver) {
                 case 'mysql':
                 case 'oci':
@@ -774,32 +783,26 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Returns an insert statement supported by the database for writing session data.
-     *
-     * @param string $sessionId   Session ID
-     * @param string $sessionData Encoded session data
-     * @param int    $maxlifetime session.gc_maxlifetime
-     *
-     * @return \PDOStatement The insert statement
      */
-    private function getInsertStatement($sessionId, $sessionData, $maxlifetime)
+    private function getInsertStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
     {
         switch ($this->driver) {
             case 'oci':
                 $data = fopen('php://memory', 'r+');
                 fwrite($data, $sessionData);
                 rewind($data);
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :lifetime, :time) RETURNING $this->dataCol into :data";
+                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, EMPTY_BLOB(), :expiry, :time) RETURNING $this->dataCol into :data";
                 break;
             default:
                 $data = $sessionData;
-                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)";
+                $sql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
                 break;
         }
 
         $stmt = $this->pdo->prepare($sql);
         $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
         $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
         $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
 
         return $stmt;
@@ -807,32 +810,26 @@ class PdoSessionHandler extends AbstractSessionHandler
 
     /**
      * Returns an update statement supported by the database for writing session data.
-     *
-     * @param string $sessionId   Session ID
-     * @param string $sessionData Encoded session data
-     * @param int    $maxlifetime session.gc_maxlifetime
-     *
-     * @return \PDOStatement The update statement
      */
-    private function getUpdateStatement($sessionId, $sessionData, $maxlifetime)
+    private function getUpdateStatement(string $sessionId, string $sessionData, int $maxlifetime): \PDOStatement
     {
         switch ($this->driver) {
             case 'oci':
                 $data = fopen('php://memory', 'r+');
                 fwrite($data, $sessionData);
                 rewind($data);
-                $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data";
+                $sql = "UPDATE $this->table SET $this->dataCol = EMPTY_BLOB(), $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id RETURNING $this->dataCol into :data";
                 break;
             default:
                 $data = $sessionData;
-                $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :lifetime, $this->timeCol = :time WHERE $this->idCol = :id";
+                $sql = "UPDATE $this->table SET $this->dataCol = :data, $this->lifetimeCol = :expiry, $this->timeCol = :time WHERE $this->idCol = :id";
                 break;
         }
 
         $stmt = $this->pdo->prepare($sql);
         $stmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
         $stmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-        $stmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+        $stmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
         $stmt->bindValue(':time', time(), \PDO::PARAM_INT);
 
         return $stmt;
@@ -845,7 +842,7 @@ class PdoSessionHandler extends AbstractSessionHandler
     {
         switch (true) {
             case 'mysql' === $this->driver:
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
+                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
                     "ON DUPLICATE KEY UPDATE $this->dataCol = VALUES($this->dataCol), $this->lifetimeCol = VALUES($this->lifetimeCol), $this->timeCol = VALUES($this->timeCol)";
                 break;
             case 'sqlsrv' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '10', '>='):
@@ -856,10 +853,10 @@ class PdoSessionHandler extends AbstractSessionHandler
                     "WHEN MATCHED THEN UPDATE SET $this->dataCol = ?, $this->lifetimeCol = ?, $this->timeCol = ?;";
                 break;
             case 'sqlite' === $this->driver:
-                $mergeSql = "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time)";
+                $mergeSql = "INSERT OR REPLACE INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time)";
                 break;
             case 'pgsql' === $this->driver && version_compare($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION), '9.5', '>='):
-                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :lifetime, :time) ".
+                $mergeSql = "INSERT INTO $this->table ($this->idCol, $this->dataCol, $this->lifetimeCol, $this->timeCol) VALUES (:id, :data, :expiry, :time) ".
                     "ON CONFLICT ($this->idCol) DO UPDATE SET ($this->dataCol, $this->lifetimeCol, $this->timeCol) = (EXCLUDED.$this->dataCol, EXCLUDED.$this->lifetimeCol, EXCLUDED.$this->timeCol)";
                 break;
             default:
@@ -873,15 +870,15 @@ class PdoSessionHandler extends AbstractSessionHandler
             $mergeStmt->bindParam(1, $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(2, $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(3, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(4, $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(4, time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(5, time(), \PDO::PARAM_INT);
             $mergeStmt->bindParam(6, $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(7, $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(7, time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(8, time(), \PDO::PARAM_INT);
         } else {
             $mergeStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
             $mergeStmt->bindParam(':data', $data, \PDO::PARAM_LOB);
-            $mergeStmt->bindParam(':lifetime', $maxlifetime, \PDO::PARAM_INT);
+            $mergeStmt->bindValue(':expiry', time() + $maxlifetime, \PDO::PARAM_INT);
             $mergeStmt->bindValue(':time', time(), \PDO::PARAM_INT);
         }
 
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
index 46ca6796..699d6da6 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php
@@ -30,12 +30,17 @@ class RedisSessionHandler extends AbstractSessionHandler
      */
     private $prefix;
 
+    /**
+     * @var int Time to live in seconds
+     */
+    private $ttl;
+
     /**
      * List of available options:
-     *  * prefix: The prefix to use for the keys in order to avoid collision on the Redis server.
+     *  * prefix: The prefix to use for the keys in order to avoid collision on the Redis server
+     *  * ttl: The time to live in seconds.
      *
-     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy $redis
-     * @param array                                                               $options An associative array of options
+     * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface|RedisProxy|RedisClusterProxy $redis
      *
      * @throws \InvalidArgumentException When unsupported client or options are passed
      */
@@ -49,15 +54,16 @@ class RedisSessionHandler extends AbstractSessionHandler
             !$redis instanceof RedisProxy &&
             !$redis instanceof RedisClusterProxy
         ) {
-            throw new \InvalidArgumentException(sprintf('%s() expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, %s given', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis)));
+            throw new \InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, \is_object($redis) ? \get_class($redis) : \gettype($redis)));
         }
 
-        if ($diff = array_diff(array_keys($options), ['prefix'])) {
-            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s"', implode(', ', $diff)));
+        if ($diff = array_diff(array_keys($options), ['prefix', 'ttl'])) {
+            throw new \InvalidArgumentException(sprintf('The following options are not supported "%s".', implode(', ', $diff)));
         }
 
         $this->redis = $redis;
         $this->prefix = $options['prefix'] ?? 'sf_s';
+        $this->ttl = $options['ttl'] ?? null;
     }
 
     /**
@@ -73,7 +79,7 @@ class RedisSessionHandler extends AbstractSessionHandler
      */
     protected function doWrite($sessionId, $data): bool
     {
-        $result = $this->redis->setEx($this->prefix.$sessionId, (int) ini_get('session.gc_maxlifetime'), $data);
+        $result = $this->redis->setEx($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')), $data);
 
         return $result && !$result instanceof ErrorInterface;
     }
@@ -105,10 +111,10 @@ class RedisSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
-        return (bool) $this->redis->expire($this->prefix.$sessionId, (int) ini_get('session.gc_maxlifetime'));
+        return (bool) $this->redis->expire($this->prefix.$sessionId, (int) ($this->ttl ?? ini_get('session.gc_maxlifetime')));
     }
 }
diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
index fab8e9a1..3144ea59 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php
@@ -31,7 +31,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -49,7 +49,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
@@ -65,7 +65,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -86,7 +86,7 @@ class StrictSessionHandler extends AbstractSessionHandler
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
index 2eff4109..5fe40fc1 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MetadataBag.php
@@ -159,7 +159,7 @@ class MetadataBag implements SessionBagInterface
         $this->name = $name;
     }
 
-    private function stampCreated($lifetime = null)
+    private function stampCreated(int $lifetime = null): void
     {
         $timeStamp = time();
         $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp;
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
index 37b6f145..db8f85e7 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php
@@ -148,7 +148,7 @@ class MockArraySessionStorage implements SessionStorageInterface
     public function save()
     {
         if (!$this->started || $this->closed) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
+            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
         }
         // nothing to do since we don't persist the session data
         $this->closed = false;
@@ -186,7 +186,7 @@ class MockArraySessionStorage implements SessionStorageInterface
     public function getBag($name)
     {
         if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
+            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
         }
 
         if (!$this->started) {
diff --git a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
index c0316c2c..c96b3cd9 100644
--- a/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php
@@ -27,9 +27,8 @@ class MockFileSessionStorage extends MockArraySessionStorage
     private $savePath;
 
     /**
-     * @param string      $savePath Path of directory to save session files
-     * @param string      $name     Session name
-     * @param MetadataBag $metaBag  MetadataBag instance
+     * @param string $savePath Path of directory to save session files
+     * @param string $name     Session name
      */
     public function __construct(string $savePath = null, string $name = 'MOCKSESSID', MetadataBag $metaBag = null)
     {
@@ -38,7 +37,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
         }
 
         if (!is_dir($savePath) && !@mkdir($savePath, 0777, true) && !is_dir($savePath)) {
-            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $savePath));
+            throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s".', $savePath));
         }
 
         $this->savePath = $savePath;
@@ -88,7 +87,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
     public function save()
     {
         if (!$this->started) {
-            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed');
+            throw new \RuntimeException('Trying to save a session that was not started yet or was already closed.');
         }
 
         $data = $this->data;
@@ -122,7 +121,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
      * Deletes a session from persistent storage.
      * Deliberately leaves session data in memory intact.
      */
-    private function destroy()
+    private function destroy(): void
     {
         if (is_file($this->getFilePath())) {
             unlink($this->getFilePath());
@@ -131,10 +130,8 @@ class MockFileSessionStorage extends MockArraySessionStorage
 
     /**
      * Calculate path to file.
-     *
-     * @return string File path
      */
-    private function getFilePath()
+    private function getFilePath(): string
     {
         return $this->savePath.'/'.$this->id.'.mocksess';
     }
@@ -142,7 +139,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
     /**
      * Reads session from storage and loads session.
      */
-    private function read()
+    private function read(): void
     {
         $filePath = $this->getFilePath();
         $this->data = is_readable($filePath) && is_file($filePath) ? unserialize(file_get_contents($filePath)) : [];
diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
index 202f3a5a..e1da9550 100644
--- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
@@ -17,6 +17,11 @@ use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandle
 use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
 use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(MetadataBag::class);
+class_exists(StrictSessionHandler::class);
+class_exists(SessionHandlerProxy::class);
+
 /**
  * This provides a base class for session attribute storage.
  *
@@ -97,9 +102,7 @@ class NativeSessionStorage implements SessionStorageInterface
      * trans_sid_hosts, $_SERVER['HTTP_HOST']
      * trans_sid_tags, "a=href,area=href,frame=src,form="
      *
-     * @param array                         $options Session configuration options
-     * @param \SessionHandlerInterface|null $handler
-     * @param MetadataBag                   $metaBag MetadataBag
+     * @param AbstractProxy|\SessionHandlerInterface|null $handler
      */
     public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null)
     {
@@ -145,13 +148,13 @@ class NativeSessionStorage implements SessionStorageInterface
             throw new \RuntimeException('Failed to start the session: already started by PHP.');
         }
 
-        if (filter_var(ini_get('session.use_cookies'), FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
+        if (filter_var(ini_get('session.use_cookies'), \FILTER_VALIDATE_BOOLEAN) && headers_sent($file, $line)) {
             throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
         }
 
         // ok to try and start the session
         if (!session_start()) {
-            throw new \RuntimeException('Failed to start the session');
+            throw new \RuntimeException('Failed to start the session.');
         }
 
         if (null !== $this->emulateSameSite) {
@@ -212,8 +215,10 @@ class NativeSessionStorage implements SessionStorageInterface
             return false;
         }
 
-        if (null !== $lifetime) {
+        if (null !== $lifetime && $lifetime != ini_get('session.cookie_lifetime')) {
+            $this->save();
             ini_set('session.cookie_lifetime', $lifetime);
+            $this->start();
         }
 
         if ($destroy) {
@@ -222,10 +227,6 @@ class NativeSessionStorage implements SessionStorageInterface
 
         $isRegenerated = session_regenerate_id($destroy);
 
-        // The reference to $_SESSION in session bags is lost in PHP7 and we need to re-create it.
-        // @see https://bugs.php.net/70013
-        $this->loadSession();
-
         if (null !== $this->emulateSameSite) {
             $originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
             if (null !== $originalCookie) {
@@ -255,7 +256,7 @@ class NativeSessionStorage implements SessionStorageInterface
 
         // Register error handler to add information about the current save handler
         $previousHandler = set_error_handler(function ($type, $msg, $file, $line) use (&$previousHandler) {
-            if (E_WARNING === $type && 0 === strpos($msg, 'session_write_close():')) {
+            if (\E_WARNING === $type && 0 === strpos($msg, 'session_write_close():')) {
                 $handler = $this->saveHandler instanceof SessionHandlerProxy ? $this->saveHandler->getHandler() : $this->saveHandler;
                 $msg = sprintf('session_write_close(): Failed to write session data with "%s" handler', \get_class($handler));
             }
@@ -313,7 +314,7 @@ class NativeSessionStorage implements SessionStorageInterface
     public function getBag($name)
     {
         if (!isset($this->bags[$name])) {
-            throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name));
+            throw new \InvalidArgumentException(sprintf('The SessionBagInterface "%s" is not registered.', $name));
         }
 
         if (!$this->started && $this->saveHandler->isActive()) {
@@ -403,15 +404,13 @@ class NativeSessionStorage implements SessionStorageInterface
      *     ini_set('session.save_path', '/tmp');
      *
      * or pass in a \SessionHandler instance which configures session.save_handler in the
-     * constructor, for a template see NativeFileSessionHandler or use handlers in
-     * composer package drak/native-session
+     * constructor, for a template see NativeFileSessionHandler.
      *
      * @see https://php.net/session-set-save-handler
      * @see https://php.net/sessionhandlerinterface
      * @see https://php.net/sessionhandler
-     * @see https://github.com/zikula/NativeSession
      *
-     * @param \SessionHandlerInterface|null $saveHandler
+     * @param AbstractProxy|\SessionHandlerInterface|null $saveHandler
      *
      * @throws \InvalidArgumentException
      */
diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
index 8969e609..72dbef13 100644
--- a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\HttpFoundation\Session\Storage;
 
+use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
+
 /**
  * Allows session to be started by PHP and managed by Symfony.
  *
@@ -19,8 +21,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
 class PhpBridgeSessionStorage extends NativeSessionStorage
 {
     /**
-     * @param \SessionHandlerInterface|null $handler
-     * @param MetadataBag                   $metaBag MetadataBag
+     * @param AbstractProxy|\SessionHandlerInterface|null $handler
      */
     public function __construct($handler = null, MetadataBag $metaBag = null)
     {
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
index 0303729e..9e1c94dd 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php
@@ -88,7 +88,7 @@ abstract class AbstractProxy
     public function setId($id)
     {
         if ($this->isActive()) {
-            throw new \LogicException('Cannot change the ID of an active session');
+            throw new \LogicException('Cannot change the ID of an active session.');
         }
 
         session_id($id);
@@ -114,7 +114,7 @@ abstract class AbstractProxy
     public function setName($name)
     {
         if ($this->isActive()) {
-            throw new \LogicException('Cannot change the name of an active session');
+            throw new \LogicException('Cannot change the name of an active session.');
         }
 
         session_name($name);
diff --git a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
index e40712d9..de4f550b 100644
--- a/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
+++ b/vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php
@@ -36,7 +36,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     // \SessionHandlerInterface
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function open($savePath, $sessionName)
     {
@@ -44,7 +44,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function close()
     {
@@ -52,7 +52,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return string
      */
     public function read($sessionId)
     {
@@ -60,7 +60,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function write($sessionId, $data)
     {
@@ -68,7 +68,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function destroy($sessionId)
     {
@@ -84,7 +84,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function validateId($sessionId)
     {
@@ -92,7 +92,7 @@ class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterf
     }
 
     /**
-     * {@inheritdoc}
+     * @return bool
      */
     public function updateTimestamp($sessionId, $data)
     {
diff --git a/vendor/symfony/http-foundation/StreamedResponse.php b/vendor/symfony/http-foundation/StreamedResponse.php
index bfbcae9a..ef8095bb 100644
--- a/vendor/symfony/http-foundation/StreamedResponse.php
+++ b/vendor/symfony/http-foundation/StreamedResponse.php
@@ -63,8 +63,6 @@ class StreamedResponse extends Response
     /**
      * Sets the PHP callback associated with this Response.
      *
-     * @param callable $callback A valid PHP callback
-     *
      * @return $this
      */
     public function setCallback(callable $callback)
diff --git a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php b/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
index 2d105627..cb216ea1 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpFoundation\Test\Constraint;
 
 use PHPUnit\Framework\Constraint\Constraint;
+use Symfony\Component\HttpFoundation\Request;
 
 final class RequestAttributeValueSame extends Constraint
 {
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
index bd792b0d..eae9e271 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
@@ -64,7 +64,7 @@ final class ResponseHasCookie extends Constraint
         return 'the Response '.$this->toString();
     }
 
-    protected function getCookie(Response $response): ?Cookie
+    private function getCookie(Response $response): ?Cookie
     {
         $cookies = $response->headers->getCookies();
 
diff --git a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php b/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
index acdea71d..a27d0c73 100644
--- a/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
+++ b/vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
@@ -40,7 +40,7 @@ final class ResponseHeaderSame extends Constraint
      */
     protected function matches($response): bool
     {
-        return $this->expectedValue === $response->headers->get($this->headerName, null, true);
+        return $this->expectedValue === $response->headers->get($this->headerName, null);
     }
 
     /**
diff --git a/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php b/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php
deleted file mode 100644
index 516bd555..00000000
--- a/vendor/symfony/http-foundation/Tests/AcceptHeaderItemTest.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\AcceptHeaderItem;
-
-class AcceptHeaderItemTest extends TestCase
-{
-    /**
-     * @dataProvider provideFromStringData
-     */
-    public function testFromString($string, $value, array $attributes)
-    {
-        $item = AcceptHeaderItem::fromString($string);
-        $this->assertEquals($value, $item->getValue());
-        $this->assertEquals($attributes, $item->getAttributes());
-    }
-
-    public function provideFromStringData()
-    {
-        return [
-            [
-                'text/html',
-                'text/html', [],
-            ],
-            [
-                '"this;should,not=matter"',
-                'this;should,not=matter', [],
-            ],
-            [
-                "text/plain; charset=utf-8;param=\"this;should,not=matter\";\tfootnotes=true",
-                'text/plain', ['charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'],
-            ],
-            [
-                '"this;should,not=matter";charset=utf-8',
-                'this;should,not=matter', ['charset' => 'utf-8'],
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider provideToStringData
-     */
-    public function testToString($value, array $attributes, $string)
-    {
-        $item = new AcceptHeaderItem($value, $attributes);
-        $this->assertEquals($string, (string) $item);
-    }
-
-    public function provideToStringData()
-    {
-        return [
-            [
-                'text/html', [],
-                'text/html',
-            ],
-            [
-                'text/plain', ['charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'],
-                'text/plain; charset=utf-8; param="this;should,not=matter"; footnotes=true',
-            ],
-        ];
-    }
-
-    public function testValue()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals('value', $item->getValue());
-
-        $item->setValue('new value');
-        $this->assertEquals('new value', $item->getValue());
-
-        $item->setValue(1);
-        $this->assertEquals('1', $item->getValue());
-    }
-
-    public function testQuality()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals(1.0, $item->getQuality());
-
-        $item->setQuality(0.5);
-        $this->assertEquals(0.5, $item->getQuality());
-
-        $item->setAttribute('q', 0.75);
-        $this->assertEquals(0.75, $item->getQuality());
-        $this->assertFalse($item->hasAttribute('q'));
-    }
-
-    public function testAttribute()
-    {
-        $item = new AcceptHeaderItem('value', []);
-        $this->assertEquals([], $item->getAttributes());
-        $this->assertFalse($item->hasAttribute('test'));
-        $this->assertNull($item->getAttribute('test'));
-        $this->assertEquals('default', $item->getAttribute('test', 'default'));
-
-        $item->setAttribute('test', 'value');
-        $this->assertEquals(['test' => 'value'], $item->getAttributes());
-        $this->assertTrue($item->hasAttribute('test'));
-        $this->assertEquals('value', $item->getAttribute('test'));
-        $this->assertEquals('value', $item->getAttribute('test', 'default'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php b/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php
deleted file mode 100644
index 1987e97f..00000000
--- a/vendor/symfony/http-foundation/Tests/AcceptHeaderTest.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\AcceptHeader;
-use Symfony\Component\HttpFoundation\AcceptHeaderItem;
-
-class AcceptHeaderTest extends TestCase
-{
-    public function testFirst()
-    {
-        $header = AcceptHeader::fromString('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c');
-        $this->assertSame('text/html', $header->first()->getValue());
-    }
-
-    /**
-     * @dataProvider provideFromStringData
-     */
-    public function testFromString($string, array $items)
-    {
-        $header = AcceptHeader::fromString($string);
-        $parsed = array_values($header->all());
-        // reset index since the fixtures don't have them set
-        foreach ($parsed as $item) {
-            $item->setIndex(0);
-        }
-        $this->assertEquals($items, $parsed);
-    }
-
-    public function provideFromStringData()
-    {
-        return [
-            ['', []],
-            ['gzip', [new AcceptHeaderItem('gzip')]],
-            ['gzip,deflate,sdch', [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]],
-            ["gzip, deflate\t,sdch", [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]],
-            ['"this;should,not=matter"', [new AcceptHeaderItem('this;should,not=matter')]],
-        ];
-    }
-
-    /**
-     * @dataProvider provideToStringData
-     */
-    public function testToString(array $items, $string)
-    {
-        $header = new AcceptHeader($items);
-        $this->assertEquals($string, (string) $header);
-    }
-
-    public function provideToStringData()
-    {
-        return [
-            [[], ''],
-            [[new AcceptHeaderItem('gzip')], 'gzip'],
-            [[new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')], 'gzip,deflate,sdch'],
-            [[new AcceptHeaderItem('this;should,not=matter')], 'this;should,not=matter'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideFilterData
-     */
-    public function testFilter($string, $filter, array $values)
-    {
-        $header = AcceptHeader::fromString($string)->filter($filter);
-        $this->assertEquals($values, array_keys($header->all()));
-    }
-
-    public function provideFilterData()
-    {
-        return [
-            ['fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', '/fr.*/', ['fr-FR', 'fr']],
-        ];
-    }
-
-    /**
-     * @dataProvider provideSortingData
-     */
-    public function testSorting($string, array $values)
-    {
-        $header = AcceptHeader::fromString($string);
-        $this->assertEquals($values, array_keys($header->all()));
-    }
-
-    public function provideSortingData()
-    {
-        return [
-            'quality has priority' => ['*;q=0.3,ISO-8859-1,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']],
-            'order matters when q is equal' => ['*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', ['ISO-8859-1', 'utf-8', '*']],
-            'order matters when q is equal2' => ['*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', ['utf-8', 'ISO-8859-1', '*']],
-        ];
-    }
-
-    /**
-     * @dataProvider provideDefaultValueData
-     */
-    public function testDefaultValue($acceptHeader, $value, $expectedQuality)
-    {
-        $header = AcceptHeader::fromString($acceptHeader);
-        $this->assertSame($expectedQuality, $header->get($value)->getQuality());
-    }
-
-    public function provideDefaultValueData()
-    {
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, *;q=0.3', 'text/xml', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/xml', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/html', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/plain', 0.5];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', '*', 0.3];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', '*', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/xml', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/*', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/*', 0.8];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/html', 1.0];
-        yield ['text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/x-dvi', 0.8];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', '*', 0.3];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'utf-8', 0.7];
-        yield ['*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'SHIFT_JIS', 0.3];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php b/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php
deleted file mode 100644
index 6fa3b889..00000000
--- a/vendor/symfony/http-foundation/Tests/ApacheRequestTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ApacheRequest;
-
-class ApacheRequestTest extends TestCase
-{
-    /**
-     * @dataProvider provideServerVars
-     */
-    public function testUriMethods($server, $expectedRequestUri, $expectedBaseUrl, $expectedPathInfo)
-    {
-        $request = new ApacheRequest();
-        $request->server->replace($server);
-
-        $this->assertEquals($expectedRequestUri, $request->getRequestUri(), '->getRequestUri() is correct');
-        $this->assertEquals($expectedBaseUrl, $request->getBaseUrl(), '->getBaseUrl() is correct');
-        $this->assertEquals($expectedPathInfo, $request->getPathInfo(), '->getPathInfo() is correct');
-    }
-
-    public function provideServerVars()
-    {
-        return [
-            [
-                [
-                    'REQUEST_URI' => '/foo/app_dev.php/bar',
-                    'SCRIPT_NAME' => '/foo/app_dev.php',
-                    'PATH_INFO' => '/bar',
-                ],
-                '/foo/app_dev.php/bar',
-                '/foo/app_dev.php',
-                '/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/foo/bar',
-                    'SCRIPT_NAME' => '/foo/app_dev.php',
-                ],
-                '/foo/bar',
-                '/foo',
-                '/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/app_dev.php/foo/bar',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                    'PATH_INFO' => '/foo/bar',
-                ],
-                '/app_dev.php/foo/bar',
-                '/app_dev.php',
-                '/foo/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/foo/bar',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/foo/bar',
-                '',
-                '/foo/bar',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/app_dev.php',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/app_dev.php',
-                '/app_dev.php',
-                '/',
-            ],
-            [
-                [
-                    'REQUEST_URI' => '/',
-                    'SCRIPT_NAME' => '/app_dev.php',
-                ],
-                '/',
-                '',
-                '/',
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php b/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
deleted file mode 100644
index 734f8e84..00000000
--- a/vendor/symfony/http-foundation/Tests/BinaryFileResponseTest.php
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use Symfony\Component\HttpFoundation\BinaryFileResponse;
-use Symfony\Component\HttpFoundation\File\Stream;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-use Symfony\Component\HttpFoundation\Tests\File\FakeFile;
-
-class BinaryFileResponseTest extends ResponseTestCase
-{
-    public function testConstruction()
-    {
-        $file = __DIR__.'/../README.md';
-        $response = new BinaryFileResponse($file, 404, ['X-Header' => 'Foo'], true, null, true, true);
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertEquals('Foo', $response->headers->get('X-Header'));
-        $this->assertTrue($response->headers->has('ETag'));
-        $this->assertTrue($response->headers->has('Last-Modified'));
-        $this->assertFalse($response->headers->has('Content-Disposition'));
-
-        $response = BinaryFileResponse::create($file, 404, [], true, ResponseHeaderBag::DISPOSITION_INLINE);
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertFalse($response->headers->has('ETag'));
-        $this->assertEquals('inline; filename=README.md', $response->headers->get('Content-Disposition'));
-    }
-
-    public function testConstructWithNonAsciiFilename()
-    {
-        touch(sys_get_temp_dir().'/fööö.html');
-
-        $response = new BinaryFileResponse(sys_get_temp_dir().'/fööö.html', 200, [], true, 'attachment');
-
-        @unlink(sys_get_temp_dir().'/fööö.html');
-
-        $this->assertSame('fööö.html', $response->getFile()->getFilename());
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('LogicException');
-        $response = new BinaryFileResponse(__FILE__);
-        $response->setContent('foo');
-    }
-
-    public function testGetContent()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-        $this->assertFalse($response->getContent());
-    }
-
-    public function testSetContentDispositionGeneratesSafeFallbackFilename()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-        $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'föö.html');
-
-        $this->assertSame('attachment; filename=f__.html; filename*=utf-8\'\'f%C3%B6%C3%B6.html', $response->headers->get('Content-Disposition'));
-    }
-
-    public function testSetContentDispositionGeneratesSafeFallbackFilenameForWronglyEncodedFilename()
-    {
-        $response = new BinaryFileResponse(__FILE__);
-
-        $iso88591EncodedFilename = utf8_decode('föö.html');
-        $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $iso88591EncodedFilename);
-
-        // the parameter filename* is invalid in this case (rawurldecode('f%F6%F6') does not provide a UTF-8 string but an ISO-8859-1 encoded one)
-        $this->assertSame('attachment; filename=f__.html; filename*=utf-8\'\'f%F6%F6.html', $response->headers->get('Content-Disposition'));
-    }
-
-    /**
-     * @dataProvider provideRanges
-     */
-    public function testRequests($requestRange, $offset, $length, $responseRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // do a request to get the ETag
-        $request = Request::create('/');
-        $response->prepare($request);
-        $etag = $response->headers->get('ETag');
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', $etag);
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        fseek($file, $offset);
-        $data = fread($file, $length);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(206, $response->getStatusCode());
-        $this->assertEquals($responseRange, $response->headers->get('Content-Range'));
-        $this->assertSame((string) $length, $response->headers->get('Content-Length'));
-    }
-
-    /**
-     * @dataProvider provideRanges
-     */
-    public function testRequestsWithoutEtag($requestRange, $offset, $length, $responseRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-
-        // do a request to get the LastModified
-        $request = Request::create('/');
-        $response->prepare($request);
-        $lastModified = $response->headers->get('Last-Modified');
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', $lastModified);
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        fseek($file, $offset);
-        $data = fread($file, $length);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(206, $response->getStatusCode());
-        $this->assertEquals($responseRange, $response->headers->get('Content-Range'));
-    }
-
-    public function provideRanges()
-    {
-        return [
-            ['bytes=1-4', 1, 4, 'bytes 1-4/35'],
-            ['bytes=-5', 30, 5, 'bytes 30-34/35'],
-            ['bytes=30-', 30, 5, 'bytes 30-34/35'],
-            ['bytes=30-30', 30, 1, 'bytes 30-30/35'],
-            ['bytes=30-34', 30, 5, 'bytes 30-34/35'],
-        ];
-    }
-
-    public function testRangeRequestsWithoutLastModifiedDate()
-    {
-        // prevent auto last modified
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'], true, null, false, false);
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('If-Range', date('D, d M Y H:i:s').' GMT');
-        $request->headers->set('Range', 'bytes=1-4');
-
-        $this->expectOutputString(file_get_contents(__DIR__.'/File/Fixtures/test.gif'));
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-        $this->assertNull($response->headers->get('Content-Range'));
-    }
-
-    /**
-     * @dataProvider provideFullFileRanges
-     */
-    public function testFullFileRequests($requestRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('Range', $requestRange);
-
-        $file = fopen(__DIR__.'/File/Fixtures/test.gif', 'r');
-        $data = fread($file, 35);
-        fclose($file);
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    public function provideFullFileRanges()
-    {
-        return [
-            ['bytes=0-'],
-            ['bytes=0-34'],
-            ['bytes=-35'],
-            // Syntactical invalid range-request should also return the full resource
-            ['bytes=20-10'],
-            ['bytes=50-40'],
-        ];
-    }
-
-    public function testUnpreparedResponseSendsFullFile()
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200);
-
-        $data = file_get_contents(__DIR__.'/File/Fixtures/test.gif');
-
-        $this->expectOutputString($data);
-        $response = clone $response;
-        $response->sendContent();
-
-        $this->assertEquals(200, $response->getStatusCode());
-    }
-
-    /**
-     * @dataProvider provideInvalidRanges
-     */
-    public function testInvalidRequests($requestRange)
-    {
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream'])->setAutoEtag();
-
-        // prepare a request for a range of the testing file
-        $request = Request::create('/');
-        $request->headers->set('Range', $requestRange);
-
-        $response = clone $response;
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertEquals(416, $response->getStatusCode());
-        $this->assertEquals('bytes */35', $response->headers->get('Content-Range'));
-    }
-
-    public function provideInvalidRanges()
-    {
-        return [
-            ['bytes=-40'],
-            ['bytes=30-40'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideXSendfileFiles
-     */
-    public function testXSendfile($file)
-    {
-        $request = Request::create('/');
-        $request->headers->set('X-Sendfile-Type', 'X-Sendfile');
-
-        BinaryFileResponse::trustXSendfileTypeHeader();
-        $response = BinaryFileResponse::create($file, 200, ['Content-Type' => 'application/octet-stream']);
-        $response->prepare($request);
-
-        $this->expectOutputString('');
-        $response->sendContent();
-
-        $this->assertStringContainsString('README.md', $response->headers->get('X-Sendfile'));
-    }
-
-    public function provideXSendfileFiles()
-    {
-        return [
-            [__DIR__.'/../README.md'],
-            ['file://'.__DIR__.'/../README.md'],
-        ];
-    }
-
-    /**
-     * @dataProvider getSampleXAccelMappings
-     */
-    public function testXAccelMapping($realpath, $mapping, $virtual)
-    {
-        $request = Request::create('/');
-        $request->headers->set('X-Sendfile-Type', 'X-Accel-Redirect');
-        $request->headers->set('X-Accel-Mapping', $mapping);
-
-        $file = new FakeFile($realpath, __DIR__.'/File/Fixtures/test');
-
-        BinaryFileResponse::trustXSendfileTypeHeader();
-        $response = new BinaryFileResponse($file, 200, ['Content-Type' => 'application/octet-stream']);
-        $reflection = new \ReflectionObject($response);
-        $property = $reflection->getProperty('file');
-        $property->setAccessible(true);
-        $property->setValue($response, $file);
-
-        $response->prepare($request);
-        $this->assertEquals($virtual, $response->headers->get('X-Accel-Redirect'));
-    }
-
-    public function testDeleteFileAfterSend()
-    {
-        $request = Request::create('/');
-
-        $path = __DIR__.'/File/Fixtures/to_delete';
-        touch($path);
-        $realPath = realpath($path);
-        $this->assertFileExists($realPath);
-
-        $response = new BinaryFileResponse($realPath, 200, ['Content-Type' => 'application/octet-stream']);
-        $response->deleteFileAfterSend(true);
-
-        $response->prepare($request);
-        $response->sendContent();
-
-        $this->assertFileNotExists($path);
-    }
-
-    public function testAcceptRangeOnUnsafeMethods()
-    {
-        $request = Request::create('/', 'POST');
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-        $response->prepare($request);
-
-        $this->assertEquals('none', $response->headers->get('Accept-Ranges'));
-    }
-
-    public function testAcceptRangeNotOverriden()
-    {
-        $request = Request::create('/', 'POST');
-        $response = BinaryFileResponse::create(__DIR__.'/File/Fixtures/test.gif', 200, ['Content-Type' => 'application/octet-stream']);
-        $response->headers->set('Accept-Ranges', 'foo');
-        $response->prepare($request);
-
-        $this->assertEquals('foo', $response->headers->get('Accept-Ranges'));
-    }
-
-    public function getSampleXAccelMappings()
-    {
-        return [
-            ['/var/www/var/www/files/foo.txt', '/var/www/=/files/', '/files/var/www/files/foo.txt'],
-            ['/home/Foo/bar.txt', '/var/www/=/files/,/home/Foo/=/baz/', '/baz/bar.txt'],
-            ['/home/Foo/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', '/baz/bar.txt'],
-            ['/tmp/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', null],
-        ];
-    }
-
-    public function testStream()
-    {
-        $request = Request::create('/');
-        $response = new BinaryFileResponse(new Stream(__DIR__.'/../README.md'), 200, ['Content-Type' => 'text/plain']);
-        $response->prepare($request);
-
-        $this->assertNull($response->headers->get('Content-Length'));
-    }
-
-    protected function provideResponse()
-    {
-        return new BinaryFileResponse(__DIR__.'/../README.md', 200, ['Content-Type' => 'application/octet-stream']);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/../Fixtures/to_delete';
-        if (file_exists($path)) {
-            @unlink($path);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/CookieTest.php b/vendor/symfony/http-foundation/Tests/CookieTest.php
deleted file mode 100644
index 55287e08..00000000
--- a/vendor/symfony/http-foundation/Tests/CookieTest.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-
-/**
- * CookieTest.
- *
- * @author John Kary <john@johnkary.net>
- * @author Hugo Hamon <hugo.hamon@sensio.com>
- *
- * @group time-sensitive
- */
-class CookieTest extends TestCase
-{
-    public function namesWithSpecialCharacters()
-    {
-        return [
-            [',MyName'],
-            [';MyName'],
-            [' MyName'],
-            ["\tMyName"],
-            ["\rMyName"],
-            ["\nMyName"],
-            ["\013MyName"],
-            ["\014MyName"],
-        ];
-    }
-
-    /**
-     * @dataProvider namesWithSpecialCharacters
-     */
-    public function testInstantiationThrowsExceptionIfRawCookieNameContainsSpecialCharacters($name)
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create($name, null, 0, null, null, null, false, true);
-    }
-
-    /**
-     * @dataProvider namesWithSpecialCharacters
-     */
-    public function testInstantiationSucceedNonRawCookieNameContainsSpecialCharacters($name)
-    {
-        $this->assertInstanceOf(Cookie::class, Cookie::create($name));
-    }
-
-    public function testInstantiationThrowsExceptionIfCookieNameIsEmpty()
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create('');
-    }
-
-    public function testInvalidExpiration()
-    {
-        $this->expectException('InvalidArgumentException');
-        Cookie::create('MyCookie', 'foo', 'bar');
-    }
-
-    public function testNegativeExpirationIsNotPossible()
-    {
-        $cookie = Cookie::create('foo', 'bar', -100);
-
-        $this->assertSame(0, $cookie->getExpiresTime());
-    }
-
-    public function testGetValue()
-    {
-        $value = 'MyValue';
-        $cookie = Cookie::create('MyCookie', $value);
-
-        $this->assertSame($value, $cookie->getValue(), '->getValue() returns the proper value');
-    }
-
-    public function testGetPath()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertSame('/', $cookie->getPath(), '->getPath() returns / as the default path');
-    }
-
-    public function testGetExpiresTime()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertEquals(0, $cookie->getExpiresTime(), '->getExpiresTime() returns the default expire date');
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() + 3600);
-
-        $this->assertEquals($expire, $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetExpiresTimeIsCastToInt()
-    {
-        $cookie = Cookie::create('foo', 'bar', 3600.9);
-
-        $this->assertSame(3600, $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date as an integer');
-    }
-
-    public function testConstructorWithDateTime()
-    {
-        $expire = new \DateTime();
-        $cookie = Cookie::create('foo', 'bar', $expire);
-
-        $this->assertEquals($expire->format('U'), $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testConstructorWithDateTimeImmutable()
-    {
-        $expire = new \DateTimeImmutable();
-        $cookie = Cookie::create('foo', 'bar', $expire);
-
-        $this->assertEquals($expire->format('U'), $cookie->getExpiresTime(), '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetExpiresTimeWithStringValue()
-    {
-        $value = '+1 day';
-        $cookie = Cookie::create('foo', 'bar', $value);
-        $expire = strtotime($value);
-
-        $this->assertEqualsWithDelta($expire, $cookie->getExpiresTime(), 1, '->getExpiresTime() returns the expire date');
-    }
-
-    public function testGetDomain()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com');
-
-        $this->assertEquals('.myfoodomain.com', $cookie->getDomain(), '->getDomain() returns the domain name on which the cookie is valid');
-    }
-
-    public function testIsSecure()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com', true);
-
-        $this->assertTrue($cookie->isSecure(), '->isSecure() returns whether the cookie is transmitted over HTTPS');
-    }
-
-    public function testIsHttpOnly()
-    {
-        $cookie = Cookie::create('foo', 'bar', 0, '/', '.myfoodomain.com', false, true);
-
-        $this->assertTrue($cookie->isHttpOnly(), '->isHttpOnly() returns whether the cookie is only transmitted over HTTP');
-    }
-
-    public function testCookieIsNotCleared()
-    {
-        $cookie = Cookie::create('foo', 'bar', time() + 3600 * 24);
-
-        $this->assertFalse($cookie->isCleared(), '->isCleared() returns false if the cookie did not expire yet');
-    }
-
-    public function testCookieIsCleared()
-    {
-        $cookie = Cookie::create('foo', 'bar', time() - 20);
-
-        $this->assertTrue($cookie->isCleared(), '->isCleared() returns true if the cookie has expired');
-
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isCleared());
-
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isCleared());
-
-        $cookie = Cookie::create('foo', 'bar', -1);
-
-        $this->assertFalse($cookie->isCleared());
-    }
-
-    public function testToString()
-    {
-        $cookie = Cookie::create('foo', 'bar', $expire = strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, false, null);
-        $this->assertEquals('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; Max-Age=0; path=/; domain=.myfoodomain.com; secure; httponly', (string) $cookie, '->__toString() returns string representation of the cookie');
-
-        $cookie = Cookie::create('foo', 'bar with white spaces', strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, false, null);
-        $this->assertEquals('foo=bar%20with%20white%20spaces; expires=Fri, 20-May-2011 15:25:52 GMT; Max-Age=0; path=/; domain=.myfoodomain.com; secure; httponly', (string) $cookie, '->__toString() encodes the value of the cookie according to RFC 3986 (white space = %20)');
-
-        $cookie = Cookie::create('foo', null, 1, '/admin/', '.myfoodomain.com', false, true, false, null);
-        $this->assertEquals('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', $expire = time() - 31536001).'; Max-Age=0; path=/admin/; domain=.myfoodomain.com; httponly', (string) $cookie, '->__toString() returns string representation of a cleared cookie if value is NULL');
-
-        $cookie = Cookie::create('foo', 'bar');
-        $this->assertEquals('foo=bar; path=/; httponly; samesite=lax', (string) $cookie);
-    }
-
-    public function testRawCookie()
-    {
-        $cookie = Cookie::create('foo', 'b a r', 0, '/', null, false, false, false, null);
-        $this->assertFalse($cookie->isRaw());
-        $this->assertEquals('foo=b%20a%20r; path=/', (string) $cookie);
-
-        $cookie = Cookie::create('foo', 'b+a+r', 0, '/', null, false, false, true, null);
-        $this->assertTrue($cookie->isRaw());
-        $this->assertEquals('foo=b+a+r; path=/', (string) $cookie);
-    }
-
-    public function testGetMaxAge()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-        $this->assertEquals(0, $cookie->getMaxAge());
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() + 100);
-        $this->assertEquals($expire - time(), $cookie->getMaxAge());
-
-        $cookie = Cookie::create('foo', 'bar', $expire = time() - 100);
-        $this->assertEquals(0, $cookie->getMaxAge());
-    }
-
-    public function testFromString()
-    {
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure; httponly');
-        $this->assertEquals(Cookie::create('foo', 'bar', strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true, true, true, null), $cookie);
-
-        $cookie = Cookie::fromString('foo=bar', true);
-        $this->assertEquals(Cookie::create('foo', 'bar', 0, '/', null, false, false, false, null), $cookie);
-
-        $cookie = Cookie::fromString('foo', true);
-        $this->assertEquals(Cookie::create('foo', null, 0, '/', null, false, false, false, null), $cookie);
-    }
-
-    public function testFromStringWithHttpOnly()
-    {
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure; httponly');
-        $this->assertTrue($cookie->isHttpOnly());
-
-        $cookie = Cookie::fromString('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure');
-        $this->assertFalse($cookie->isHttpOnly());
-    }
-
-    public function testSameSiteAttribute()
-    {
-        $cookie = new Cookie('foo', 'bar', 0, '/', null, false, true, false, 'Lax');
-        $this->assertEquals('lax', $cookie->getSameSite());
-
-        $cookie = new Cookie('foo', 'bar', 0, '/', null, false, true, false, '');
-        $this->assertNull($cookie->getSameSite());
-    }
-
-    public function testSetSecureDefault()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $this->assertFalse($cookie->isSecure());
-
-        $cookie->setSecureDefault(true);
-
-        $this->assertTrue($cookie->isSecure());
-
-        $cookie->setSecureDefault(false);
-
-        $this->assertFalse($cookie->isSecure());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php b/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php
deleted file mode 100644
index 8a389329..00000000
--- a/vendor/symfony/http-foundation/Tests/ExpressionRequestMatcherTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
-use Symfony\Component\HttpFoundation\ExpressionRequestMatcher;
-use Symfony\Component\HttpFoundation\Request;
-
-class ExpressionRequestMatcherTest extends TestCase
-{
-    public function testWhenNoExpressionIsSet()
-    {
-        $this->expectException('LogicException');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-        $expressionRequestMatcher->matches(new Request());
-    }
-
-    /**
-     * @dataProvider provideExpressions
-     */
-    public function testMatchesWhenParentMatchesIsTrue($expression, $expected)
-    {
-        $request = Request::create('/foo');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-
-        $expressionRequestMatcher->setExpression(new ExpressionLanguage(), $expression);
-        $this->assertSame($expected, $expressionRequestMatcher->matches($request));
-    }
-
-    /**
-     * @dataProvider provideExpressions
-     */
-    public function testMatchesWhenParentMatchesIsFalse($expression)
-    {
-        $request = Request::create('/foo');
-        $request->attributes->set('foo', 'foo');
-        $expressionRequestMatcher = new ExpressionRequestMatcher();
-        $expressionRequestMatcher->matchAttribute('foo', 'bar');
-
-        $expressionRequestMatcher->setExpression(new ExpressionLanguage(), $expression);
-        $this->assertFalse($expressionRequestMatcher->matches($request));
-    }
-
-    public function provideExpressions()
-    {
-        return [
-            ['request.getMethod() == method', true],
-            ['request.getPathInfo() == path', true],
-            ['request.getHost() == host', true],
-            ['request.getClientIp() == ip', true],
-            ['request.attributes.all() == attributes', true],
-            ['request.getMethod() == method && request.getPathInfo() == path && request.getHost() == host && request.getClientIp() == ip &&  request.attributes.all() == attributes', true],
-            ['request.getMethod() != method', false],
-            ['request.getMethod() != method && request.getPathInfo() == path && request.getHost() == host && request.getClientIp() == ip &&  request.attributes.all() == attributes', false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/FakeFile.php b/vendor/symfony/http-foundation/Tests/File/FakeFile.php
deleted file mode 100644
index c415989f..00000000
--- a/vendor/symfony/http-foundation/Tests/File/FakeFile.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use Symfony\Component\HttpFoundation\File\File as OrigFile;
-
-class FakeFile extends OrigFile
-{
-    private $realpath;
-
-    public function __construct($realpath, $path)
-    {
-        $this->realpath = $realpath;
-        parent::__construct($path, false);
-    }
-
-    public function isReadable()
-    {
-        return true;
-    }
-
-    public function getRealpath()
-    {
-        return $this->realpath;
-    }
-
-    public function getSize()
-    {
-        return 42;
-    }
-
-    public function getMTime()
-    {
-        return time();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/FileTest.php b/vendor/symfony/http-foundation/Tests/File/FileTest.php
deleted file mode 100644
index 2ef259ed..00000000
--- a/vendor/symfony/http-foundation/Tests/File/FileTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\File;
-
-/**
- * @requires extension fileinfo
- */
-class FileTest extends TestCase
-{
-    protected $file;
-
-    public function testGetMimeTypeUsesMimeTypeGuessers()
-    {
-        $file = new File(__DIR__.'/Fixtures/test.gif');
-        $this->assertEquals('image/gif', $file->getMimeType());
-    }
-
-    public function testGuessExtensionWithoutGuesser()
-    {
-        $file = new File(__DIR__.'/Fixtures/directory/.empty');
-        $this->assertNull($file->guessExtension());
-    }
-
-    public function testGuessExtensionIsBasedOnMimeType()
-    {
-        $file = new File(__DIR__.'/Fixtures/test');
-        $this->assertEquals('gif', $file->guessExtension());
-    }
-
-    public function testConstructWhenFileNotExists()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        new File(__DIR__.'/Fixtures/not_here');
-    }
-
-    public function testMove()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\File\File', $movedFile);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testMoveWithNewName()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.newname.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir, 'test.newname.gif');
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function getFilenameFixtures()
-    {
-        return [
-            ['original.gif', 'original.gif'],
-            ['..\\..\\original.gif', 'original.gif'],
-            ['../../original.gif', 'original.gif'],
-            ['файлfile.gif', 'файлfile.gif'],
-            ['..\\..\\файлfile.gif', 'файлfile.gif'],
-            ['../../файлfile.gif', 'файлfile.gif'],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilenameFixtures
-     */
-    public function testMoveWithNonLatinName($filename, $sanitizedFilename)
-    {
-        $path = __DIR__.'/Fixtures/'.$sanitizedFilename;
-        $targetDir = __DIR__.'/Fixtures/directory/';
-        $targetPath = $targetDir.$sanitizedFilename;
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new File($path);
-        $movedFile = $file->move($targetDir, $filename);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\File\File', $movedFile);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testMoveToAnUnexistentDirectory()
-    {
-        $sourcePath = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory/sub';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($sourcePath);
-        @unlink($targetPath);
-        @rmdir($targetDir);
-        copy(__DIR__.'/Fixtures/test.gif', $sourcePath);
-
-        $file = new File($sourcePath);
-        $movedFile = $file->move($targetDir);
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($sourcePath);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($sourcePath);
-        @unlink($targetPath);
-        @rmdir($targetDir);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension b/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension
deleted file mode 100644
index 4d1ae35b..00000000
--- a/vendor/symfony/http-foundation/Tests/File/Fixtures/.unknownextension
+++ /dev/null
@@ -1 +0,0 @@
-f
\ No newline at end of file
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm b/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm
deleted file mode 100644
index 94d85e6132c553225a1628f056151bee22f5b352..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4791
zcmaJ_by$;q7bYA%x^yBTjifNTk=Ou7hct}dMu}1)H4rK35NQxZL_|6iLAsH0l%O;y
zAfX`N_Qof#*ZX=ue{9#To%1};ea^YhIX@Vb@EkoJ2?+__b=!Ddyfe6f{eIhB*xC#3
z?k#)^<>h9FLb(auMz{;%etDYEOV%breeK{RS|lKAJR(Z`=4F*yeMPpyQQ{h{u6B*n
z*{FQR29E{Tx?QOQv8jFV-bQGgOaY+KlYru-m{AD`ztgML^bI(^ig14<lEGCLdIjT5
zJLHd&e3<0wnLrP^FQe_cNVFQ}1FY50b_fg1;1t+uIiGMnz5MaHx_n4TN<oM9WO0RT
zglxe8p{t_(>+X1YeKyEMF4N~R&w0F@TI(O9KU^{Q%+*e{J|iPM;uBli)XwJwO0^Qg
zpu{Bc1O#}^*jG%)$HRmDCkf1dl7M@CZ)Z5%$6NT14^bQsu}1Ip--}QOZJXTQo1M(V
z^t9Wi4<!%4+Qeaw--=DwO~cA>a!IoX2AS-<Ope@nRX$)IARS<wVcC+*KOOR%_GV9U
zQuwvptMvLPgZ;zG<J$uq>vfD4dFW)8S5>`7kyDrYUkKt^sNq-Zm@Qb`r0E0;<SzM!
zGC1!nIYYKqoNJyxrSPB;O5s<4B#zcC>A&D^i#W<*PG1%abL(59t#%7#hGF!MY7$c5
zyJlS;sC)~4;!m<<{IbhE1V{WW5fXKs{D(7yvvfoCi$_<G!h=pK`b2{e2e#`|@5UO#
z4obqCS*9KcdbAdDxOE_y1nyeL(%0$}<_(Mq9ugjq8%nAHo-6ns6NJgzEY;-hAlYvP
zX?9Aw!4jmY7XzM5^FgW<l0k++c=*!KQg*puGU6;P1<?k@@+HwKb{`F{D3uP`Cm*3&
z^^QmF8Jjs$*JA|ioHIEKb}j3EFn+a|-60$gNgZF0s8SBxPl(StB#jV~t7SOIcYR_*
z!{bA&D)FYi{=(E;flK=d$y;B^On3sYzaAcXyA^+spTSq|%M8sN%ZOMEFr~JV@Y-Bt
zvVBatyG+z6L^Ov60X{xB$8Tk(m=AU~z7hE`iN0b54bx;-YRv*KT{*g6vb_?ny?QVr
zyzqMP_0?%LnVg4@0F0TKyj-^}Ddm(0(@)DP>GhN$1&B+@^(=-*jCt=?plX+`^<*m;
zt6gl=fy3Sl4*Sn8Blp*3C2wfmGa5pQNxQwnOp9;W=%GM9?b^5a+aQOd-9G-09_|HS
z>7kkVUQsu<+Q1=UWHY{#a{HThOl)!%)INJ++0qiJ!a2SXESu^Qu))yA!RiZFxkhmC
zEf23bf563DU4L<*Tgxos?Rg=sMo`C#WdXrQWUJqJxM<PwV5!So!j*fdw6D;|q)!B|
z%o$JIQRtg*NaXvzB)i(hnm{428hPF~pWXBPVRU$(_k{#s_SY~2;%DK9RUjX!oIL9O
zH)>TErX0XDpt{=5?v=???!HrOwGfj~uTb1MB*4QnA^KhQQ2nf)zr`cgpc{!Tn&tz6
zbF&CRt2O3SLXDaPycz0}?u<lrMz?7Ct}o;Hr?WKhBED%=szfRBxuy(1bIc>RRhHML
zc}9J0wy)%1^+Ms(9UJQgGU=j&943G?bLBoEo2kv6nGc2i3Zwqp!$EL+V|K9jT&*8K
zqE>b0ZoX!zPX7b#7rO}iyG%6%ugt&cQEQ)Ml6T02*B`M`Sf+ABz8s*E;N4K7(2Q%J
zHO_zTUe6m5zFff`FWJvyMYkE=`|zmOWZF6=?Mq;=vwlyUS$7e@wR)sva7wc4fy@Ve
zv1jun3pyfO20!i&X=WIrA3j|)d)56TuC`dUX+k}4f~+3%NgaCrs(7TE1V=Q-sfojT
z%C&n=HMbsFhx708IacTQX6<&fSgVCF2ztn5#s<vEM_ERQW<^NS>?SzHZ|2&8NmtDI
zVy>CA=XtCxkr+OE`I!AwM+50}GGTzsy_Lvh+na1b1z_+MQ;xnE!H~h(<|xE#b1AwD
zf1h^@p}WXLg5IGEg0-``^PT5aTnlA04)=|1-TLJEOqqix?hPAB8za-e;p_bGRw<kk
z*{AwR^cf+#in@?KS!S9StlK5S;u$&x%GG2VVIml9qFV)D91@Tt$wX=8Nm+Y5-932&
zt6DNY7=b63<6%hQ>S^yj@bbl_9?u=Vrvb9AcZBbK6vidaWwG4hW31$&2!EG2z&{hm
z+sDrx?v2yh&2(i{mI!_4_ILW!ZGnVh7g>Cx_xD`VO3e*iMykUIiOMg4rgTByRu5uG
zLk!=gZd4jVglkUaPG{$+ZioV(88c{HH+12?79K{&dYNB8LsU=g(DqSa(<@C7hge%t
zE)DYWTaz!5uq^cG_eA}$yKFw;Q2Vv(k4i=pjn#6xGRbZyLXBt$RgG>p7$-YS>z36?
zemTi7q2czp7!6M`R4*_Tiogdohg<AQ5PE_;x)zXdBI6dAGQ+~;ebr}#?Y2T4=&K#N
zQK~1Qk4T6$ZQdAk7pat)s!3@b?+^Bb8jeNG&<-$0n~Cx;EXF4BY%V480(*U%z>U4n
zQ(VaXo~G~0ocl(6wHe`l!n_=G!aYgqX-a4Rn3j|RHjyJK(R2>KvCVe6PEn01TKx5r
zyGR~_ZCj;`!gs-gSc()LL$6Q$1EwLxV_|@S=6rl%df&6l1&LQ~sy98}HT{Cx-T{#P
z^<viagYT4u*ZGzYe4(dZl1~os8+xo!%EOfNg{Iq<6Av2jOWkHUM^s|WM|A64RMkf$
zoFX2t7|&-XqKk{=A3VJn>A(^NDV-$G-6X%#Kxac$X<M3t@fQ{Ifww?aF9PJ`1@s4%
zH|}?-jdP=&8Vt4N2H<VqI$^~PwIOxdtS&WRvnq;WN{(iu79+l3gA$uLnVSl=<Pyn|
zDdwoK1A9j=@m+LA^WgY!-`|&lV{u939#k4g+0(z5i_xa+?*AAJUIaed-V#%+>m>ee
zwP<qWwydgn>U_e2S#7RJ4x=h;DZeTQdvG!q^I7t{-vDvSjVtFRwS5YFN^RLCbwNwh
zZ!tY(9BvQ~aNEPJC}qVHYk60&O24m?U`jp*!hhr_N_-|;eCMWUe)g&SW?UKl>}{%s
ziy;HEM2I+wCJWT=+`~gjT&g#a*k@E?HIkP0cd1T}P4z!#tUu?f#MioSL@3bP0nz*i
z5;IC9dBu&|nvLw@mtJuqK`-wWw1@5NtI^R?#8$nD^Sl%M!>(vn8+m0`gd1vg&&cc^
zK{K~~P)U354^KZ~aDV=tw=_~3`Y2U?ulVbby}kwIp27g11PIy6t`2k<f7yP+0Z(2j
z(#z85me>!6s88W$8!@z=PR99@!RMO7br5b6NG;Zj{t8z=m~bSq`*uOJ3j#}|nrMM=
zG@0KlJgB~RZabOsJcWp+4ow>Sr>!o=(b_onljPpj^mMw0`cGaSc6&tqO|;=6PCfxT
zmxDC5w{jR*u3AIxn?E}4{X~bODI!xma|=tt0G6u%9>nOd|8PLr!@N))-oo}by?sy!
zoG!c^)j@@dFcW|Nt^inNxdAhzu%Q>1-KcC&3owZm536x`0y5j5F+r~kJB+>`O*;<W
zOaf;HkEeL&L$1EIp9fNV@bYjt9aD$R_-^Wk6aYU-SDY&mb$(2=yTs>jq@oXJeix@R
zFGEx$>P3{t&Gq#8rAau_ge=e1eFMgl%S)#2%-!|87^B3RC(5aTP}}T*UR>F6<k_9*
zvPjtX@oz;G_Cxc%Z!glnwDqHCsbcG|!UI&ak{L{>&W->h7uv5GgdZ2>RJ`d}14&iQ
zY!F5+PR|Cie{5M#ij~VS<5H~FyC-=mmtBRXN%vYM)2Rzpz<VnX)owk}Q6DJ~7mLgN
zM$dvr0X4A(42#<`f})B;O{#O@j|VnTev(ov3u)t+?x$Uqc~t71@(t{D`K7V`B2x8t
zxr{fnnm1psOG5Ab(afc*OF_z5O@8uQO{V!r1W;aZ9RDf$I@hu3+Po`JhH2chS1DMN
zAswQO(ux9x)J2S~6Cf^dZ8e+(j39wwn{EC30e<`Uvj=>QRuRe|y<R?24g4=kJ2FgF
z>4|CYFgetNY)R4rZlnfP#Hx-{Mm<JtZoume#<_ZTzmzA4lbRS*DI1a&p;5VZjt=KX
zLf6erC=g}jWz45`fFWLz3Ku|^7dpl_w8blWi8sTWr}Tp5K7n)zOa(v-1ZuFKEO4y!
zSOgAT=IMjXTfM%vh9|Q>K%(LP-goS+{JR0xk=l;Ms@gU3sUQa8#G+1R+KLeNrAG{!
zl$%6L5-p9^{aTEGg;>^@6A|+WJ+ZhXwma8Xa}KiS*(+}D!=Pvock?n4P2uV!<wle=
zb47$o<7hc?FoV05n3=dQ{&~$)_>_S~=?z3Th0q2~Ibf;wJ2`MrdcgB$`AO%_Z7(}N
z>J^^hN`@JPqw?HXQ8xK#U?4$f*tN7tW<aV3FV(_Sv*R4DT*w3%*^t;^egAE_P@fH!
zt%nCLR@n*Hak1*y4vglXeyL;gSlb|zG+at2R8<*McEz(c_t@Zr?o2Ju-RjN0{=va-
zQ+EQd%HCjMhtmaWAVKQ<pZT2^4_N%Rt=AYz#URg$fR|*vLbbsk(5*$(?0F#;455Q8
z(rj-fip*GEbz|t?GdWRoYh4lBbYa#gn3sOs9irjiX$rMf|9ruRWl(8H!-DloD~x4q
zFzBd2v7?QyiJ0lB8ude~9);ZMW=}R#mmENF%<u)S=bRihj%o8>ZvhaXaXIncj`2g6
zOA02NL$f9(gsOfE<n;P)FW!*TdAsJ{y($qm3PpYZ;fVTBVNkb@r6KUQ3m#5aZm6P=
zK5(RuwV|H}+}jezRdcdDmMd!X!H?)J0SHEnEj-azNkk=5?D9kl*!YAi=f+6zpmZKv
z2(RHaZM_cxIm=dN5c&0TK3{6RfQd>i2}gj`YKreVT3&Fg*A1K%x7MM6$0)vDX^Vg?
zpuLj?O+!+s=2sj(7BJkiTFfM7m$U;Od&#wY7->8wl)`s)vic6E<rrCXeblP5sWbC7
zMR1%=LhE6jnSX0(l<7y|@;a6szX<d_>X=lH;fBEFF&@7o?t$(*L^oJIhY~TL8b3^#
zB;Z^+u}_>SaXE1<;^GyqP32%flc;<Zas4uI+HomzO>spqbx2FZXz*!y!tk8*b8#gn
zl}1+W^nIew@otnu_MaBer;Ele9e#WG^%%RI{f%P6Vv6?g^t~^ctX`}OK40_Pb#q)f
z_ogiK3JM9nzLPKWJ7rC8A;6Jed~8E4hb10-4kzmP1oU`64;jvG-nc`Cf8xK79Den4
zb_c=j=|2I$-WluXU$^#Oy__9Lar??osA8Y}FE4*@FTWa}ZSlC7^(O+cixJlN=LGw!
z>Dji2n*n~piS!>6!LNpA)f$(*KM_avuRZct2WJ%oC+a^zO>x%2UlRYT`PsU{$;?kQ
qV=4H5kN!(^eziWE82^0wPn7>!i7+StOC=s2DfUvpYM%Wc_xvA{ir)|b

diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/directory/.empty b/vendor/symfony/http-foundation/Tests/File/Fixtures/directory/.empty
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/other-file.example b/vendor/symfony/http-foundation/Tests/File/Fixtures/other-file.example
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/test b/vendor/symfony/http-foundation/Tests/File/Fixtures/test
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35
jcmZ?wbh9u|WMp7uXkcLY4+c66KmZb9U}AD%WUvMRyAlZ1

diff --git a/vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif b/vendor/symfony/http-foundation/Tests/File/Fixtures/test.gif
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35
jcmZ?wbh9u|WMp7uXkcLY4+c66KmZb9U}AD%WUvMRyAlZ1

diff --git a/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php b/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php
deleted file mode 100644
index a43ce819..00000000
--- a/vendor/symfony/http-foundation/Tests/File/MimeType/MimeTypeTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File\MimeType;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser;
-use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
-
-/**
- * @requires extension fileinfo
- * @group legacy
- */
-class MimeTypeTest extends TestCase
-{
-    public function testGuessImageWithoutExtension()
-    {
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));
-    }
-
-    public function testGuessImageWithDirectory()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/directory');
-    }
-
-    public function testGuessImageWithFileBinaryMimeTypeGuesser()
-    {
-        $guesser = MimeTypeGuesser::getInstance();
-        $guesser->register(new FileBinaryMimeTypeGuesser());
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));
-    }
-
-    public function testGuessImageWithKnownExtension()
-    {
-        $this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test.gif'));
-    }
-
-    public function testGuessFileWithUnknownExtension()
-    {
-        $this->assertEquals('application/octet-stream', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/.unknownextension'));
-    }
-
-    public function testGuessWithIncorrectPath()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-        MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/not_here');
-    }
-
-    public function testGuessWithNonReadablePath()
-    {
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Can not verify chmod operations on Windows');
-        }
-
-        if (!getenv('USER') || 'root' === getenv('USER')) {
-            $this->markTestSkipped('This test will fail if run under superuser');
-        }
-
-        $path = __DIR__.'/../Fixtures/to_delete';
-        touch($path);
-        @chmod($path, 0333);
-
-        if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {
-            $this->expectException('Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException');
-            MimeTypeGuesser::getInstance()->guess($path);
-        } else {
-            $this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');
-        }
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/../Fixtures/to_delete';
-        if (file_exists($path)) {
-            @chmod($path, 0666);
-            @unlink($path);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php b/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php
deleted file mode 100644
index b31bfcb5..00000000
--- a/vendor/symfony/http-foundation/Tests/File/UploadedFileTest.php
+++ /dev/null
@@ -1,370 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\File;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\Exception\CannotWriteFileException;
-use Symfony\Component\HttpFoundation\File\Exception\ExtensionFileException;
-use Symfony\Component\HttpFoundation\File\Exception\FileException;
-use Symfony\Component\HttpFoundation\File\Exception\FormSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoFileException;
-use Symfony\Component\HttpFoundation\File\Exception\NoTmpDirFileException;
-use Symfony\Component\HttpFoundation\File\Exception\PartialFileException;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-
-class UploadedFileTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        if (!ini_get('file_uploads')) {
-            $this->markTestSkipped('file_uploads is disabled in php.ini');
-        }
-    }
-
-    public function testConstructWhenFileNotExists()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
-
-        new UploadedFile(
-            __DIR__.'/Fixtures/not_here',
-            'original.gif',
-            null
-        );
-    }
-
-    public function testFileUploadsWithNoMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertEquals('application/octet-stream', $file->getClientMimeType());
-
-        if (\extension_loaded('fileinfo')) {
-            $this->assertEquals('image/gif', $file->getMimeType());
-        }
-    }
-
-    public function testFileUploadsWithUnknownMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/.unknownextension',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertEquals('application/octet-stream', $file->getClientMimeType());
-    }
-
-    public function testGuessClientExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('gif', $file->guessClientExtension());
-    }
-
-    public function testGuessClientExtensionWithIncorrectMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/jpeg',
-            null
-        );
-
-        $this->assertEquals('jpeg', $file->guessClientExtension());
-    }
-
-    public function testCaseSensitiveMimeType()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/case-sensitive-mime-type.xlsm',
-            'test.xlsm',
-            'application/vnd.ms-excel.sheet.macroEnabled.12',
-            null
-        );
-
-        $this->assertEquals('xlsm', $file->guessClientExtension());
-    }
-
-    public function testErrorIsOkByDefault()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals(UPLOAD_ERR_OK, $file->getError());
-    }
-
-    public function testGetClientOriginalName()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('original.gif', $file->getClientOriginalName());
-    }
-
-    public function testGetClientOriginalExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            null
-        );
-
-        $this->assertEquals('gif', $file->getClientOriginalExtension());
-    }
-
-    public function testMoveLocalFileIsNotAllowed()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileException');
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            UPLOAD_ERR_OK
-        );
-
-        $movedFile = $file->move(__DIR__.'/Fixtures/directory');
-    }
-
-    public function failedUploadedFile()
-    {
-        foreach ([UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_FORM_SIZE, UPLOAD_ERR_PARTIAL, UPLOAD_ERR_NO_FILE, UPLOAD_ERR_CANT_WRITE, UPLOAD_ERR_NO_TMP_DIR, UPLOAD_ERR_EXTENSION, -1] as $error) {
-            yield [new UploadedFile(
-                __DIR__.'/Fixtures/test.gif',
-                'original.gif',
-                'image/gif',
-                $error
-            )];
-        }
-    }
-
-    /**
-     * @dataProvider failedUploadedFile
-     */
-    public function testMoveFailed(UploadedFile $file)
-    {
-        switch ($file->getError()) {
-            case UPLOAD_ERR_INI_SIZE:
-                $exceptionClass = IniSizeFileException::class;
-                break;
-            case UPLOAD_ERR_FORM_SIZE:
-                $exceptionClass = FormSizeFileException::class;
-                break;
-            case UPLOAD_ERR_PARTIAL:
-                $exceptionClass = PartialFileException::class;
-                break;
-            case UPLOAD_ERR_NO_FILE:
-                $exceptionClass = NoFileException::class;
-                break;
-            case UPLOAD_ERR_CANT_WRITE:
-                $exceptionClass = CannotWriteFileException::class;
-                break;
-            case UPLOAD_ERR_NO_TMP_DIR:
-                $exceptionClass = NoTmpDirFileException::class;
-                break;
-            case UPLOAD_ERR_EXTENSION:
-                $exceptionClass = ExtensionFileException::class;
-                break;
-            default:
-                $exceptionClass = FileException::class;
-        }
-
-        $this->expectException($exceptionClass);
-
-        $file->move(__DIR__.'/Fixtures/directory');
-    }
-
-    public function testMoveLocalFileIsAllowedInTestMode()
-    {
-        $path = __DIR__.'/Fixtures/test.copy.gif';
-        $targetDir = __DIR__.'/Fixtures/directory';
-        $targetPath = $targetDir.'/test.copy.gif';
-        @unlink($path);
-        @unlink($targetPath);
-        copy(__DIR__.'/Fixtures/test.gif', $path);
-
-        $file = new UploadedFile(
-            $path,
-            'original.gif',
-            'image/gif',
-            UPLOAD_ERR_OK,
-            true
-        );
-
-        $movedFile = $file->move(__DIR__.'/Fixtures/directory');
-
-        $this->assertFileExists($targetPath);
-        $this->assertFileNotExists($path);
-        $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
-
-        @unlink($targetPath);
-    }
-
-    public function testGetClientOriginalNameSanitizeFilename()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            '../../original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals('original.gif', $file->getClientOriginalName());
-    }
-
-    public function testGetSize()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test',
-            'original.gif',
-            'image/gif'
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test'), $file->getSize());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Passing a size as 4th argument to the constructor of "Symfony\Component\HttpFoundation\File\UploadedFile" is deprecated since Symfony 4.1.
-     */
-    public function testConstructDeprecatedSize()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            filesize(__DIR__.'/Fixtures/test.gif'),
-            UPLOAD_ERR_OK,
-            false
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Passing a size as 4th argument to the constructor of "Symfony\Component\HttpFoundation\File\UploadedFile" is deprecated since Symfony 4.1.
-     */
-    public function testConstructDeprecatedSizeWhenPassingOnlyThe4Needed()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            'image/gif',
-            filesize(__DIR__.'/Fixtures/test.gif')
-        );
-
-        $this->assertEquals(filesize(__DIR__.'/Fixtures/test.gif'), $file->getSize());
-    }
-
-    public function testGetExtension()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif'
-        );
-
-        $this->assertEquals('gif', $file->getExtension());
-    }
-
-    public function testIsValid()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK,
-            true
-        );
-
-        $this->assertTrue($file->isValid());
-    }
-
-    /**
-     * @dataProvider uploadedFileErrorProvider
-     */
-    public function testIsInvalidOnUploadError($error)
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            $error
-        );
-
-        $this->assertFalse($file->isValid());
-    }
-
-    public function uploadedFileErrorProvider()
-    {
-        return [
-            [UPLOAD_ERR_INI_SIZE],
-            [UPLOAD_ERR_FORM_SIZE],
-            [UPLOAD_ERR_PARTIAL],
-            [UPLOAD_ERR_NO_TMP_DIR],
-            [UPLOAD_ERR_EXTENSION],
-        ];
-    }
-
-    public function testIsInvalidIfNotHttpUpload()
-    {
-        $file = new UploadedFile(
-            __DIR__.'/Fixtures/test.gif',
-            'original.gif',
-            null,
-            UPLOAD_ERR_OK
-        );
-
-        $this->assertFalse($file->isValid());
-    }
-
-    public function testGetMaxFilesize()
-    {
-        $size = UploadedFile::getMaxFilesize();
-
-        $this->assertIsInt($size);
-        $this->assertGreaterThan(0, $size);
-
-        if (0 === (int) ini_get('post_max_size') && 0 === (int) ini_get('upload_max_filesize')) {
-            $this->assertSame(PHP_INT_MAX, $size);
-        } else {
-            $this->assertLessThan(PHP_INT_MAX, $size);
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/FileBagTest.php b/vendor/symfony/http-foundation/Tests/FileBagTest.php
deleted file mode 100644
index bde66419..00000000
--- a/vendor/symfony/http-foundation/Tests/FileBagTest.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\FileBag;
-
-/**
- * FileBagTest.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class FileBagTest extends TestCase
-{
-    public function testFileMustBeAnArrayOrUploadedFile()
-    {
-        $this->expectException('InvalidArgumentException');
-        new FileBag(['file' => 'foo']);
-    }
-
-    public function testShouldConvertsUploadedFiles()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag(['file' => [
-            'name' => basename($tmpFile),
-            'type' => 'text/plain',
-            'tmp_name' => $tmpFile,
-            'error' => 0,
-            'size' => null,
-        ]]);
-
-        $this->assertEquals($file, $bag->get('file'));
-    }
-
-    public function testShouldSetEmptyUploadedFilesToNull()
-    {
-        $bag = new FileBag(['file' => [
-            'name' => '',
-            'type' => '',
-            'tmp_name' => '',
-            'error' => UPLOAD_ERR_NO_FILE,
-            'size' => 0,
-        ]]);
-
-        $this->assertNull($bag->get('file'));
-    }
-
-    public function testShouldRemoveEmptyUploadedFilesForMultiUpload()
-    {
-        $bag = new FileBag(['files' => [
-            'name' => [''],
-            'type' => [''],
-            'tmp_name' => [''],
-            'error' => [UPLOAD_ERR_NO_FILE],
-            'size' => [0],
-        ]]);
-
-        $this->assertSame([], $bag->get('files'));
-    }
-
-    public function testShouldNotRemoveEmptyUploadedFilesForAssociativeArray()
-    {
-        $bag = new FileBag(['files' => [
-            'name' => ['file1' => ''],
-            'type' => ['file1' => ''],
-            'tmp_name' => ['file1' => ''],
-            'error' => ['file1' => UPLOAD_ERR_NO_FILE],
-            'size' => ['file1' => 0],
-        ]]);
-
-        $this->assertSame(['file1' => null], $bag->get('files'));
-    }
-
-    public function testShouldConvertUploadedFilesWithPhpBug()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag([
-            'child' => [
-                'name' => [
-                    'file' => basename($tmpFile),
-                ],
-                'type' => [
-                    'file' => 'text/plain',
-                ],
-                'tmp_name' => [
-                    'file' => $tmpFile,
-                ],
-                'error' => [
-                    'file' => 0,
-                ],
-                'size' => [
-                    'file' => null,
-                ],
-            ],
-        ]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['child']['file']);
-    }
-
-    public function testShouldConvertNestedUploadedFilesWithPhpBug()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-
-        $bag = new FileBag([
-            'child' => [
-                'name' => [
-                    'sub' => ['file' => basename($tmpFile)],
-                ],
-                'type' => [
-                    'sub' => ['file' => 'text/plain'],
-                ],
-                'tmp_name' => [
-                    'sub' => ['file' => $tmpFile],
-                ],
-                'error' => [
-                    'sub' => ['file' => 0],
-                ],
-                'size' => [
-                    'sub' => ['file' => null],
-                ],
-            ],
-        ]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['child']['sub']['file']);
-    }
-
-    public function testShouldNotConvertNestedUploadedFiles()
-    {
-        $tmpFile = $this->createTempFile();
-        $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain');
-        $bag = new FileBag(['image' => ['file' => $file]]);
-
-        $files = $bag->all();
-        $this->assertEquals($file, $files['image']['file']);
-    }
-
-    protected function createTempFile()
-    {
-        $tempFile = tempnam(sys_get_temp_dir().'/form_test', 'FormTest');
-        file_put_contents($tempFile, '1');
-
-        return $tempFile;
-    }
-
-    protected function setUp(): void
-    {
-        mkdir(sys_get_temp_dir().'/form_test', 0777, true);
-    }
-
-    protected function tearDown(): void
-    {
-        foreach (glob(sys_get_temp_dir().'/form_test/*') as $file) {
-            unlink($file);
-        }
-
-        rmdir(sys_get_temp_dir().'/form_test');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc
deleted file mode 100644
index 0bdf9e4b..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/common.inc
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Response;
-
-$parent = __DIR__;
-while (!@file_exists($parent.'/vendor/autoload.php')) {
-    if (!@file_exists($parent)) {
-        // open_basedir restriction in effect
-        break;
-    }
-    if ($parent === dirname($parent)) {
-        echo "vendor/autoload.php not found\n";
-        exit(1);
-    }
-
-    $parent = dirname($parent);
-}
-
-require $parent.'/vendor/autoload.php';
-
-error_reporting(-1);
-ini_set('html_errors', 0);
-ini_set('display_errors', 1);
-
-if (filter_var(ini_get('xdebug.default_enable'), FILTER_VALIDATE_BOOLEAN)) {
-    xdebug_disable();
-}
-
-header_remove('X-Powered-By');
-header('Content-Type: text/plain; charset=utf-8');
-
-register_shutdown_function(function () {
-    echo "\n";
-    session_write_close();
-    print_r(headers_list());
-    echo "shutdown\n";
-});
-ob_start();
-
-$r = new Response();
-$r->headers->set('Date', 'Sat, 12 Nov 1955 20:04:00 GMT');
-
-return $r;
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected
deleted file mode 100644
index bdb9d023..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.expected
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Warning: Expiry date cannot have a year greater than 9999 in %scookie_max_age.php on line 10
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: foo=bar; expires=Sat, 01-Jan-10000 02:46:40 GMT; Max-Age=%d; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php
deleted file mode 100644
index e18ce525..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_max_age.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('foo', 'bar', 253402310800, '', null, false, false, false, null));
-$r->sendHeaders();
-
-setcookie('foo2', 'bar', 253402310800, '/');
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected
deleted file mode 100644
index 0c097972..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.expected
+++ /dev/null
@@ -1,10 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: ?*():@&+$/%#[]=?*():@&+$/%#[]; path=/
-    [4] => Set-Cookie: ?*():@&+$/%#[]=?*():@&+$/%#[]; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
deleted file mode 100644
index 00c022d9..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$str = '?*():@&+$/%#[]';
-
-$r->headers->setCookie(new Cookie($str, $str, 0, '/', null, false, false, true, null));
-$r->sendHeaders();
-
-setrawcookie($str, $str, 0, '/', null, false, false);
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected
deleted file mode 100644
index cbde2cbf..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.expected
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: CookieSamesiteLaxTest=LaxValue; path=/; httponly; samesite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php
deleted file mode 100644
index 9a476f1d..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_lax.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('CookieSamesiteLaxTest', 'LaxValue', 0, '/', null, false, true, false, Cookie::SAMESITE_LAX));
-$r->sendHeaders();
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected
deleted file mode 100644
index adc491fd..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.expected
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: CookieSamesiteStrictTest=StrictValue; path=/; httponly; samesite=strict
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php
deleted file mode 100644
index 3bcb41f8..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_samesite_strict.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$r->headers->setCookie(new Cookie('CookieSamesiteStrictTest', 'StrictValue', 0, '/', null, false, true, false, Cookie::SAMESITE_STRICT));
-$r->sendHeaders();
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected
deleted file mode 100644
index 17a9efc6..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.expected
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: no-cache, private
-    [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT
-    [3] => Set-Cookie: %3D%2C%3B%20%09%0D%0A%0B%0C=%3D%2C%3B%20%09%0D%0A%0B%0C; path=/
-    [4] => Set-Cookie: ?*():@&+$/%#[]=%3F%2A%28%29%3A%40%26%2B%24%2F%25%23%5B%5D; path=/
-    [5] => Set-Cookie: ?*():@&+$/%#[]=%3F%2A%28%29%3A%40%26%2B%24%2F%25%23%5B%5D; path=/
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php
deleted file mode 100644
index 9ffb0dfe..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_urlencode.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-$str1 = "=,; \t\r\n\v\f";
-$r->headers->setCookie(new Cookie($str1, $str1, 0, '', null, false, false, false, null));
-
-$str2 = '?*():@&+$/%#[]';
-
-$r->headers->setCookie(new Cookie($str2, $str2, 0, '', null, false, false, false, null));
-$r->sendHeaders();
-
-setcookie($str2, $str2, 0, '/');
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected
deleted file mode 100644
index 2b560f0b..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.expected
+++ /dev/null
@@ -1,6 +0,0 @@
-The cookie name "Hello + world" contains invalid characters.
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php b/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php
deleted file mode 100644
index 3acf8603..00000000
--- a/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/invalid_cookie_name.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Cookie;
-
-$r = require __DIR__.'/common.inc';
-
-try {
-    $r->headers->setCookie(new Cookie('Hello + world', 'hodor', 0, null, null, null, false, true));
-} catch (\InvalidArgumentException $e) {
-    echo $e->getMessage();
-}
diff --git a/vendor/symfony/http-foundation/Tests/HeaderBagTest.php b/vendor/symfony/http-foundation/Tests/HeaderBagTest.php
deleted file mode 100644
index dcc266f6..00000000
--- a/vendor/symfony/http-foundation/Tests/HeaderBagTest.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\HeaderBag;
-
-class HeaderBagTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertTrue($bag->has('foo'));
-    }
-
-    public function testToStringNull()
-    {
-        $bag = new HeaderBag();
-        $this->assertEquals('', $bag->__toString());
-    }
-
-    public function testToStringNotNull()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertEquals("Foo: bar\r\n", $bag->__toString());
-    }
-
-    public function testKeys()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $keys = $bag->keys();
-        $this->assertEquals('foo', $keys[0]);
-    }
-
-    public function testGetDate()
-    {
-        $bag = new HeaderBag(['foo' => 'Tue, 4 Sep 2012 20:00:00 +0200']);
-        $headerDate = $bag->getDate('foo');
-        $this->assertInstanceOf('DateTime', $headerDate);
-    }
-
-    public function testGetDateNull()
-    {
-        $bag = new HeaderBag(['foo' => null]);
-        $headerDate = $bag->getDate('foo');
-        $this->assertNull($headerDate);
-    }
-
-    public function testGetDateException()
-    {
-        $this->expectException('RuntimeException');
-        $bag = new HeaderBag(['foo' => 'Tue']);
-        $headerDate = $bag->getDate('foo');
-    }
-
-    public function testGetCacheControlHeader()
-    {
-        $bag = new HeaderBag();
-        $bag->addCacheControlDirective('public', '#a');
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertEquals('#a', $bag->getCacheControlDirective('public'));
-    }
-
-    public function testAll()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-        $this->assertEquals(['foo' => ['bar']], $bag->all(), '->all() gets all the input');
-
-        $bag = new HeaderBag(['FOO' => 'BAR']);
-        $this->assertEquals(['foo' => ['BAR']], $bag->all(), '->all() gets all the input key are lower case');
-    }
-
-    public function testReplace()
-    {
-        $bag = new HeaderBag(['foo' => 'bar']);
-
-        $bag->replace(['NOPE' => 'BAR']);
-        $this->assertEquals(['nope' => ['BAR']], $bag->all(), '->replace() replaces the input with the argument');
-        $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input');
-    }
-
-    public function testGet()
-    {
-        $bag = new HeaderBag(['foo' => 'bar', 'fuzz' => 'bizz']);
-        $this->assertEquals('bar', $bag->get('foo'), '->get return current value');
-        $this->assertEquals('bar', $bag->get('FoO'), '->get key in case insensitive');
-        $this->assertEquals(['bar'], $bag->get('foo', 'nope', false), '->get return the value as array');
-
-        // defaults
-        $this->assertNull($bag->get('none'), '->get unknown values returns null');
-        $this->assertEquals('default', $bag->get('none', 'default'), '->get unknown values returns default');
-        $this->assertEquals(['default'], $bag->get('none', 'default', false), '->get unknown values returns default as array');
-
-        $bag->set('foo', 'bor', false);
-        $this->assertEquals('bar', $bag->get('foo'), '->get return first value');
-        $this->assertEquals(['bar', 'bor'], $bag->get('foo', 'nope', false), '->get return all values as array');
-
-        $bag->set('baz', null);
-        $this->assertNull($bag->get('baz', 'nope'), '->get return null although different default value is given');
-    }
-
-    public function testSetAssociativeArray()
-    {
-        $bag = new HeaderBag();
-        $bag->set('foo', ['bad-assoc-index' => 'value']);
-        $this->assertSame('value', $bag->get('foo'));
-        $this->assertEquals(['value'], $bag->get('foo', 'nope', false), 'assoc indices of multi-valued headers are ignored');
-    }
-
-    public function testContains()
-    {
-        $bag = new HeaderBag(['foo' => 'bar', 'fuzz' => 'bizz']);
-        $this->assertTrue($bag->contains('foo', 'bar'), '->contains first value');
-        $this->assertTrue($bag->contains('fuzz', 'bizz'), '->contains second value');
-        $this->assertFalse($bag->contains('nope', 'nope'), '->contains unknown value');
-        $this->assertFalse($bag->contains('foo', 'nope'), '->contains unknown value');
-
-        // Multiple values
-        $bag->set('foo', 'bor', false);
-        $this->assertTrue($bag->contains('foo', 'bar'), '->contains first value');
-        $this->assertTrue($bag->contains('foo', 'bor'), '->contains second value');
-        $this->assertFalse($bag->contains('foo', 'nope'), '->contains unknown value');
-    }
-
-    public function testCacheControlDirectiveAccessors()
-    {
-        $bag = new HeaderBag();
-        $bag->addCacheControlDirective('public');
-
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-        $this->assertEquals('public', $bag->get('cache-control'));
-
-        $bag->addCacheControlDirective('max-age', 10);
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-        $this->assertEquals('max-age=10, public', $bag->get('cache-control'));
-
-        $bag->removeCacheControlDirective('max-age');
-        $this->assertFalse($bag->hasCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlDirectiveParsing()
-    {
-        $bag = new HeaderBag(['cache-control' => 'public, max-age=10']);
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-
-        $bag->addCacheControlDirective('s-maxage', 100);
-        $this->assertEquals('max-age=10, public, s-maxage=100', $bag->get('cache-control'));
-    }
-
-    public function testCacheControlDirectiveParsingQuotedZero()
-    {
-        $bag = new HeaderBag(['cache-control' => 'max-age="0"']);
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(0, $bag->getCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlDirectiveOverrideWithReplace()
-    {
-        $bag = new HeaderBag(['cache-control' => 'private, max-age=100']);
-        $bag->replace(['cache-control' => 'public, max-age=10']);
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-        $this->assertTrue($bag->getCacheControlDirective('public'));
-
-        $this->assertTrue($bag->hasCacheControlDirective('max-age'));
-        $this->assertEquals(10, $bag->getCacheControlDirective('max-age'));
-    }
-
-    public function testCacheControlClone()
-    {
-        $headers = ['foo' => 'bar'];
-        $bag1 = new HeaderBag($headers);
-        $bag2 = new HeaderBag($bag1->all());
-
-        $this->assertEquals($bag1->all(), $bag2->all());
-    }
-
-    public function testGetIterator()
-    {
-        $headers = ['foo' => 'bar', 'hello' => 'world', 'third' => 'charm'];
-        $headerBag = new HeaderBag($headers);
-
-        $i = 0;
-        foreach ($headerBag as $key => $val) {
-            ++$i;
-            $this->assertEquals([$headers[$key]], $val);
-        }
-
-        $this->assertEquals(\count($headers), $i);
-    }
-
-    public function testCount()
-    {
-        $headers = ['foo' => 'bar', 'HELLO' => 'WORLD'];
-        $headerBag = new HeaderBag($headers);
-
-        $this->assertCount(\count($headers), $headerBag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php b/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php
deleted file mode 100644
index d2b19ca8..00000000
--- a/vendor/symfony/http-foundation/Tests/HeaderUtilsTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\HeaderUtils;
-
-class HeaderUtilsTest extends TestCase
-{
-    public function testSplit()
-    {
-        $this->assertSame(['foo=123', 'bar'], HeaderUtils::split('foo=123,bar', ','));
-        $this->assertSame(['foo=123', 'bar'], HeaderUtils::split('foo=123, bar', ','));
-        $this->assertSame([['foo=123', 'bar']], HeaderUtils::split('foo=123; bar', ',;'));
-        $this->assertSame([['foo=123'], ['bar']], HeaderUtils::split('foo=123, bar', ',;'));
-        $this->assertSame(['foo', '123, bar'], HeaderUtils::split('foo=123, bar', '='));
-        $this->assertSame(['foo', '123, bar'], HeaderUtils::split(' foo = 123, bar ', '='));
-        $this->assertSame([['foo', '123'], ['bar']], HeaderUtils::split('foo=123, bar', ',='));
-        $this->assertSame([[['foo', '123']], [['bar'], ['foo', '456']]], HeaderUtils::split('foo=123, bar; foo=456', ',;='));
-        $this->assertSame([[['foo', 'a,b;c=d']]], HeaderUtils::split('foo="a,b;c=d"', ',;='));
-
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split('foo,,,, bar', ','));
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split(',foo, bar,', ','));
-        $this->assertSame(['foo', 'bar'], HeaderUtils::split(' , foo, bar, ', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('foo "bar"', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('"foo" bar', ','));
-        $this->assertSame(['foo bar'], HeaderUtils::split('"foo" "bar"', ','));
-
-        // These are not a valid header values. We test that they parse anyway,
-        // and that both the valid and invalid parts are returned.
-        $this->assertSame([], HeaderUtils::split('', ','));
-        $this->assertSame([], HeaderUtils::split(',,,', ','));
-        $this->assertSame(['foo', 'bar', 'baz'], HeaderUtils::split('foo, "bar", "baz', ','));
-        $this->assertSame(['foo', 'bar, baz'], HeaderUtils::split('foo, "bar, baz', ','));
-        $this->assertSame(['foo', 'bar, baz\\'], HeaderUtils::split('foo, "bar, baz\\', ','));
-        $this->assertSame(['foo', 'bar, baz\\'], HeaderUtils::split('foo, "bar, baz\\\\', ','));
-    }
-
-    public function testCombine()
-    {
-        $this->assertSame(['foo' => '123'], HeaderUtils::combine([['foo', '123']]));
-        $this->assertSame(['foo' => true], HeaderUtils::combine([['foo']]));
-        $this->assertSame(['foo' => true], HeaderUtils::combine([['Foo']]));
-        $this->assertSame(['foo' => '123', 'bar' => true], HeaderUtils::combine([['foo', '123'], ['bar']]));
-    }
-
-    public function testToString()
-    {
-        $this->assertSame('foo', HeaderUtils::toString(['foo' => true], ','));
-        $this->assertSame('foo; bar', HeaderUtils::toString(['foo' => true, 'bar' => true], ';'));
-        $this->assertSame('foo=123', HeaderUtils::toString(['foo' => '123'], ','));
-        $this->assertSame('foo="1 2 3"', HeaderUtils::toString(['foo' => '1 2 3'], ','));
-        $this->assertSame('foo="1 2 3", bar', HeaderUtils::toString(['foo' => '1 2 3', 'bar' => true], ','));
-    }
-
-    public function testQuote()
-    {
-        $this->assertSame('foo', HeaderUtils::quote('foo'));
-        $this->assertSame('az09!#$%&\'*.^_`|~-', HeaderUtils::quote('az09!#$%&\'*.^_`|~-'));
-        $this->assertSame('"foo bar"', HeaderUtils::quote('foo bar'));
-        $this->assertSame('"foo [bar]"', HeaderUtils::quote('foo [bar]'));
-        $this->assertSame('"foo \"bar\""', HeaderUtils::quote('foo "bar"'));
-        $this->assertSame('"foo \\\\ bar"', HeaderUtils::quote('foo \\ bar'));
-    }
-
-    public function testUnquote()
-    {
-        $this->assertEquals('foo', HeaderUtils::unquote('foo'));
-        $this->assertEquals('az09!#$%&\'*.^_`|~-', HeaderUtils::unquote('az09!#$%&\'*.^_`|~-'));
-        $this->assertEquals('foo bar', HeaderUtils::unquote('"foo bar"'));
-        $this->assertEquals('foo [bar]', HeaderUtils::unquote('"foo [bar]"'));
-        $this->assertEquals('foo "bar"', HeaderUtils::unquote('"foo \"bar\""'));
-        $this->assertEquals('foo "bar"', HeaderUtils::unquote('"foo \"\b\a\r\""'));
-        $this->assertEquals('foo \\ bar', HeaderUtils::unquote('"foo \\\\ bar"'));
-    }
-
-    public function testMakeDispositionInvalidDisposition()
-    {
-        $this->expectException('InvalidArgumentException');
-        HeaderUtils::makeDisposition('invalid', 'foo.html');
-    }
-
-    /**
-     * @dataProvider provideMakeDisposition
-     */
-    public function testMakeDisposition($disposition, $filename, $filenameFallback, $expected)
-    {
-        $this->assertEquals($expected, HeaderUtils::makeDisposition($disposition, $filename, $filenameFallback));
-    }
-
-    public function provideMakeDisposition()
-    {
-        return [
-            ['attachment', 'foo.html', 'foo.html', 'attachment; filename=foo.html'],
-            ['attachment', 'foo.html', '', 'attachment; filename=foo.html'],
-            ['attachment', 'foo bar.html', '', 'attachment; filename="foo bar.html"'],
-            ['attachment', 'foo "bar".html', '', 'attachment; filename="foo \\"bar\\".html"'],
-            ['attachment', 'foo%20bar.html', 'foo bar.html', 'attachment; filename="foo bar.html"; filename*=utf-8\'\'foo%2520bar.html'],
-            ['attachment', 'föö.html', 'foo.html', 'attachment; filename=foo.html; filename*=utf-8\'\'f%C3%B6%C3%B6.html'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideMakeDispositionFail
-     */
-    public function testMakeDispositionFail($disposition, $filename)
-    {
-        $this->expectException('InvalidArgumentException');
-        HeaderUtils::makeDisposition($disposition, $filename);
-    }
-
-    public function provideMakeDispositionFail()
-    {
-        return [
-            ['attachment', 'foo%20bar.html'],
-            ['attachment', 'foo/bar.html'],
-            ['attachment', '/foo.html'],
-            ['attachment', 'foo\bar.html'],
-            ['attachment', '\foo.html'],
-            ['attachment', 'föö.html'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/IpUtilsTest.php b/vendor/symfony/http-foundation/Tests/IpUtilsTest.php
deleted file mode 100644
index d3b262e0..00000000
--- a/vendor/symfony/http-foundation/Tests/IpUtilsTest.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\IpUtils;
-
-class IpUtilsTest extends TestCase
-{
-    /**
-     * @dataProvider getIpv4Data
-     */
-    public function testIpv4($matches, $remoteAddr, $cidr)
-    {
-        $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr));
-    }
-
-    public function getIpv4Data()
-    {
-        return [
-            [true, '192.168.1.1', '192.168.1.1'],
-            [true, '192.168.1.1', '192.168.1.1/1'],
-            [true, '192.168.1.1', '192.168.1.0/24'],
-            [false, '192.168.1.1', '1.2.3.4/1'],
-            [false, '192.168.1.1', '192.168.1.1/33'], // invalid subnet
-            [true, '192.168.1.1', ['1.2.3.4/1', '192.168.1.0/24']],
-            [true, '192.168.1.1', ['192.168.1.0/24', '1.2.3.4/1']],
-            [false, '192.168.1.1', ['1.2.3.4/1', '4.3.2.1/1']],
-            [true, '1.2.3.4', '0.0.0.0/0'],
-            [true, '1.2.3.4', '192.168.1.0/0'],
-            [false, '1.2.3.4', '256.256.256/0'], // invalid CIDR notation
-            [false, 'an_invalid_ip', '192.168.1.0/24'],
-        ];
-    }
-
-    /**
-     * @dataProvider getIpv6Data
-     */
-    public function testIpv6($matches, $remoteAddr, $cidr)
-    {
-        if (!\defined('AF_INET6')) {
-            $this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".');
-        }
-
-        $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr));
-    }
-
-    public function getIpv6Data()
-    {
-        return [
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'],
-            [false, '2a00:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', '::1'],
-            [true, '0:0:0:0:0:0:0:1', '::1'],
-            [false, '0:0:603:0:396e:4789:8e99:0001', '::1'],
-            [true, '0:0:603:0:396e:4789:8e99:0001', '::/0'],
-            [true, '0:0:603:0:396e:4789:8e99:0001', '2a01:198:603:0::/0'],
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '2a01:198:603:0::/65']],
-            [true, '2a01:198:603:0:396e:4789:8e99:890f', ['2a01:198:603:0::/65', '::1']],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '1a01:198:603:0::/65']],
-            [false, '}__test|O:21:&quot;JDatabaseDriverMysqli&quot;:3:{s:2', '::1'],
-            [false, '2a01:198:603:0:396e:4789:8e99:890f', 'unknown'],
-        ];
-    }
-
-    /**
-     * @requires extension sockets
-     */
-    public function testAnIpv6WithOptionDisabledIpv6()
-    {
-        $this->expectException('RuntimeException');
-        if (\defined('AF_INET6')) {
-            $this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".');
-        }
-
-        IpUtils::checkIp('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65');
-    }
-
-    /**
-     * @dataProvider invalidIpAddressData
-     */
-    public function testInvalidIpAddressesDoNotMatch($requestIp, $proxyIp)
-    {
-        $this->assertFalse(IpUtils::checkIp4($requestIp, $proxyIp));
-    }
-
-    public function invalidIpAddressData()
-    {
-        return [
-            'invalid proxy wildcard' => ['192.168.20.13', '*'],
-            'invalid proxy missing netmask' => ['192.168.20.13', '0.0.0.0'],
-            'invalid request IP with invalid proxy wildcard' => ['0.0.0.0', '*'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/JsonResponseTest.php b/vendor/symfony/http-foundation/Tests/JsonResponseTest.php
deleted file mode 100644
index aa844179..00000000
--- a/vendor/symfony/http-foundation/Tests/JsonResponseTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\JsonResponse;
-
-class JsonResponseTest extends TestCase
-{
-    public function testConstructorEmptyCreatesJsonObject()
-    {
-        $response = new JsonResponse();
-        $this->assertSame('{}', $response->getContent());
-    }
-
-    public function testConstructorWithArrayCreatesJsonArray()
-    {
-        $response = new JsonResponse([0, 1, 2, 3]);
-        $this->assertSame('[0,1,2,3]', $response->getContent());
-    }
-
-    public function testConstructorWithAssocArrayCreatesJsonObject()
-    {
-        $response = new JsonResponse(['foo' => 'bar']);
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testConstructorWithSimpleTypes()
-    {
-        $response = new JsonResponse('foo');
-        $this->assertSame('"foo"', $response->getContent());
-
-        $response = new JsonResponse(0);
-        $this->assertSame('0', $response->getContent());
-
-        $response = new JsonResponse(0.1);
-        $this->assertEquals(0.1, $response->getContent());
-        $this->assertIsString($response->getContent());
-
-        $response = new JsonResponse(true);
-        $this->assertSame('true', $response->getContent());
-    }
-
-    public function testConstructorWithCustomStatus()
-    {
-        $response = new JsonResponse([], 202);
-        $this->assertSame(202, $response->getStatusCode());
-    }
-
-    public function testConstructorAddsContentTypeHeader()
-    {
-        $response = new JsonResponse();
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-    }
-
-    public function testConstructorWithCustomHeaders()
-    {
-        $response = new JsonResponse([], 200, ['ETag' => 'foo']);
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-        $this->assertSame('foo', $response->headers->get('ETag'));
-    }
-
-    public function testConstructorWithCustomContentType()
-    {
-        $headers = ['Content-Type' => 'application/vnd.acme.blog-v1+json'];
-
-        $response = new JsonResponse([], 200, $headers);
-        $this->assertSame('application/vnd.acme.blog-v1+json', $response->headers->get('Content-Type'));
-    }
-
-    public function testSetJson()
-    {
-        $response = new JsonResponse('1', 200, [], true);
-        $this->assertEquals('1', $response->getContent());
-
-        $response = new JsonResponse('[1]', 200, [], true);
-        $this->assertEquals('[1]', $response->getContent());
-
-        $response = new JsonResponse(null, 200, []);
-        $response->setJson('true');
-        $this->assertEquals('true', $response->getContent());
-    }
-
-    public function testCreate()
-    {
-        $response = JsonResponse::create(['foo' => 'bar'], 204);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertEquals('{"foo":"bar"}', $response->getContent());
-        $this->assertEquals(204, $response->getStatusCode());
-    }
-
-    public function testStaticCreateEmptyJsonObject()
-    {
-        $response = JsonResponse::create();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('{}', $response->getContent());
-    }
-
-    public function testStaticCreateJsonArray()
-    {
-        $response = JsonResponse::create([0, 1, 2, 3]);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('[0,1,2,3]', $response->getContent());
-    }
-
-    public function testStaticCreateJsonObject()
-    {
-        $response = JsonResponse::create(['foo' => 'bar']);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testStaticCreateWithSimpleTypes()
-    {
-        $response = JsonResponse::create('foo');
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('"foo"', $response->getContent());
-
-        $response = JsonResponse::create(0);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('0', $response->getContent());
-
-        $response = JsonResponse::create(0.1);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertEquals(0.1, $response->getContent());
-        $this->assertIsString($response->getContent());
-
-        $response = JsonResponse::create(true);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
-        $this->assertSame('true', $response->getContent());
-    }
-
-    public function testStaticCreateWithCustomStatus()
-    {
-        $response = JsonResponse::create([], 202);
-        $this->assertSame(202, $response->getStatusCode());
-    }
-
-    public function testStaticCreateAddsContentTypeHeader()
-    {
-        $response = JsonResponse::create();
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-    }
-
-    public function testStaticCreateWithCustomHeaders()
-    {
-        $response = JsonResponse::create([], 200, ['ETag' => 'foo']);
-        $this->assertSame('application/json', $response->headers->get('Content-Type'));
-        $this->assertSame('foo', $response->headers->get('ETag'));
-    }
-
-    public function testStaticCreateWithCustomContentType()
-    {
-        $headers = ['Content-Type' => 'application/vnd.acme.blog-v1+json'];
-
-        $response = JsonResponse::create([], 200, $headers);
-        $this->assertSame('application/vnd.acme.blog-v1+json', $response->headers->get('Content-Type'));
-    }
-
-    public function testSetCallback()
-    {
-        $response = JsonResponse::create(['foo' => 'bar'])->setCallback('callback');
-
-        $this->assertEquals('/**/callback({"foo":"bar"});', $response->getContent());
-        $this->assertEquals('text/javascript', $response->headers->get('Content-Type'));
-    }
-
-    public function testJsonEncodeFlags()
-    {
-        $response = new JsonResponse('<>\'&"');
-
-        $this->assertEquals('"\u003C\u003E\u0027\u0026\u0022"', $response->getContent());
-    }
-
-    public function testGetEncodingOptions()
-    {
-        $response = new JsonResponse();
-
-        $this->assertEquals(JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT, $response->getEncodingOptions());
-    }
-
-    public function testSetEncodingOptions()
-    {
-        $response = new JsonResponse();
-        $response->setData([[1, 2, 3]]);
-
-        $this->assertEquals('[[1,2,3]]', $response->getContent());
-
-        $response->setEncodingOptions(JSON_FORCE_OBJECT);
-
-        $this->assertEquals('{"0":{"0":1,"1":2,"2":3}}', $response->getContent());
-    }
-
-    public function testItAcceptsJsonAsString()
-    {
-        $response = JsonResponse::fromJsonString('{"foo":"bar"}');
-        $this->assertSame('{"foo":"bar"}', $response->getContent());
-    }
-
-    public function testSetCallbackInvalidIdentifier()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new JsonResponse('foo');
-        $response->setCallback('+invalid');
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('InvalidArgumentException');
-        JsonResponse::create("\xB1\x31");
-    }
-
-    public function testSetContentJsonSerializeError()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('This error is expected');
-        if (!interface_exists('JsonSerializable', false)) {
-            $this->markTestSkipped('JsonSerializable is required.');
-        }
-
-        $serializable = new JsonSerializableObject();
-
-        JsonResponse::create($serializable);
-    }
-
-    public function testSetComplexCallback()
-    {
-        $response = JsonResponse::create(['foo' => 'bar']);
-        $response->setCallback('ಠ_ಠ["foo"].bar[0]');
-
-        $this->assertEquals('/**/ಠ_ಠ["foo"].bar[0]({"foo":"bar"});', $response->getContent());
-    }
-}
-
-if (interface_exists('JsonSerializable', false)) {
-    class JsonSerializableObject implements \JsonSerializable
-    {
-        public function jsonSerialize()
-        {
-            throw new \Exception('This error is expected');
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ParameterBagTest.php b/vendor/symfony/http-foundation/Tests/ParameterBagTest.php
deleted file mode 100644
index d2a5c991..00000000
--- a/vendor/symfony/http-foundation/Tests/ParameterBagTest.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ParameterBag;
-
-class ParameterBagTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $this->testAll();
-    }
-
-    public function testAll()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $bag->all(), '->all() gets all the input');
-    }
-
-    public function testKeys()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $this->assertEquals(['foo'], $bag->keys());
-    }
-
-    public function testAdd()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $bag->add(['bar' => 'bas']);
-        $this->assertEquals(['foo' => 'bar', 'bar' => 'bas'], $bag->all());
-    }
-
-    public function testRemove()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-        $bag->add(['bar' => 'bas']);
-        $this->assertEquals(['foo' => 'bar', 'bar' => 'bas'], $bag->all());
-        $bag->remove('bar');
-        $this->assertEquals(['foo' => 'bar'], $bag->all());
-    }
-
-    public function testReplace()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-
-        $bag->replace(['FOO' => 'BAR']);
-        $this->assertEquals(['FOO' => 'BAR'], $bag->all(), '->replace() replaces the input with the argument');
-        $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input');
-    }
-
-    public function testGet()
-    {
-        $bag = new ParameterBag(['foo' => 'bar', 'null' => null]);
-
-        $this->assertEquals('bar', $bag->get('foo'), '->get() gets the value of a parameter');
-        $this->assertEquals('default', $bag->get('unknown', 'default'), '->get() returns second argument as default if a parameter is not defined');
-        $this->assertNull($bag->get('null', 'default'), '->get() returns null if null is set');
-    }
-
-    public function testGetDoesNotUseDeepByDefault()
-    {
-        $bag = new ParameterBag(['foo' => ['bar' => 'moo']]);
-
-        $this->assertNull($bag->get('foo[bar]'));
-    }
-
-    public function testSet()
-    {
-        $bag = new ParameterBag([]);
-
-        $bag->set('foo', 'bar');
-        $this->assertEquals('bar', $bag->get('foo'), '->set() sets the value of parameter');
-
-        $bag->set('foo', 'baz');
-        $this->assertEquals('baz', $bag->get('foo'), '->set() overrides previously set parameter');
-    }
-
-    public function testHas()
-    {
-        $bag = new ParameterBag(['foo' => 'bar']);
-
-        $this->assertTrue($bag->has('foo'), '->has() returns true if a parameter is defined');
-        $this->assertFalse($bag->has('unknown'), '->has() return false if a parameter is not defined');
-    }
-
-    public function testGetAlpha()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('fooBAR', $bag->getAlpha('word'), '->getAlpha() gets only alphabetic characters');
-        $this->assertEquals('', $bag->getAlpha('unknown'), '->getAlpha() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetAlnum()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('fooBAR012', $bag->getAlnum('word'), '->getAlnum() gets only alphanumeric characters');
-        $this->assertEquals('', $bag->getAlnum('unknown'), '->getAlnum() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetDigits()
-    {
-        $bag = new ParameterBag(['word' => 'foo_BAR_012']);
-
-        $this->assertEquals('012', $bag->getDigits('word'), '->getDigits() gets only digits as string');
-        $this->assertEquals('', $bag->getDigits('unknown'), '->getDigits() returns empty string if a parameter is not defined');
-    }
-
-    public function testGetInt()
-    {
-        $bag = new ParameterBag(['digits' => '0123']);
-
-        $this->assertEquals(123, $bag->getInt('digits'), '->getInt() gets a value of parameter as integer');
-        $this->assertEquals(0, $bag->getInt('unknown'), '->getInt() returns zero if a parameter is not defined');
-    }
-
-    public function testFilter()
-    {
-        $bag = new ParameterBag([
-            'digits' => '0123ab',
-            'email' => 'example@example.com',
-            'url' => 'http://example.com/foo',
-            'dec' => '256',
-            'hex' => '0x100',
-            'array' => ['bang'],
-            ]);
-
-        $this->assertEmpty($bag->filter('nokey'), '->filter() should return empty by default if no key is found');
-
-        $this->assertEquals('0123', $bag->filter('digits', '', FILTER_SANITIZE_NUMBER_INT), '->filter() gets a value of parameter as integer filtering out invalid characters');
-
-        $this->assertEquals('example@example.com', $bag->filter('email', '', FILTER_VALIDATE_EMAIL), '->filter() gets a value of parameter as email');
-
-        $this->assertEquals('http://example.com/foo', $bag->filter('url', '', FILTER_VALIDATE_URL, ['flags' => FILTER_FLAG_PATH_REQUIRED]), '->filter() gets a value of parameter as URL with a path');
-
-        // This test is repeated for code-coverage
-        $this->assertEquals('http://example.com/foo', $bag->filter('url', '', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED), '->filter() gets a value of parameter as URL with a path');
-
-        $this->assertFalse($bag->filter('dec', '', FILTER_VALIDATE_INT, [
-            'flags' => FILTER_FLAG_ALLOW_HEX,
-            'options' => ['min_range' => 1, 'max_range' => 0xff],
-        ]), '->filter() gets a value of parameter as integer between boundaries');
-
-        $this->assertFalse($bag->filter('hex', '', FILTER_VALIDATE_INT, [
-            'flags' => FILTER_FLAG_ALLOW_HEX,
-            'options' => ['min_range' => 1, 'max_range' => 0xff],
-        ]), '->filter() gets a value of parameter as integer between boundaries');
-
-        $this->assertEquals(['bang'], $bag->filter('array', ''), '->filter() gets a value of parameter as an array');
-    }
-
-    public function testGetIterator()
-    {
-        $parameters = ['foo' => 'bar', 'hello' => 'world'];
-        $bag = new ParameterBag($parameters);
-
-        $i = 0;
-        foreach ($bag as $key => $val) {
-            ++$i;
-            $this->assertEquals($parameters[$key], $val);
-        }
-
-        $this->assertEquals(\count($parameters), $i);
-    }
-
-    public function testCount()
-    {
-        $parameters = ['foo' => 'bar', 'hello' => 'world'];
-        $bag = new ParameterBag($parameters);
-
-        $this->assertCount(\count($parameters), $bag);
-    }
-
-    public function testGetBoolean()
-    {
-        $parameters = ['string_true' => 'true', 'string_false' => 'false'];
-        $bag = new ParameterBag($parameters);
-
-        $this->assertTrue($bag->getBoolean('string_true'), '->getBoolean() gets the string true as boolean true');
-        $this->assertFalse($bag->getBoolean('string_false'), '->getBoolean() gets the string false as boolean false');
-        $this->assertFalse($bag->getBoolean('unknown'), '->getBoolean() returns false if a parameter is not defined');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php b/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php
deleted file mode 100644
index 92f4876d..00000000
--- a/vendor/symfony/http-foundation/Tests/RedirectResponseTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-
-class RedirectResponseTest extends TestCase
-{
-    public function testGenerateMetaRedirect()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertEquals(1, preg_match(
-            '#<meta http-equiv="refresh" content="\d+;url=foo\.bar" />#',
-            preg_replace(['/\s+/', '/\'/'], [' ', '"'], $response->getContent())
-        ));
-    }
-
-    public function testRedirectResponseConstructorNullUrl()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse(null);
-    }
-
-    public function testRedirectResponseConstructorWrongStatusCode()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse('foo.bar', 404);
-    }
-
-    public function testGenerateLocationHeader()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertTrue($response->headers->has('Location'));
-        $this->assertEquals('foo.bar', $response->headers->get('Location'));
-    }
-
-    public function testGetTargetUrl()
-    {
-        $response = new RedirectResponse('foo.bar');
-
-        $this->assertEquals('foo.bar', $response->getTargetUrl());
-    }
-
-    public function testSetTargetUrl()
-    {
-        $response = new RedirectResponse('foo.bar');
-        $response->setTargetUrl('baz.beep');
-
-        $this->assertEquals('baz.beep', $response->getTargetUrl());
-    }
-
-    public function testSetTargetUrlNull()
-    {
-        $this->expectException('InvalidArgumentException');
-        $response = new RedirectResponse('foo.bar');
-        $response->setTargetUrl(null);
-    }
-
-    public function testCreate()
-    {
-        $response = RedirectResponse::create('foo', 301);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse', $response);
-        $this->assertEquals(301, $response->getStatusCode());
-    }
-
-    public function testCacheHeaders()
-    {
-        $response = new RedirectResponse('foo.bar', 301);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-
-        $response = new RedirectResponse('foo.bar', 301, ['cache-control' => 'max-age=86400']);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
-
-        $response = new RedirectResponse('foo.bar', 301, ['Cache-Control' => 'max-age=86400']);
-        $this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
-
-        $response = new RedirectResponse('foo.bar', 302);
-        $this->assertTrue($response->headers->hasCacheControlDirective('no-cache'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php b/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php
deleted file mode 100644
index 57e9c3d3..00000000
--- a/vendor/symfony/http-foundation/Tests/RequestMatcherTest.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestMatcher;
-
-class RequestMatcherTest extends TestCase
-{
-    /**
-     * @dataProvider getMethodData
-     */
-    public function testMethod($requestMethod, $matcherMethod, $isMatch)
-    {
-        $matcher = new RequestMatcher();
-        $matcher->matchMethod($matcherMethod);
-        $request = Request::create('', $requestMethod);
-        $this->assertSame($isMatch, $matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, null, $matcherMethod);
-        $request = Request::create('', $requestMethod);
-        $this->assertSame($isMatch, $matcher->matches($request));
-    }
-
-    public function getMethodData()
-    {
-        return [
-            ['get', 'get', true],
-            ['get', ['get', 'post'], true],
-            ['get', 'post', false],
-            ['get', 'GET', true],
-            ['get', ['GET', 'POST'], true],
-            ['get', 'POST', false],
-        ];
-    }
-
-    public function testScheme()
-    {
-        $httpRequest = $request = $request = Request::create('');
-        $httpsRequest = $request = $request = Request::create('', 'get', [], [], [], ['HTTPS' => 'on']);
-
-        $matcher = new RequestMatcher();
-        $matcher->matchScheme('https');
-        $this->assertFalse($matcher->matches($httpRequest));
-        $this->assertTrue($matcher->matches($httpsRequest));
-
-        $matcher->matchScheme('http');
-        $this->assertFalse($matcher->matches($httpsRequest));
-        $this->assertTrue($matcher->matches($httpRequest));
-
-        $matcher = new RequestMatcher();
-        $this->assertTrue($matcher->matches($httpsRequest));
-        $this->assertTrue($matcher->matches($httpRequest));
-    }
-
-    /**
-     * @dataProvider getHostData
-     */
-    public function testHost($pattern, $isMatch)
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('', 'get', [], [], [], ['HTTP_HOST' => 'foo.example.com']);
-
-        $matcher->matchHost($pattern);
-        $this->assertSame($isMatch, $matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, $pattern);
-        $this->assertSame($isMatch, $matcher->matches($request));
-    }
-
-    public function testPort()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('', 'get', [], [], [], ['HTTP_HOST' => null, 'SERVER_PORT' => 8000]);
-
-        $matcher->matchPort(8000);
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPort(9000);
-        $this->assertFalse($matcher->matches($request));
-
-        $matcher = new RequestMatcher(null, null, null, null, [], null, 8000);
-        $this->assertTrue($matcher->matches($request));
-    }
-
-    public function getHostData()
-    {
-        return [
-            ['.*\.example\.com', true],
-            ['\.example\.com$', true],
-            ['^.*\.example\.com$', true],
-            ['.*\.sensio\.com', false],
-            ['.*\.example\.COM', true],
-            ['\.example\.COM$', true],
-            ['^.*\.example\.COM$', true],
-            ['.*\.sensio\.COM', false],
-        ];
-    }
-
-    public function testPath()
-    {
-        $matcher = new RequestMatcher();
-
-        $request = Request::create('/admin/foo');
-
-        $matcher->matchPath('/admin/.*');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPath('/admin');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchPath('^/admin/.*$');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchMethod('/blog/.*');
-        $this->assertFalse($matcher->matches($request));
-    }
-
-    public function testPathWithLocaleIsNotSupported()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('/en/login');
-        $request->setLocale('en');
-
-        $matcher->matchPath('^/{_locale}/login$');
-        $this->assertFalse($matcher->matches($request));
-    }
-
-    public function testPathWithEncodedCharacters()
-    {
-        $matcher = new RequestMatcher();
-        $request = Request::create('/admin/fo%20o');
-        $matcher->matchPath('^/admin/fo o*$');
-        $this->assertTrue($matcher->matches($request));
-    }
-
-    public function testAttributes()
-    {
-        $matcher = new RequestMatcher();
-
-        $request = Request::create('/admin/foo');
-        $request->attributes->set('foo', 'foo_bar');
-
-        $matcher->matchAttribute('foo', 'foo_.*');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', 'foo');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', '^foo_bar$');
-        $this->assertTrue($matcher->matches($request));
-
-        $matcher->matchAttribute('foo', 'babar');
-        $this->assertFalse($matcher->matches($request));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestStackTest.php b/vendor/symfony/http-foundation/Tests/RequestStackTest.php
deleted file mode 100644
index a84fb26f..00000000
--- a/vendor/symfony/http-foundation/Tests/RequestStackTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-
-class RequestStackTest extends TestCase
-{
-    public function testGetCurrentRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getCurrentRequest());
-
-        $request = Request::create('/foo');
-
-        $requestStack->push($request);
-        $this->assertSame($request, $requestStack->getCurrentRequest());
-
-        $this->assertSame($request, $requestStack->pop());
-        $this->assertNull($requestStack->getCurrentRequest());
-
-        $this->assertNull($requestStack->pop());
-    }
-
-    public function testGetMasterRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getMasterRequest());
-
-        $masterRequest = Request::create('/foo');
-        $subRequest = Request::create('/bar');
-
-        $requestStack->push($masterRequest);
-        $requestStack->push($subRequest);
-
-        $this->assertSame($masterRequest, $requestStack->getMasterRequest());
-    }
-
-    public function testGetParentRequest()
-    {
-        $requestStack = new RequestStack();
-        $this->assertNull($requestStack->getParentRequest());
-
-        $masterRequest = Request::create('/foo');
-
-        $requestStack->push($masterRequest);
-        $this->assertNull($requestStack->getParentRequest());
-
-        $firstSubRequest = Request::create('/bar');
-
-        $requestStack->push($firstSubRequest);
-        $this->assertSame($masterRequest, $requestStack->getParentRequest());
-
-        $secondSubRequest = Request::create('/baz');
-
-        $requestStack->push($secondSubRequest);
-        $this->assertSame($firstSubRequest, $requestStack->getParentRequest());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/RequestTest.php b/vendor/symfony/http-foundation/Tests/RequestTest.php
deleted file mode 100644
index d56ef314..00000000
--- a/vendor/symfony/http-foundation/Tests/RequestTest.php
+++ /dev/null
@@ -1,2325 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-class RequestTest extends TestCase
-{
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies([], -1);
-        Request::setTrustedHosts([]);
-    }
-
-    public function testInitialize()
-    {
-        $request = new Request();
-
-        $request->initialize(['foo' => 'bar']);
-        $this->assertEquals('bar', $request->query->get('foo'), '->initialize() takes an array of query parameters as its first argument');
-
-        $request->initialize([], ['foo' => 'bar']);
-        $this->assertEquals('bar', $request->request->get('foo'), '->initialize() takes an array of request parameters as its second argument');
-
-        $request->initialize([], [], ['foo' => 'bar']);
-        $this->assertEquals('bar', $request->attributes->get('foo'), '->initialize() takes an array of attributes as its third argument');
-
-        $request->initialize([], [], [], [], [], ['HTTP_FOO' => 'bar']);
-        $this->assertEquals('bar', $request->headers->get('FOO'), '->initialize() takes an array of HTTP headers as its sixth argument');
-    }
-
-    public function testGetLocale()
-    {
-        $request = new Request();
-        $request->setLocale('pl');
-        $locale = $request->getLocale();
-        $this->assertEquals('pl', $locale);
-    }
-
-    public function testGetUser()
-    {
-        $request = Request::create('http://user:password@test.com');
-        $user = $request->getUser();
-
-        $this->assertEquals('user', $user);
-    }
-
-    public function testGetPassword()
-    {
-        $request = Request::create('http://user:password@test.com');
-        $password = $request->getPassword();
-
-        $this->assertEquals('password', $password);
-    }
-
-    public function testIsNoCache()
-    {
-        $request = new Request();
-        $isNoCache = $request->isNoCache();
-
-        $this->assertFalse($isNoCache);
-    }
-
-    public function testGetContentType()
-    {
-        $request = new Request();
-        $contentType = $request->getContentType();
-
-        $this->assertNull($contentType);
-    }
-
-    public function testSetDefaultLocale()
-    {
-        $request = new Request();
-        $request->setDefaultLocale('pl');
-        $locale = $request->getLocale();
-
-        $this->assertEquals('pl', $locale);
-    }
-
-    public function testCreate()
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo', 'GET', ['bar' => 'baz']);
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo?bar=foo', 'GET', ['bar' => 'baz']);
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com/foo?bar=baz');
-        $this->assertEquals('https://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('test.com:90/foo');
-        $this->assertEquals('http://test.com:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com:90/foo');
-        $this->assertEquals('https://test.com:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://127.0.0.1:90/foo');
-        $this->assertEquals('https://127.0.0.1:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('127.0.0.1', $request->getHost());
-        $this->assertEquals('127.0.0.1:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://[::1]:90/foo');
-        $this->assertEquals('https://[::1]:90/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('[::1]', $request->getHost());
-        $this->assertEquals('[::1]:90', $request->getHttpHost());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $request = Request::create('https://[::1]/foo');
-        $this->assertEquals('https://[::1]/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('[::1]', $request->getHost());
-        $this->assertEquals('[::1]', $request->getHttpHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        $json = '{"jsonrpc":"2.0","method":"echo","id":7,"params":["Hello World"]}';
-        $request = Request::create('http://example.com/jsonrpc', 'POST', [], [], [], [], $json);
-        $this->assertEquals($json, $request->getContent());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com?test=1');
-        $this->assertEquals('http://test.com/?test=1', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('test=1', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com:90/?test=1');
-        $this->assertEquals('http://test.com:90/?test=1', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('test=1', $request->getQueryString());
-        $this->assertEquals(90, $request->getPort());
-        $this->assertEquals('test.com:90', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://username:password@test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals('username', $request->getUser());
-        $this->assertEquals('password', $request->getPassword());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://username@test.com');
-        $this->assertEquals('http://test.com/', $request->getUri());
-        $this->assertEquals('/', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals('username', $request->getUser());
-        $this->assertSame('', $request->getPassword());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/?foo');
-        $this->assertEquals('/?foo', $request->getRequestUri());
-        $this->assertEquals(['foo' => ''], $request->query->all());
-
-        // assume rewrite rule: (.*) --> app/app.php; app/ is a symlink to a symfony web/ directory
-        $request = Request::create('http://test.com/apparthotel-1234', 'GET', [], [], [],
-            [
-                'DOCUMENT_ROOT' => '/var/www/www.test.com',
-                'SCRIPT_FILENAME' => '/var/www/www.test.com/app/app.php',
-                'SCRIPT_NAME' => '/app/app.php',
-                'PHP_SELF' => '/app/app.php/apparthotel-1234',
-            ]);
-        $this->assertEquals('http://test.com/apparthotel-1234', $request->getUri());
-        $this->assertEquals('/apparthotel-1234', $request->getPathInfo());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertFalse($request->isSecure());
-
-        // Fragment should not be included in the URI
-        $request = Request::create('http://test.com/foo#bar');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-    }
-
-    public function testCreateWithRequestUri()
-    {
-        $request = Request::create('http://test.com:80/foo');
-        $request->server->set('REQUEST_URI', 'http://test.com:80/foo');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com:8080/foo');
-        $request->server->set('REQUEST_URI', 'http://test.com:8080/foo');
-        $this->assertEquals('http://test.com:8080/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com:8080', $request->getHttpHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('http://test.com/foo?bar=foo', 'GET', ['bar' => 'baz']);
-        $request->server->set('REQUEST_URI', 'http://test.com/foo?bar=foo');
-        $this->assertEquals('http://test.com/foo?bar=baz', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('bar=baz', $request->getQueryString());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        $request = Request::create('https://test.com:443/foo');
-        $request->server->set('REQUEST_URI', 'https://test.com:443/foo');
-        $this->assertEquals('https://test.com/foo', $request->getUri());
-        $this->assertEquals('/foo', $request->getPathInfo());
-        $this->assertEquals('test.com', $request->getHost());
-        $this->assertEquals('test.com', $request->getHttpHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // Fragment should not be included in the URI
-        $request = Request::create('http://test.com/foo#bar');
-        $request->server->set('REQUEST_URI', 'http://test.com/foo#bar');
-        $this->assertEquals('http://test.com/foo', $request->getUri());
-    }
-
-    /**
-     * @dataProvider getRequestUriData
-     */
-    public function testGetRequestUri($serverRequestUri, $expected, $message)
-    {
-        $request = new Request();
-        $request->server->add([
-            'REQUEST_URI' => $serverRequestUri,
-
-            // For having http://test.com
-            'SERVER_NAME' => 'test.com',
-            'SERVER_PORT' => 80,
-        ]);
-
-        $this->assertSame($expected, $request->getRequestUri(), $message);
-        $this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
-    }
-
-    public function getRequestUriData()
-    {
-        $message = 'Do not modify the path.';
-        yield ['/foo', '/foo', $message];
-        yield ['//bar/foo', '//bar/foo', $message];
-        yield ['///bar/foo', '///bar/foo', $message];
-
-        $message = 'Handle when the scheme, host are on REQUEST_URI.';
-        yield ['http://test.com/foo?bar=baz', '/foo?bar=baz', $message];
-
-        $message = 'Handle when the scheme, host and port are on REQUEST_URI.';
-        yield ['http://test.com:80/foo', '/foo', $message];
-        yield ['https://test.com:8080/foo', '/foo', $message];
-        yield ['https://test.com:443/foo', '/foo', $message];
-
-        $message = 'Fragment should not be included in the URI';
-        yield ['http://test.com/foo#bar', '/foo', $message];
-        yield ['/foo#bar', '/foo', $message];
-    }
-
-    public function testGetRequestUriWithoutRequiredHeader()
-    {
-        $expected = '';
-
-        $request = new Request();
-
-        $message = 'Fallback to empty URI when headers are missing.';
-        $this->assertSame($expected, $request->getRequestUri(), $message);
-        $this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
-    }
-
-    public function testCreateCheckPrecedence()
-    {
-        // server is used by default
-        $request = Request::create('/', 'DELETE', [], [], [], [
-            'HTTP_HOST' => 'example.com',
-            'HTTPS' => 'on',
-            'SERVER_PORT' => 443,
-            'PHP_AUTH_USER' => 'fabien',
-            'PHP_AUTH_PW' => 'pa$$',
-            'QUERY_STRING' => 'foo=bar',
-            'CONTENT_TYPE' => 'application/json',
-        ]);
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-        $this->assertEquals('fabien', $request->getUser());
-        $this->assertEquals('pa$$', $request->getPassword());
-        $this->assertEquals('', $request->getQueryString());
-        $this->assertEquals('application/json', $request->headers->get('CONTENT_TYPE'));
-
-        // URI has precedence over server
-        $request = Request::create('http://thomas:pokemon@example.net:8080/?foo=bar', 'GET', [], [], [], [
-            'HTTP_HOST' => 'example.com',
-            'HTTPS' => 'on',
-            'SERVER_PORT' => 443,
-        ]);
-        $this->assertEquals('example.net', $request->getHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertFalse($request->isSecure());
-        $this->assertEquals('thomas', $request->getUser());
-        $this->assertEquals('pokemon', $request->getPassword());
-        $this->assertEquals('foo=bar', $request->getQueryString());
-    }
-
-    public function testDuplicate()
-    {
-        $request = new Request(['foo' => 'bar'], ['foo' => 'bar'], ['foo' => 'bar'], [], [], ['HTTP_FOO' => 'bar']);
-        $dup = $request->duplicate();
-
-        $this->assertEquals($request->query->all(), $dup->query->all(), '->duplicate() duplicates a request an copy the current query parameters');
-        $this->assertEquals($request->request->all(), $dup->request->all(), '->duplicate() duplicates a request an copy the current request parameters');
-        $this->assertEquals($request->attributes->all(), $dup->attributes->all(), '->duplicate() duplicates a request an copy the current attributes');
-        $this->assertEquals($request->headers->all(), $dup->headers->all(), '->duplicate() duplicates a request an copy the current HTTP headers');
-
-        $dup = $request->duplicate(['foo' => 'foobar'], ['foo' => 'foobar'], ['foo' => 'foobar'], [], [], ['HTTP_FOO' => 'foobar']);
-
-        $this->assertEquals(['foo' => 'foobar'], $dup->query->all(), '->duplicate() overrides the query parameters if provided');
-        $this->assertEquals(['foo' => 'foobar'], $dup->request->all(), '->duplicate() overrides the request parameters if provided');
-        $this->assertEquals(['foo' => 'foobar'], $dup->attributes->all(), '->duplicate() overrides the attributes if provided');
-        $this->assertEquals(['foo' => ['foobar']], $dup->headers->all(), '->duplicate() overrides the HTTP header if provided');
-    }
-
-    public function testDuplicateWithFormat()
-    {
-        $request = new Request([], [], ['_format' => 'json']);
-        $dup = $request->duplicate();
-
-        $this->assertEquals('json', $dup->getRequestFormat());
-        $this->assertEquals('json', $dup->attributes->get('_format'));
-
-        $request = new Request();
-        $request->setRequestFormat('xml');
-        $dup = $request->duplicate();
-
-        $this->assertEquals('xml', $dup->getRequestFormat());
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProviderWithAdditionalNullFormat
-     */
-    public function testGetFormatFromMimeType($format, $mimeTypes)
-    {
-        $request = new Request();
-        foreach ($mimeTypes as $mime) {
-            $this->assertEquals($format, $request->getFormat($mime));
-        }
-        $request->setFormat($format, $mimeTypes);
-        foreach ($mimeTypes as $mime) {
-            $this->assertEquals($format, $request->getFormat($mime));
-
-            if (null !== $format) {
-                $this->assertEquals($mimeTypes[0], $request->getMimeType($format));
-            }
-        }
-    }
-
-    public function getFormatToMimeTypeMapProviderWithAdditionalNullFormat()
-    {
-        return array_merge(
-            [[null, [null, 'unexistent-mime-type']]],
-            $this->getFormatToMimeTypeMapProvider()
-        );
-    }
-
-    public function testGetFormatFromMimeTypeWithParameters()
-    {
-        $request = new Request();
-        $this->assertEquals('json', $request->getFormat('application/json; charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json;charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json ; charset=utf-8'));
-        $this->assertEquals('json', $request->getFormat('application/json ;charset=utf-8'));
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProvider
-     */
-    public function testGetMimeTypeFromFormat($format, $mimeTypes)
-    {
-        $request = new Request();
-        $this->assertEquals($mimeTypes[0], $request->getMimeType($format));
-    }
-
-    /**
-     * @dataProvider getFormatToMimeTypeMapProvider
-     */
-    public function testGetMimeTypesFromFormat($format, $mimeTypes)
-    {
-        $this->assertEquals($mimeTypes, Request::getMimeTypes($format));
-    }
-
-    public function testGetMimeTypesFromInexistentFormat()
-    {
-        $request = new Request();
-        $this->assertNull($request->getMimeType('foo'));
-        $this->assertEquals([], Request::getMimeTypes('foo'));
-    }
-
-    public function testGetFormatWithCustomMimeType()
-    {
-        $request = new Request();
-        $request->setFormat('custom', 'application/vnd.foo.api;myversion=2.3');
-        $this->assertEquals('custom', $request->getFormat('application/vnd.foo.api;myversion=2.3'));
-    }
-
-    public function getFormatToMimeTypeMapProvider()
-    {
-        return [
-            ['txt', ['text/plain']],
-            ['js', ['application/javascript', 'application/x-javascript', 'text/javascript']],
-            ['css', ['text/css']],
-            ['json', ['application/json', 'application/x-json']],
-            ['jsonld', ['application/ld+json']],
-            ['xml', ['text/xml', 'application/xml', 'application/x-xml']],
-            ['rdf', ['application/rdf+xml']],
-            ['atom', ['application/atom+xml']],
-        ];
-    }
-
-    public function testGetUri()
-    {
-        $server = [];
-
-        // Standard Request on non default PORT
-        // http://host:8080/index.php/path/info?query=string
-
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/index.php/path/info?query=string';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PATH_INFO'] = '/path/info';
-        $server['PATH_TRANSLATED'] = 'redirect:/index.php/path/info';
-        $server['PHP_SELF'] = '/index_dev.php/path/info';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request = new Request();
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host:8080/index.php/path/info?query=string', $request->getUri(), '->getUri() with non default port');
-
-        // Use std port number
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/index.php/path/info?query=string', $request->getUri(), '->getUri() with default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/index.php/path/info?query=string', $request->getUri(), '->getUri() with default port without HOST_HEADER');
-
-        // Request with URL REWRITING (hide index.php)
-        //   RewriteCond %{REQUEST_FILENAME} !-f
-        //   RewriteRule ^(.*)$ index.php [QSA,L]
-        // http://host:8080/path/info?query=string
-        $server = [];
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['REDIRECT_QUERY_STRING'] = 'query=string';
-        $server['REDIRECT_URL'] = '/path/info';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/path/info?toto=test&1=1';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/path/info?query=string', $request->getUri(), '->getUri() with rewrite');
-
-        // Use std port number
-        //  http://host/path/info?query=string
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/path/info?query=string', $request->getUri(), '->getUri() with rewrite and default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/path/info?query=string', $request->getUri(), '->getUri() with rewrite, default port without HOST_HEADER');
-
-        // With encoded characters
-
-        $server = [
-            'HTTP_HOST' => 'host:8080',
-            'SERVER_NAME' => 'servername',
-            'SERVER_PORT' => '8080',
-            'QUERY_STRING' => 'query=string',
-            'REQUEST_URI' => '/ba%20se/index_dev.php/foo%20bar/in+fo?query=string',
-            'SCRIPT_NAME' => '/ba se/index_dev.php',
-            'PATH_TRANSLATED' => 'redirect:/index.php/foo bar/in+fo',
-            'PHP_SELF' => '/ba se/index_dev.php/path/info',
-            'SCRIPT_FILENAME' => '/some/where/ba se/index_dev.php',
-        ];
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals(
-            'http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string',
-            $request->getUri()
-        );
-
-        // with user info
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string', $request->getUri());
-
-        $server['PHP_AUTH_PW'] = 'symfony';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string', $request->getUri());
-    }
-
-    public function testGetUriForPath()
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $this->assertEquals('http://test.com/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('http://test.com:90/foo?bar=baz');
-        $this->assertEquals('http://test.com:90/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('https://test.com/foo?bar=baz');
-        $this->assertEquals('https://test.com/some/path', $request->getUriForPath('/some/path'));
-
-        $request = Request::create('https://test.com:90/foo?bar=baz');
-        $this->assertEquals('https://test.com:90/some/path', $request->getUriForPath('/some/path'));
-
-        $server = [];
-
-        // Standard Request on non default PORT
-        // http://host:8080/index.php/path/info?query=string
-
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/index.php/path/info?query=string';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PATH_INFO'] = '/path/info';
-        $server['PATH_TRANSLATED'] = 'redirect:/index.php/path/info';
-        $server['PHP_SELF'] = '/index_dev.php/path/info';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request = new Request();
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host:8080/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with non default port');
-
-        // Use std port number
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/index.php/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with default port without HOST_HEADER');
-
-        // Request with URL REWRITING (hide index.php)
-        //   RewriteCond %{REQUEST_FILENAME} !-f
-        //   RewriteRule ^(.*)$ index.php [QSA,L]
-        // http://host:8080/path/info?query=string
-        $server = [];
-        $server['HTTP_HOST'] = 'host:8080';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '8080';
-
-        $server['REDIRECT_QUERY_STRING'] = 'query=string';
-        $server['REDIRECT_URL'] = '/path/info';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['QUERY_STRING'] = 'query=string';
-        $server['REQUEST_URI'] = '/path/info?toto=test&1=1';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://host:8080/some/path', $request->getUriForPath('/some/path'), '->getUri() with rewrite');
-
-        // Use std port number
-        //  http://host/path/info?query=string
-        $server['HTTP_HOST'] = 'host';
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://host/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with rewrite and default port');
-
-        // Without HOST HEADER
-        unset($server['HTTP_HOST']);
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '80';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'), '->getUriForPath() with rewrite, default port without HOST_HEADER');
-        $this->assertEquals('servername', $request->getHttpHost());
-
-        // with user info
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'));
-
-        $server['PHP_AUTH_PW'] = 'symfony';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path'));
-    }
-
-    /**
-     * @dataProvider getRelativeUriForPathData()
-     */
-    public function testGetRelativeUriForPath($expected, $pathinfo, $path)
-    {
-        $this->assertEquals($expected, Request::create($pathinfo)->getRelativeUriForPath($path));
-    }
-
-    public function getRelativeUriForPathData()
-    {
-        return [
-            ['me.png', '/foo', '/me.png'],
-            ['../me.png', '/foo/bar', '/me.png'],
-            ['me.png', '/foo/bar', '/foo/me.png'],
-            ['../baz/me.png', '/foo/bar/b', '/foo/baz/me.png'],
-            ['../../fooz/baz/me.png', '/foo/bar/b', '/fooz/baz/me.png'],
-            ['baz/me.png', '/foo/bar/b', 'baz/me.png'],
-        ];
-    }
-
-    public function testGetUserInfo()
-    {
-        $request = new Request();
-
-        $server = ['PHP_AUTH_USER' => 'fabien'];
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('fabien', $request->getUserInfo());
-
-        $server['PHP_AUTH_USER'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('0', $request->getUserInfo());
-
-        $server['PHP_AUTH_PW'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('0:0', $request->getUserInfo());
-    }
-
-    public function testGetSchemeAndHttpHost()
-    {
-        $request = new Request();
-
-        $server = [];
-        $server['SERVER_NAME'] = 'servername';
-        $server['SERVER_PORT'] = '90';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_USER'] = 'fabien';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_USER'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-
-        $server['PHP_AUTH_PW'] = '0';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('http://servername:90', $request->getSchemeAndHttpHost());
-    }
-
-    /**
-     * @dataProvider getQueryStringNormalizationData
-     */
-    public function testGetQueryString($query, $expectedQuery, $msg)
-    {
-        $request = new Request();
-
-        $request->server->set('QUERY_STRING', $query);
-        $this->assertSame($expectedQuery, $request->getQueryString(), $msg);
-    }
-
-    public function getQueryStringNormalizationData()
-    {
-        return [
-            ['foo', 'foo=', 'works with valueless parameters'],
-            ['foo=', 'foo=', 'includes a dangling equal sign'],
-            ['bar=&foo=bar', 'bar=&foo=bar', '->works with empty parameters'],
-            ['foo=bar&bar=', 'bar=&foo=bar', 'sorts keys alphabetically'],
-
-            // GET parameters, that are submitted from a HTML form, encode spaces as "+" by default (as defined in enctype application/x-www-form-urlencoded).
-            // PHP also converts "+" to spaces when filling the global _GET or when using the function parse_str.
-            ['baz=Foo%20Baz&bar=Foo+Bar', 'bar=Foo%20Bar&baz=Foo%20Baz', 'normalizes spaces in both encodings "%20" and "+"'],
-
-            ['foo[]=1&foo[]=2', 'foo%5B0%5D=1&foo%5B1%5D=2', 'allows array notation'],
-            ['foo=1&foo=2', 'foo=2', 'merges repeated parameters'],
-            ['pa%3Dram=foo%26bar%3Dbaz&test=test', 'pa%3Dram=foo%26bar%3Dbaz&test=test', 'works with encoded delimiters'],
-            ['0', '0=', 'allows "0"'],
-            ['Foo Bar&Foo%20Baz', 'Foo_Bar=&Foo_Baz=', 'normalizes encoding in keys'],
-            ['bar=Foo Bar&baz=Foo%20Baz', 'bar=Foo%20Bar&baz=Foo%20Baz', 'normalizes encoding in values'],
-            ['foo=bar&&&test&&', 'foo=bar&test=', 'removes unneeded delimiters'],
-            ['formula=e=m*c^2', 'formula=e%3Dm%2Ac%5E2', 'correctly treats only the first "=" as delimiter and the next as value'],
-
-            // Ignore pairs with empty key, even if there was a value, e.g. "=value", as such nameless values cannot be retrieved anyway.
-            // PHP also does not include them when building _GET.
-            ['foo=bar&=a=b&=x=y', 'foo=bar', 'removes params with empty key'],
-
-            // Don't reorder nested query string keys
-            ['foo[]=Z&foo[]=A', 'foo%5B0%5D=Z&foo%5B1%5D=A', 'keeps order of values'],
-            ['foo[Z]=B&foo[A]=B', 'foo%5BZ%5D=B&foo%5BA%5D=B', 'keeps order of keys'],
-
-            ['utf8=✓', 'utf8=%E2%9C%93', 'encodes UTF-8'],
-        ];
-    }
-
-    public function testGetQueryStringReturnsNull()
-    {
-        $request = new Request();
-
-        $this->assertNull($request->getQueryString(), '->getQueryString() returns null for non-existent query string');
-
-        $request->server->set('QUERY_STRING', '');
-        $this->assertNull($request->getQueryString(), '->getQueryString() returns null for empty query string');
-    }
-
-    public function testGetHost()
-    {
-        $request = new Request();
-
-        $request->initialize(['foo' => 'bar']);
-        $this->assertEquals('', $request->getHost(), '->getHost() return empty string if not initialized');
-
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.example.com']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from Host Header');
-
-        // Host header with port number
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.example.com:8080']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from Host Header with port number');
-
-        // Server values
-        $request->initialize([], [], [], [], [], ['SERVER_NAME' => 'www.example.com']);
-        $this->assertEquals('www.example.com', $request->getHost(), '->getHost() from server name');
-
-        $request->initialize([], [], [], [], [], ['SERVER_NAME' => 'www.example.com', 'HTTP_HOST' => 'www.host.com']);
-        $this->assertEquals('www.host.com', $request->getHost(), '->getHost() value from Host header has priority over SERVER_NAME ');
-    }
-
-    public function testGetPort()
-    {
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-            'HTTP_X_FORWARDED_PORT' => '443',
-        ]);
-        $port = $request->getPort();
-
-        $this->assertEquals(80, $port, 'Without trusted proxies FORWARDED_PROTO and FORWARDED_PORT are ignored.');
-
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-            'HTTP_X_FORWARDED_PORT' => '8443',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With PROTO and PORT on untrusted connection server value takes precedence.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(8443, $request->getPort(), 'With PROTO and PORT set PORT takes precedence.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'https',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'http',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'If X_FORWARDED_PROTO is set to HTTP getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(80, $request->getPort(), 'If X_FORWARDED_PROTO is set to HTTP getPort() returns port of the original request.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'On',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set and value is On, getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set and value is On, getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => '1',
-        ]);
-        $this->assertEquals(80, $request->getPort(), 'With only PROTO set and value is 1, getPort() ignores trusted headers on untrusted connection.');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertEquals(443, $request->getPort(), 'With only PROTO set and value is 1, getPort() defaults to 443.');
-
-        $request = Request::create('http://example.com', 'GET', [], [], [], [
-            'HTTP_X_FORWARDED_PROTO' => 'something-else',
-        ]);
-        $port = $request->getPort();
-        $this->assertEquals(80, $port, 'With only PROTO set and value is not recognized, getPort() defaults to 80.');
-    }
-
-    public function testGetHostWithFakeHttpHostValue()
-    {
-        $this->expectException('RuntimeException');
-        $request = new Request();
-        $request->initialize([], [], [], [], [], ['HTTP_HOST' => 'www.host.com?query=string']);
-        $request->getHost();
-    }
-
-    public function testGetSetMethod()
-    {
-        $request = new Request();
-
-        $this->assertEquals('GET', $request->getMethod(), '->getMethod() returns GET if no method is defined');
-
-        $request->setMethod('get');
-        $this->assertEquals('GET', $request->getMethod(), '->getMethod() returns an uppercased string');
-
-        $request->setMethod('PURGE');
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method even if it is not a standard one');
-
-        $request->setMethod('POST');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() returns the method POST if no _method is defined');
-
-        $request->setMethod('POST');
-        $request->request->set('_method', 'purge');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() does not return the method from _method if defined and POST but support not enabled');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->request->set('_method', 'purge');
-
-        $this->assertFalse(Request::getHttpMethodParameterOverride(), 'httpMethodParameterOverride should be disabled by default');
-
-        Request::enableHttpMethodParameterOverride();
-
-        $this->assertTrue(Request::getHttpMethodParameterOverride(), 'httpMethodParameterOverride should be enabled now but it is not');
-
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
-        $this->disableHttpMethodParameterOverride();
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', 'purge');
-        $this->assertEquals('POST', $request->getMethod(), '->getMethod() does not return the method from _method if defined and POST but support not enabled');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', 'purge');
-        Request::enableHttpMethodParameterOverride();
-        $this->assertEquals('PURGE', $request->getMethod(), '->getMethod() returns the method from _method if defined and POST');
-        $this->disableHttpMethodParameterOverride();
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->headers->set('X-HTTP-METHOD-OVERRIDE', 'delete');
-        $this->assertEquals('DELETE', $request->getMethod(), '->getMethod() returns the method from X-HTTP-Method-Override even though _method is set if defined and POST');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->headers->set('X-HTTP-METHOD-OVERRIDE', 'delete');
-        $this->assertEquals('DELETE', $request->getMethod(), '->getMethod() returns the method from X-HTTP-Method-Override if defined and POST');
-
-        $request = new Request();
-        $request->setMethod('POST');
-        $request->query->set('_method', ['delete', 'patch']);
-        $this->assertSame('POST', $request->getMethod(), '->getMethod() returns the request method if invalid type is defined in query');
-    }
-
-    /**
-     * @dataProvider getClientIpsProvider
-     */
-    public function testGetClientIp($expected, $remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies);
-
-        $this->assertEquals($expected[0], $request->getClientIp());
-    }
-
-    /**
-     * @dataProvider getClientIpsProvider
-     */
-    public function testGetClientIps($expected, $remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies);
-
-        $this->assertEquals($expected, $request->getClientIps());
-    }
-
-    /**
-     * @dataProvider getClientIpsForwardedProvider
-     */
-    public function testGetClientIpsForwarded($expected, $remoteAddr, $httpForwarded, $trustedProxies)
-    {
-        $request = $this->getRequestInstanceForClientIpsForwardedTests($remoteAddr, $httpForwarded, $trustedProxies);
-
-        $this->assertEquals($expected, $request->getClientIps());
-    }
-
-    public function getClientIpsForwardedProvider()
-    {
-        //              $expected                                  $remoteAddr  $httpForwarded                                       $trustedProxies
-        return [
-            [['127.0.0.1'],                              '127.0.0.1', 'for="_gazonk"',                                      null],
-            [['127.0.0.1'],                              '127.0.0.1', 'for="_gazonk"',                                      ['127.0.0.1']],
-            [['88.88.88.88'],                            '127.0.0.1', 'for="88.88.88.88:80"',                               ['127.0.0.1']],
-            [['192.0.2.60'],                             '::1',       'for=192.0.2.60;proto=http;by=203.0.113.43',          ['::1']],
-            [['2620:0:1cfe:face:b00c::3', '192.0.2.43'], '::1',       'for=192.0.2.43, for="[2620:0:1cfe:face:b00c::3]"',   ['::1']],
-            [['2001:db8:cafe::17'],                      '::1',       'for="[2001:db8:cafe::17]:4711',                      ['::1']],
-        ];
-    }
-
-    public function getClientIpsProvider()
-    {
-        //        $expected                          $remoteAddr                 $httpForwardedFor            $trustedProxies
-        return [
-            // simple IPv4
-            [['88.88.88.88'],              '88.88.88.88',              null,                        null],
-            // trust the IPv4 remote addr
-            [['88.88.88.88'],              '88.88.88.88',              null,                        ['88.88.88.88']],
-
-            // simple IPv6
-            [['::1'],                      '::1',                      null,                        null],
-            // trust the IPv6 remote addr
-            [['::1'],                      '::1',                      null,                        ['::1']],
-
-            // forwarded for with remote IPv4 addr not trusted
-            [['127.0.0.1'],                '127.0.0.1',                '88.88.88.88',               null],
-            // forwarded for with remote IPv4 addr trusted + comma
-            [['88.88.88.88'],              '127.0.0.1',                '88.88.88.88,',              ['127.0.0.1']],
-            // forwarded for with remote IPv4 and all FF addrs trusted
-            [['88.88.88.88'],              '127.0.0.1',                '88.88.88.88',               ['127.0.0.1', '88.88.88.88']],
-            // forwarded for with remote IPv4 range trusted
-            [['88.88.88.88'],              '123.45.67.89',             '88.88.88.88',               ['123.45.67.0/24']],
-
-            // forwarded for with remote IPv6 addr not trusted
-            [['1620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3',  null],
-            // forwarded for with remote IPv6 addr trusted
-            [['2620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3',  ['1620:0:1cfe:face:b00c::3']],
-            // forwarded for with remote IPv6 range trusted
-            [['88.88.88.88'],              '2a01:198:603:0:396e:4789:8e99:890f', '88.88.88.88',     ['2a01:198:603:0::/65']],
-
-            // multiple forwarded for with remote IPv4 addr trusted
-            [['88.88.88.88', '87.65.43.21', '127.0.0.1'], '123.45.67.89', '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted
-            [['87.65.43.21', '127.0.0.1'], '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '88.88.88.88']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted but in the middle
-            [['88.88.88.88', '127.0.0.1'], '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '87.65.43.21']],
-            // multiple forwarded for with remote IPv4 addr and all reverse proxies trusted
-            [['127.0.0.1'],                '123.45.67.89',             '127.0.0.1, 87.65.43.21, 88.88.88.88', ['123.45.67.89', '87.65.43.21', '88.88.88.88', '127.0.0.1']],
-
-            // multiple forwarded for with remote IPv6 addr trusted
-            [['2620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3']],
-            // multiple forwarded for with remote IPv6 addr and some reverse proxies trusted
-            [['3620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3', '2620:0:1cfe:face:b00c::3']],
-            // multiple forwarded for with remote IPv4 addr and some reverse proxies trusted but in the middle
-            [['2620:0:1cfe:face:b00c::3', '4620:0:1cfe:face:b00c::3'], '1620:0:1cfe:face:b00c::3', '4620:0:1cfe:face:b00c::3,3620:0:1cfe:face:b00c::3,2620:0:1cfe:face:b00c::3', ['1620:0:1cfe:face:b00c::3', '3620:0:1cfe:face:b00c::3']],
-
-            // client IP with port
-            [['88.88.88.88'], '127.0.0.1', '88.88.88.88:12345, 127.0.0.1', ['127.0.0.1']],
-
-            // invalid forwarded IP is ignored
-            [['88.88.88.88'], '127.0.0.1', 'unknown,88.88.88.88', ['127.0.0.1']],
-            [['88.88.88.88'], '127.0.0.1', '}__test|O:21:&quot;JDatabaseDriverMysqli&quot;:3:{s:2,88.88.88.88', ['127.0.0.1']],
-        ];
-    }
-
-    /**
-     * @dataProvider getClientIpsWithConflictingHeadersProvider
-     */
-    public function testGetClientIpsWithConflictingHeaders($httpForwarded, $httpXForwardedFor)
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException');
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], Request::HEADER_X_FORWARDED_ALL | Request::HEADER_FORWARDED);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $request->getClientIps();
-    }
-
-    /**
-     * @dataProvider getClientIpsWithConflictingHeadersProvider
-     */
-    public function testGetClientIpsOnlyXHttpForwardedForTrusted($httpForwarded, $httpXForwardedFor)
-    {
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], Request::HEADER_X_FORWARDED_FOR);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertSame(array_reverse(explode(',', $httpXForwardedFor)), $request->getClientIps());
-    }
-
-    public function getClientIpsWithConflictingHeadersProvider()
-    {
-        //        $httpForwarded                   $httpXForwardedFor
-        return [
-            ['for=87.65.43.21',                 '192.0.2.60'],
-            ['for=87.65.43.21, for=192.0.2.60', '192.0.2.60'],
-            ['for=192.0.2.60',                  '192.0.2.60,87.65.43.21'],
-            ['for="::face", for=192.0.2.60',    '192.0.2.60,192.0.2.43'],
-            ['for=87.65.43.21, for=192.0.2.60', '192.0.2.60,87.65.43.21'],
-        ];
-    }
-
-    /**
-     * @dataProvider getClientIpsWithAgreeingHeadersProvider
-     */
-    public function testGetClientIpsWithAgreeingHeaders($httpForwarded, $httpXForwardedFor, $expectedIps)
-    {
-        $request = new Request();
-
-        $server = [
-            'REMOTE_ADDR' => '88.88.88.88',
-            'HTTP_FORWARDED' => $httpForwarded,
-            'HTTP_X_FORWARDED_FOR' => $httpXForwardedFor,
-        ];
-
-        Request::setTrustedProxies(['88.88.88.88'], -1);
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $clientIps = $request->getClientIps();
-
-        $this->assertSame($expectedIps, $clientIps);
-    }
-
-    public function getClientIpsWithAgreeingHeadersProvider()
-    {
-        //        $httpForwarded                               $httpXForwardedFor
-        return [
-            ['for="192.0.2.60"',                          '192.0.2.60',             ['192.0.2.60']],
-            ['for=192.0.2.60, for=87.65.43.21',           '192.0.2.60,87.65.43.21', ['87.65.43.21', '192.0.2.60']],
-            ['for="[::face]", for=192.0.2.60',            '::face,192.0.2.60',      ['192.0.2.60', '::face']],
-            ['for="192.0.2.60:80"',                       '192.0.2.60',             ['192.0.2.60']],
-            ['for=192.0.2.60;proto=http;by=203.0.113.43', '192.0.2.60',             ['192.0.2.60']],
-            ['for="[2001:db8:cafe::17]:4711"',            '2001:db8:cafe::17',      ['2001:db8:cafe::17']],
-        ];
-    }
-
-    public function testGetContentWorksTwiceInDefaultMode()
-    {
-        $req = new Request();
-        $this->assertEquals('', $req->getContent());
-        $this->assertEquals('', $req->getContent());
-    }
-
-    public function testGetContentReturnsResource()
-    {
-        $req = new Request();
-        $retval = $req->getContent(true);
-        $this->assertIsResource($retval);
-        $this->assertEquals('', fread($retval, 1));
-        $this->assertTrue(feof($retval));
-    }
-
-    public function testGetContentReturnsResourceWhenContentSetInConstructor()
-    {
-        $req = new Request([], [], [], [], [], [], 'MyContent');
-        $resource = $req->getContent(true);
-
-        $this->assertIsResource($resource);
-        $this->assertEquals('MyContent', stream_get_contents($resource));
-    }
-
-    public function testContentAsResource()
-    {
-        $resource = fopen('php://memory', 'r+');
-        fwrite($resource, 'My other content');
-        rewind($resource);
-
-        $req = new Request([], [], [], [], [], [], $resource);
-        $this->assertEquals('My other content', stream_get_contents($req->getContent(true)));
-        $this->assertEquals('My other content', $req->getContent());
-    }
-
-    public function getContentCantBeCalledTwiceWithResourcesProvider()
-    {
-        return [
-            'Resource then fetch' => [true, false],
-            'Resource then resource' => [true, true],
-        ];
-    }
-
-    /**
-     * @dataProvider getContentCanBeCalledTwiceWithResourcesProvider
-     */
-    public function testGetContentCanBeCalledTwiceWithResources($first, $second)
-    {
-        $req = new Request();
-        $a = $req->getContent($first);
-        $b = $req->getContent($second);
-
-        if ($first) {
-            $a = stream_get_contents($a);
-        }
-
-        if ($second) {
-            $b = stream_get_contents($b);
-        }
-
-        $this->assertSame($a, $b);
-    }
-
-    public function getContentCanBeCalledTwiceWithResourcesProvider()
-    {
-        return [
-            'Fetch then fetch' => [false, false],
-            'Fetch then resource' => [false, true],
-            'Resource then fetch' => [true, false],
-            'Resource then resource' => [true, true],
-        ];
-    }
-
-    public function provideOverloadedMethods()
-    {
-        return [
-            ['PUT'],
-            ['DELETE'],
-            ['PATCH'],
-            ['put'],
-            ['delete'],
-            ['patch'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideOverloadedMethods
-     */
-    public function testCreateFromGlobals($method)
-    {
-        $normalizedMethod = strtoupper($method);
-
-        $_GET['foo1'] = 'bar1';
-        $_POST['foo2'] = 'bar2';
-        $_COOKIE['foo3'] = 'bar3';
-        $_FILES['foo4'] = ['bar4'];
-        $_SERVER['foo5'] = 'bar5';
-
-        $request = Request::createFromGlobals();
-        $this->assertEquals('bar1', $request->query->get('foo1'), '::fromGlobals() uses values from $_GET');
-        $this->assertEquals('bar2', $request->request->get('foo2'), '::fromGlobals() uses values from $_POST');
-        $this->assertEquals('bar3', $request->cookies->get('foo3'), '::fromGlobals() uses values from $_COOKIE');
-        $this->assertEquals(['bar4'], $request->files->get('foo4'), '::fromGlobals() uses values from $_FILES');
-        $this->assertEquals('bar5', $request->server->get('foo5'), '::fromGlobals() uses values from $_SERVER');
-
-        unset($_GET['foo1'], $_POST['foo2'], $_COOKIE['foo3'], $_FILES['foo4'], $_SERVER['foo5']);
-
-        $_SERVER['REQUEST_METHOD'] = $method;
-        $_SERVER['CONTENT_TYPE'] = 'application/x-www-form-urlencoded';
-        $request = RequestContentProxy::createFromGlobals();
-        $this->assertEquals($normalizedMethod, $request->getMethod());
-        $this->assertEquals('mycontent', $request->request->get('content'));
-
-        unset($_SERVER['REQUEST_METHOD'], $_SERVER['CONTENT_TYPE']);
-
-        Request::createFromGlobals();
-        Request::enableHttpMethodParameterOverride();
-        $_POST['_method'] = $method;
-        $_POST['foo6'] = 'bar6';
-        $_SERVER['REQUEST_METHOD'] = 'PoSt';
-        $request = Request::createFromGlobals();
-        $this->assertEquals($normalizedMethod, $request->getMethod());
-        $this->assertEquals('POST', $request->getRealMethod());
-        $this->assertEquals('bar6', $request->request->get('foo6'));
-
-        unset($_POST['_method'], $_POST['foo6'], $_SERVER['REQUEST_METHOD']);
-        $this->disableHttpMethodParameterOverride();
-    }
-
-    public function testOverrideGlobals()
-    {
-        $request = new Request();
-        $request->initialize(['foo' => 'bar']);
-
-        // as the Request::overrideGlobals really work, it erase $_SERVER, so we must backup it
-        $server = $_SERVER;
-
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_GET);
-
-        $request->initialize([], ['foo' => 'bar']);
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_POST);
-
-        $this->assertArrayNotHasKey('HTTP_X_FORWARDED_PROTO', $_SERVER);
-
-        $request->headers->set('X_FORWARDED_PROTO', 'https');
-
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertFalse($request->isSecure());
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $this->assertTrue($request->isSecure());
-
-        $request->overrideGlobals();
-
-        $this->assertArrayHasKey('HTTP_X_FORWARDED_PROTO', $_SERVER);
-
-        $request->headers->set('CONTENT_TYPE', 'multipart/form-data');
-        $request->headers->set('CONTENT_LENGTH', 12345);
-
-        $request->overrideGlobals();
-
-        $this->assertArrayHasKey('CONTENT_TYPE', $_SERVER);
-        $this->assertArrayHasKey('CONTENT_LENGTH', $_SERVER);
-
-        $request->initialize(['foo' => 'bar', 'baz' => 'foo']);
-        $request->query->remove('baz');
-
-        $request->overrideGlobals();
-
-        $this->assertEquals(['foo' => 'bar'], $_GET);
-        $this->assertEquals('foo=bar', $_SERVER['QUERY_STRING']);
-        $this->assertEquals('foo=bar', $request->server->get('QUERY_STRING'));
-
-        // restore initial $_SERVER array
-        $_SERVER = $server;
-    }
-
-    public function testGetScriptName()
-    {
-        $request = new Request();
-        $this->assertEquals('', $request->getScriptName());
-
-        $server = [];
-        $server['SCRIPT_NAME'] = '/index.php';
-
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/index.php', $request->getScriptName());
-
-        $server = [];
-        $server['ORIG_SCRIPT_NAME'] = '/frontend.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/frontend.php', $request->getScriptName());
-
-        $server = [];
-        $server['SCRIPT_NAME'] = '/index.php';
-        $server['ORIG_SCRIPT_NAME'] = '/frontend.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/index.php', $request->getScriptName());
-    }
-
-    public function testGetBasePath()
-    {
-        $request = new Request();
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $request->initialize([], [], [], [], [], $server);
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['SCRIPT_NAME'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['PHP_SELF'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-
-        $server = [];
-        $server['SCRIPT_FILENAME'] = '/some/where/index.php';
-        $server['ORIG_SCRIPT_NAME'] = '/index.php';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('', $request->getBasePath());
-    }
-
-    public function testGetPathInfo()
-    {
-        $request = new Request();
-        $this->assertEquals('/', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '/path/info';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/path/info', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '/path%20test/info';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/path%20test/info', $request->getPathInfo());
-
-        $server = [];
-        $server['REQUEST_URI'] = '?a=b';
-        $request->initialize([], [], [], [], [], $server);
-
-        $this->assertEquals('/', $request->getPathInfo());
-    }
-
-    public function testGetParameterPrecedence()
-    {
-        $request = new Request();
-        $request->attributes->set('foo', 'attr');
-        $request->query->set('foo', 'query');
-        $request->request->set('foo', 'body');
-
-        $this->assertSame('attr', $request->get('foo'));
-
-        $request->attributes->remove('foo');
-        $this->assertSame('query', $request->get('foo'));
-
-        $request->query->remove('foo');
-        $this->assertSame('body', $request->get('foo'));
-
-        $request->request->remove('foo');
-        $this->assertNull($request->get('foo'));
-    }
-
-    public function testGetPreferredLanguage()
-    {
-        $request = new Request();
-        $this->assertNull($request->getPreferredLanguage());
-        $this->assertNull($request->getPreferredLanguage([]));
-        $this->assertEquals('fr', $request->getPreferredLanguage(['fr']));
-        $this->assertEquals('fr', $request->getPreferredLanguage(['fr', 'en']));
-        $this->assertEquals('en', $request->getPreferredLanguage(['en', 'fr']));
-        $this->assertEquals('fr-ch', $request->getPreferredLanguage(['fr-ch', 'fr-fr']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals('en', $request->getPreferredLanguage(['en', 'en-us']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, fr-fr; q=0.6, fr; q=0.5');
-        $this->assertEquals('en', $request->getPreferredLanguage(['fr', 'en']));
-    }
-
-    public function testIsXmlHttpRequest()
-    {
-        $request = new Request();
-        $this->assertFalse($request->isXmlHttpRequest());
-
-        $request->headers->set('X-Requested-With', 'XMLHttpRequest');
-        $this->assertTrue($request->isXmlHttpRequest());
-
-        $request->headers->remove('X-Requested-With');
-        $this->assertFalse($request->isXmlHttpRequest());
-    }
-
-    /**
-     * @requires extension intl
-     */
-    public function testIntlLocale()
-    {
-        $request = new Request();
-
-        $request->setDefaultLocale('fr');
-        $this->assertEquals('fr', $request->getLocale());
-        $this->assertEquals('fr', \Locale::getDefault());
-
-        $request->setLocale('en');
-        $this->assertEquals('en', $request->getLocale());
-        $this->assertEquals('en', \Locale::getDefault());
-
-        $request->setDefaultLocale('de');
-        $this->assertEquals('en', $request->getLocale());
-        $this->assertEquals('en', \Locale::getDefault());
-    }
-
-    public function testGetCharsets()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getCharsets());
-        $request->headers->set('Accept-Charset', 'ISO-8859-1, US-ASCII, UTF-8; q=0.8, ISO-10646-UCS-2; q=0.6');
-        $this->assertEquals([], $request->getCharsets()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept-Charset', 'ISO-8859-1, US-ASCII, UTF-8; q=0.8, ISO-10646-UCS-2; q=0.6');
-        $this->assertEquals(['ISO-8859-1', 'US-ASCII', 'UTF-8', 'ISO-10646-UCS-2'], $request->getCharsets());
-
-        $request = new Request();
-        $request->headers->set('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7');
-        $this->assertEquals(['ISO-8859-1', 'utf-8', '*'], $request->getCharsets());
-    }
-
-    public function testGetEncodings()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getEncodings());
-        $request->headers->set('Accept-Encoding', 'gzip,deflate,sdch');
-        $this->assertEquals([], $request->getEncodings()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept-Encoding', 'gzip,deflate,sdch');
-        $this->assertEquals(['gzip', 'deflate', 'sdch'], $request->getEncodings());
-
-        $request = new Request();
-        $request->headers->set('Accept-Encoding', 'gzip;q=0.4,deflate;q=0.9,compress;q=0.7');
-        $this->assertEquals(['deflate', 'compress', 'gzip'], $request->getEncodings());
-    }
-
-    public function testGetAcceptableContentTypes()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getAcceptableContentTypes());
-        $request->headers->set('Accept', 'application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*');
-        $this->assertEquals([], $request->getAcceptableContentTypes()); // testing caching
-
-        $request = new Request();
-        $request->headers->set('Accept', 'application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*');
-        $this->assertEquals(['application/vnd.wap.wmlscriptc', 'text/vnd.wap.wml', 'application/vnd.wap.xhtml+xml', 'application/xhtml+xml', 'text/html', 'multipart/mixed', '*/*'], $request->getAcceptableContentTypes());
-    }
-
-    public function testGetLanguages()
-    {
-        $request = new Request();
-        $this->assertEquals([], $request->getLanguages());
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $this->assertEquals(['zh', 'en_US', 'en'], $request->getLanguages());
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.6, en; q=0.8');
-        $this->assertEquals(['zh', 'en', 'en_US'], $request->getLanguages()); // Test out of order qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, en, en-us');
-        $this->assertEquals(['zh', 'en', 'en_US'], $request->getLanguages()); // Test equal weighting without qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh; q=0.6, en, en-us; q=0.6');
-        $this->assertEquals(['en', 'zh', 'en_US'], $request->getLanguages()); // Test equal weighting with qvalues
-
-        $request = new Request();
-        $request->headers->set('Accept-language', 'zh, i-cherokee; q=0.6');
-        $this->assertEquals(['zh', 'cherokee'], $request->getLanguages());
-    }
-
-    public function testGetRequestFormat()
-    {
-        $request = new Request();
-        $this->assertEquals('html', $request->getRequestFormat());
-
-        // Ensure that setting different default values over time is possible,
-        // aka. setRequestFormat determines the state.
-        $this->assertEquals('json', $request->getRequestFormat('json'));
-        $this->assertEquals('html', $request->getRequestFormat('html'));
-
-        $request = new Request();
-        $this->assertNull($request->getRequestFormat(null));
-
-        $request = new Request();
-        $this->assertNull($request->setRequestFormat('foo'));
-        $this->assertEquals('foo', $request->getRequestFormat(null));
-
-        $request = new Request(['_format' => 'foo']);
-        $this->assertEquals('html', $request->getRequestFormat());
-    }
-
-    public function testHasSession()
-    {
-        $request = new Request();
-
-        $this->assertFalse($request->hasSession());
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasSession());
-    }
-
-    public function testGetSession()
-    {
-        $request = new Request();
-
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasSession());
-
-        $session = $request->getSession();
-        $this->assertObjectHasAttribute('storage', $session);
-        $this->assertObjectHasAttribute('flashName', $session);
-        $this->assertObjectHasAttribute('attributeName', $session);
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling "Symfony\Component\HttpFoundation\Request::getSession()" when no session has been set is deprecated since Symfony 4.1 and will throw an exception in 5.0. Use "hasSession()" instead.
-     */
-    public function testGetSessionNullable()
-    {
-        (new Request())->getSession();
-    }
-
-    public function testHasPreviousSession()
-    {
-        $request = new Request();
-
-        $this->assertFalse($request->hasPreviousSession());
-        $request->cookies->set('MOCKSESSID', 'foo');
-        $this->assertFalse($request->hasPreviousSession());
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $this->assertTrue($request->hasPreviousSession());
-    }
-
-    public function testToString()
-    {
-        $request = new Request();
-
-        $request->headers->set('Accept-language', 'zh, en-us; q=0.8, en; q=0.6');
-        $request->cookies->set('Foo', 'Bar');
-
-        $asString = (string) $request;
-
-        $this->assertStringContainsString('Accept-Language: zh, en-us; q=0.8, en; q=0.6', $asString);
-        $this->assertStringContainsString('Cookie: Foo=Bar', $asString);
-
-        $request->cookies->set('Another', 'Cookie');
-
-        $asString = (string) $request;
-
-        $this->assertStringContainsString('Cookie: Foo=Bar; Another=Cookie', $asString);
-    }
-
-    public function testIsMethod()
-    {
-        $request = new Request();
-        $request->setMethod('POST');
-        $this->assertTrue($request->isMethod('POST'));
-        $this->assertTrue($request->isMethod('post'));
-        $this->assertFalse($request->isMethod('GET'));
-        $this->assertFalse($request->isMethod('get'));
-
-        $request->setMethod('GET');
-        $this->assertTrue($request->isMethod('GET'));
-        $this->assertTrue($request->isMethod('get'));
-        $this->assertFalse($request->isMethod('POST'));
-        $this->assertFalse($request->isMethod('post'));
-    }
-
-    /**
-     * @dataProvider getBaseUrlData
-     */
-    public function testGetBaseUrl($uri, $server, $expectedBaseUrl, $expectedPathInfo)
-    {
-        $request = Request::create($uri, 'GET', [], [], [], $server);
-
-        $this->assertSame($expectedBaseUrl, $request->getBaseUrl(), 'baseUrl');
-        $this->assertSame($expectedPathInfo, $request->getPathInfo(), 'pathInfo');
-    }
-
-    public function getBaseUrlData()
-    {
-        return [
-            [
-                '/fruit/strawberry/1234index.php/blah',
-                [
-                    'SCRIPT_FILENAME' => 'E:/Sites/cc-new/public_html/fruit/index.php',
-                    'SCRIPT_NAME' => '/fruit/index.php',
-                    'PHP_SELF' => '/fruit/index.php',
-                ],
-                '/fruit',
-                '/strawberry/1234index.php/blah',
-            ],
-            [
-                '/fruit/strawberry/1234index.php/blah',
-                [
-                    'SCRIPT_FILENAME' => 'E:/Sites/cc-new/public_html/index.php',
-                    'SCRIPT_NAME' => '/index.php',
-                    'PHP_SELF' => '/index.php',
-                ],
-                '',
-                '/fruit/strawberry/1234index.php/blah',
-            ],
-            [
-                '/foo%20bar/',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar',
-                '/',
-            ],
-            [
-                '/foo%20bar/home',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar',
-                '/home',
-            ],
-            [
-                '/foo%20bar/app.php/home',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar/app.php',
-                '/home',
-            ],
-            [
-                '/foo%20bar/app.php/home%3Dbaz',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo bar/app.php',
-                    'SCRIPT_NAME' => '/foo bar/app.php',
-                    'PHP_SELF' => '/foo bar/app.php',
-                ],
-                '/foo%20bar/app.php',
-                '/home%3Dbaz',
-            ],
-            [
-                '/foo/bar+baz',
-                [
-                    'SCRIPT_FILENAME' => '/home/John Doe/public_html/foo/app.php',
-                    'SCRIPT_NAME' => '/foo/app.php',
-                    'PHP_SELF' => '/foo/app.php',
-                ],
-                '/foo',
-                '/bar+baz',
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider urlencodedStringPrefixData
-     */
-    public function testUrlencodedStringPrefix($string, $prefix, $expect)
-    {
-        $request = new Request();
-
-        $me = new \ReflectionMethod($request, 'getUrlencodedPrefix');
-        $me->setAccessible(true);
-
-        $this->assertSame($expect, $me->invoke($request, $string, $prefix));
-    }
-
-    public function urlencodedStringPrefixData()
-    {
-        return [
-            ['foo', 'foo', 'foo'],
-            ['fo%6f', 'foo', 'fo%6f'],
-            ['foo/bar', 'foo', 'foo'],
-            ['fo%6f/bar', 'foo', 'fo%6f'],
-            ['f%6f%6f/bar', 'foo', 'f%6f%6f'],
-            ['%66%6F%6F/bar', 'foo', '%66%6F%6F'],
-            ['fo+o/bar', 'fo+o', 'fo+o'],
-            ['fo%2Bo/bar', 'fo+o', 'fo%2Bo'],
-        ];
-    }
-
-    private function disableHttpMethodParameterOverride()
-    {
-        $class = new \ReflectionClass('Symfony\\Component\\HttpFoundation\\Request');
-        $property = $class->getProperty('httpMethodParameterOverride');
-        $property->setAccessible(true);
-        $property->setValue(false);
-    }
-
-    private function getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies)
-    {
-        $request = new Request();
-
-        $server = ['REMOTE_ADDR' => $remoteAddr];
-        if (null !== $httpForwardedFor) {
-            $server['HTTP_X_FORWARDED_FOR'] = $httpForwardedFor;
-        }
-
-        if ($trustedProxies) {
-            Request::setTrustedProxies($trustedProxies, Request::HEADER_X_FORWARDED_ALL);
-        }
-
-        $request->initialize([], [], [], [], [], $server);
-
-        return $request;
-    }
-
-    private function getRequestInstanceForClientIpsForwardedTests($remoteAddr, $httpForwarded, $trustedProxies)
-    {
-        $request = new Request();
-
-        $server = ['REMOTE_ADDR' => $remoteAddr];
-
-        if (null !== $httpForwarded) {
-            $server['HTTP_FORWARDED'] = $httpForwarded;
-        }
-
-        if ($trustedProxies) {
-            Request::setTrustedProxies($trustedProxies, Request::HEADER_FORWARDED);
-        }
-
-        $request->initialize([], [], [], [], [], $server);
-
-        return $request;
-    }
-
-    public function testTrustedProxiesXForwardedFor()
-    {
-        $request = Request::create('http://example.com/');
-        $request->server->set('REMOTE_ADDR', '3.3.3.3');
-        $request->headers->set('X_FORWARDED_FOR', '1.1.1.1, 2.2.2.2');
-        $request->headers->set('X_FORWARDED_HOST', 'foo.example.com:1234, real.example.com:8080');
-        $request->headers->set('X_FORWARDED_PROTO', 'https');
-        $request->headers->set('X_FORWARDED_PORT', 443);
-
-        // no trusted proxies
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // disabling proxy trusting
-        Request::setTrustedProxies([], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // request is forwarded by a non-trusted proxy
-        Request::setTrustedProxies(['2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('1.1.1.1', $request->getClientIp());
-        $this->assertEquals('foo.example.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.4', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // check various X_FORWARDED_PROTO header values
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_X_FORWARDED_ALL);
-        $request->headers->set('X_FORWARDED_PROTO', 'ssl');
-        $this->assertTrue($request->isSecure());
-
-        $request->headers->set('X_FORWARDED_PROTO', 'https, http');
-        $this->assertTrue($request->isSecure());
-    }
-
-    public function testTrustedProxiesForwarded()
-    {
-        $request = Request::create('http://example.com/');
-        $request->server->set('REMOTE_ADDR', '3.3.3.3');
-        $request->headers->set('FORWARDED', 'for=1.1.1.1, host=foo.example.com:8080, proto=https, for=2.2.2.2, host=real.example.com:8080');
-
-        // no trusted proxies
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // disabling proxy trusting
-        Request::setTrustedProxies([], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // request is forwarded by a non-trusted proxy
-        Request::setTrustedProxies(['2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('1.1.1.1', $request->getClientIp());
-        $this->assertEquals('foo.example.com', $request->getHost());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertTrue($request->isSecure());
-
-        // trusted proxy via setTrustedProxies()
-        Request::setTrustedProxies(['3.3.3.4', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $this->assertEquals('3.3.3.3', $request->getClientIp());
-        $this->assertEquals('example.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-        $this->assertFalse($request->isSecure());
-
-        // check various X_FORWARDED_PROTO header values
-        Request::setTrustedProxies(['3.3.3.3', '2.2.2.2'], Request::HEADER_FORWARDED);
-        $request->headers->set('FORWARDED', 'proto=ssl');
-        $this->assertTrue($request->isSecure());
-
-        $request->headers->set('FORWARDED', 'proto=https, proto=http');
-        $this->assertTrue($request->isSecure());
-    }
-
-    /**
-     * @dataProvider iisRequestUriProvider
-     */
-    public function testIISRequestUri($headers, $server, $expectedRequestUri)
-    {
-        $request = new Request();
-        $request->headers->replace($headers);
-        $request->server->replace($server);
-
-        $this->assertEquals($expectedRequestUri, $request->getRequestUri(), '->getRequestUri() is correct');
-
-        $subRequestUri = '/bar/foo';
-        $subRequest = Request::create($subRequestUri, 'get', [], [], [], $request->server->all());
-        $this->assertEquals($subRequestUri, $subRequest->getRequestUri(), '->getRequestUri() is correct in sub request');
-    }
-
-    public function iisRequestUriProvider()
-    {
-        return [
-            [
-                [],
-                [
-                    'IIS_WasUrlRewritten' => '1',
-                    'UNENCODED_URL' => '/foo/bar',
-                ],
-                '/foo/bar',
-            ],
-            [
-                [],
-                [
-                    'ORIG_PATH_INFO' => '/foo/bar',
-                ],
-                '/foo/bar',
-            ],
-            [
-                [],
-                [
-                    'ORIG_PATH_INFO' => '/foo/bar',
-                    'QUERY_STRING' => 'foo=bar',
-                ],
-                '/foo/bar?foo=bar',
-            ],
-        ];
-    }
-
-    public function testTrustedHosts()
-    {
-        // create a request
-        $request = Request::create('/');
-
-        // no trusted host set -> no host check
-        $request->headers->set('host', 'evil.com');
-        $this->assertEquals('evil.com', $request->getHost());
-
-        // add a trusted domain and all its subdomains
-        Request::setTrustedHosts(['^([a-z]{9}\.)?trusted\.com$']);
-
-        // untrusted host
-        $request->headers->set('host', 'evil.com');
-        try {
-            $request->getHost();
-            $this->fail('Request::getHost() should throw an exception when host is not trusted.');
-        } catch (SuspiciousOperationException $e) {
-            $this->assertEquals('Untrusted Host "evil.com".', $e->getMessage());
-        }
-
-        // trusted hosts
-        $request->headers->set('host', 'trusted.com');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(80, $request->getPort());
-
-        $request->server->set('HTTPS', true);
-        $request->headers->set('host', 'trusted.com');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(443, $request->getPort());
-        $request->server->set('HTTPS', false);
-
-        $request->headers->set('host', 'trusted.com:8000');
-        $this->assertEquals('trusted.com', $request->getHost());
-        $this->assertEquals(8000, $request->getPort());
-
-        $request->headers->set('host', 'subdomain.trusted.com');
-        $this->assertEquals('subdomain.trusted.com', $request->getHost());
-    }
-
-    public function testSetTrustedHostsDoesNotBreakOnSpecialCharacters()
-    {
-        Request::setTrustedHosts(['localhost(\.local){0,1}#,example.com', 'localhost']);
-
-        $request = Request::create('/');
-        $request->headers->set('host', 'localhost');
-        $this->assertSame('localhost', $request->getHost());
-    }
-
-    public function testFactory()
-    {
-        Request::setFactory(function (array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null) {
-            return new NewRequest();
-        });
-
-        $this->assertEquals('foo', Request::create('/')->getFoo());
-
-        Request::setFactory(null);
-    }
-
-    /**
-     * @dataProvider getLongHostNames
-     */
-    public function testVeryLongHosts($host)
-    {
-        $start = microtime(true);
-
-        $request = Request::create('/');
-        $request->headers->set('host', $host);
-        $this->assertEquals($host, $request->getHost());
-        $this->assertLessThan(5, microtime(true) - $start);
-    }
-
-    /**
-     * @dataProvider getHostValidities
-     */
-    public function testHostValidity($host, $isValid, $expectedHost = null, $expectedPort = null)
-    {
-        $request = Request::create('/');
-        $request->headers->set('host', $host);
-
-        if ($isValid) {
-            $this->assertSame($expectedHost ?: $host, $request->getHost());
-            if ($expectedPort) {
-                $this->assertSame($expectedPort, $request->getPort());
-            }
-        } else {
-            $this->expectException(SuspiciousOperationException::class);
-            $this->expectExceptionMessage('Invalid Host');
-
-            $request->getHost();
-        }
-    }
-
-    public function getHostValidities()
-    {
-        return [
-            ['.a', false],
-            ['a..', false],
-            ['a.', true],
-            ["\xE9", false],
-            ['[::1]', true],
-            ['[::1]:80', true, '[::1]', 80],
-            [str_repeat('.', 101), false],
-        ];
-    }
-
-    public function getLongHostNames()
-    {
-        return [
-            ['a'.str_repeat('.a', 40000)],
-            [str_repeat(':', 101)],
-        ];
-    }
-
-    /**
-     * @dataProvider methodIdempotentProvider
-     */
-    public function testMethodIdempotent($method, $idempotent)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($idempotent, $request->isMethodIdempotent());
-    }
-
-    public function methodIdempotentProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', true],
-            ['PATCH', false],
-            ['DELETE', true],
-            ['PURGE', true],
-            ['OPTIONS', true],
-            ['TRACE', true],
-            ['CONNECT', false],
-        ];
-    }
-
-    /**
-     * @dataProvider methodSafeProvider
-     */
-    public function testMethodSafe($method, $safe)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($safe, $request->isMethodSafe(false));
-    }
-
-    public function methodSafeProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', false],
-            ['PATCH', false],
-            ['DELETE', false],
-            ['PURGE', false],
-            ['OPTIONS', true],
-            ['TRACE', true],
-            ['CONNECT', false],
-        ];
-    }
-
-    public function testMethodSafeChecksCacheable()
-    {
-        $this->expectException('BadMethodCallException');
-        $request = new Request();
-        $request->setMethod('OPTIONS');
-        $request->isMethodSafe();
-    }
-
-    /**
-     * @dataProvider methodCacheableProvider
-     */
-    public function testMethodCacheable($method, $cacheable)
-    {
-        $request = new Request();
-        $request->setMethod($method);
-        $this->assertEquals($cacheable, $request->isMethodCacheable());
-    }
-
-    public function methodCacheableProvider()
-    {
-        return [
-            ['HEAD', true],
-            ['GET', true],
-            ['POST', false],
-            ['PUT', false],
-            ['PATCH', false],
-            ['DELETE', false],
-            ['PURGE', false],
-            ['OPTIONS', false],
-            ['TRACE', false],
-            ['CONNECT', false],
-        ];
-    }
-
-    /**
-     * @dataProvider protocolVersionProvider
-     */
-    public function testProtocolVersion($serverProtocol, $trustedProxy, $via, $expected)
-    {
-        if ($trustedProxy) {
-            Request::setTrustedProxies(['1.1.1.1'], -1);
-        }
-
-        $request = new Request();
-        $request->server->set('SERVER_PROTOCOL', $serverProtocol);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Via', $via);
-
-        $this->assertSame($expected, $request->getProtocolVersion());
-    }
-
-    public function protocolVersionProvider()
-    {
-        return [
-            'untrusted without via' => ['HTTP/2.0', false, '', 'HTTP/2.0'],
-            'untrusted with via' => ['HTTP/2.0', false, '1.0 fred, 1.1 nowhere.com (Apache/1.1)', 'HTTP/2.0'],
-            'trusted without via' => ['HTTP/2.0', true, '', 'HTTP/2.0'],
-            'trusted with via' => ['HTTP/2.0', true, '1.0 fred, 1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'],
-            'trusted with via and protocol name' => ['HTTP/2.0', true, 'HTTP/1.0 fred, HTTP/1.1 nowhere.com (Apache/1.1)', 'HTTP/1.0'],
-            'trusted with broken via' => ['HTTP/2.0', true, 'HTTP/1^0 foo', 'HTTP/2.0'],
-            'trusted with partially-broken via' => ['HTTP/2.0', true, '1.0 fred, foo', 'HTTP/1.0'],
-        ];
-    }
-
-    public function nonstandardRequestsData()
-    {
-        return [
-            ['',  '', '/', 'http://host:8080/', ''],
-            ['/', '', '/', 'http://host:8080/', ''],
-
-            ['hello/app.php/x',  '', '/x', 'http://host:8080/hello/app.php/x', '/hello', '/hello/app.php'],
-            ['/hello/app.php/x', '', '/x', 'http://host:8080/hello/app.php/x', '/hello', '/hello/app.php'],
-
-            ['',      'a=b', '/', 'http://host:8080/?a=b'],
-            ['?a=b',  'a=b', '/', 'http://host:8080/?a=b'],
-            ['/?a=b', 'a=b', '/', 'http://host:8080/?a=b'],
-
-            ['x',      'a=b', '/x', 'http://host:8080/x?a=b'],
-            ['x?a=b',  'a=b', '/x', 'http://host:8080/x?a=b'],
-            ['/x?a=b', 'a=b', '/x', 'http://host:8080/x?a=b'],
-
-            ['hello/x',  '', '/x', 'http://host:8080/hello/x', '/hello'],
-            ['/hello/x', '', '/x', 'http://host:8080/hello/x', '/hello'],
-
-            ['hello/app.php/x',      'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-            ['hello/app.php/x?a=b',  'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-            ['/hello/app.php/x?a=b', 'a=b', '/x', 'http://host:8080/hello/app.php/x?a=b', '/hello', '/hello/app.php'],
-        ];
-    }
-
-    /**
-     * @dataProvider nonstandardRequestsData
-     */
-    public function testNonstandardRequests($requestUri, $queryString, $expectedPathInfo, $expectedUri, $expectedBasePath = '', $expectedBaseUrl = null)
-    {
-        if (null === $expectedBaseUrl) {
-            $expectedBaseUrl = $expectedBasePath;
-        }
-
-        $server = [
-            'HTTP_HOST' => 'host:8080',
-            'SERVER_PORT' => '8080',
-            'QUERY_STRING' => $queryString,
-            'PHP_SELF' => '/hello/app.php',
-            'SCRIPT_FILENAME' => '/some/path/app.php',
-            'REQUEST_URI' => $requestUri,
-        ];
-
-        $request = new Request([], [], [], [], [], $server);
-
-        $this->assertEquals($expectedPathInfo, $request->getPathInfo());
-        $this->assertEquals($expectedUri, $request->getUri());
-        $this->assertEquals($queryString, $request->getQueryString());
-        $this->assertEquals(8080, $request->getPort());
-        $this->assertEquals('host:8080', $request->getHttpHost());
-        $this->assertEquals($expectedBaseUrl, $request->getBaseUrl());
-        $this->assertEquals($expectedBasePath, $request->getBasePath());
-    }
-
-    public function testTrustedHost()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost:8080');
-        $request->headers->set('X-Forwarded-Host', 'localhost:8080');
-
-        $this->assertSame('localhost:8080', $request->getHttpHost());
-        $this->assertSame(8080, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host="[::1]:443"');
-        $request->headers->set('X-Forwarded-Host', '[::1]:443');
-        $request->headers->set('X-Forwarded-Port', 443);
-
-        $this->assertSame('[::1]:443', $request->getHttpHost());
-        $this->assertSame(443, $request->getPort());
-    }
-
-    public function testTrustedPort()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost:8080');
-        $request->headers->set('X-Forwarded-Port', 8080);
-
-        $this->assertSame(8080, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host=localhost');
-        $request->headers->set('X-Forwarded-Port', 80);
-
-        $this->assertSame(80, $request->getPort());
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('Forwarded', 'host="[::1]"');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-        $request->headers->set('X-Forwarded-Port', 443);
-
-        $this->assertSame(443, $request->getPort());
-    }
-
-    public function testTrustedPortDoesNotDefaultToZero()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL);
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('X-Forwarded-Host', 'test.example.com');
-        $request->headers->set('X-Forwarded-Port', '');
-
-        $this->assertSame(80, $request->getPort());
-    }
-}
-
-class RequestContentProxy extends Request
-{
-    public function getContent($asResource = false)
-    {
-        return http_build_query(['_method' => 'PUT', 'content' => 'mycontent'], '', '&');
-    }
-}
-
-class NewRequest extends Request
-{
-    public function getFoo()
-    {
-        return 'foo';
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php b/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php
deleted file mode 100644
index 21a66bbf..00000000
--- a/vendor/symfony/http-foundation/Tests/ResponseFunctionalTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @requires PHP 7.0
- */
-class ResponseFunctionalTest extends TestCase
-{
-    private static $server;
-
-    public static function setUpBeforeClass(): void
-    {
-        $spec = [
-            1 => ['file', '/dev/null', 'w'],
-            2 => ['file', '/dev/null', 'w'],
-        ];
-        if (!self::$server = @proc_open('exec php -S localhost:8054', $spec, $pipes, __DIR__.'/Fixtures/response-functional')) {
-            self::markTestSkipped('PHP server unable to start.');
-        }
-        sleep(1);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        if (self::$server) {
-            proc_terminate(self::$server);
-            proc_close(self::$server);
-        }
-    }
-
-    /**
-     * @dataProvider provideCookie
-     */
-    public function testCookie($fixture)
-    {
-        $result = file_get_contents(sprintf('http://localhost:8054/%s.php', $fixture));
-        $this->assertStringMatchesFormatFile(__DIR__.sprintf('/Fixtures/response-functional/%s.expected', $fixture), $result);
-    }
-
-    public function provideCookie()
-    {
-        foreach (glob(__DIR__.'/Fixtures/response-functional/*.php') as $file) {
-            yield [pathinfo($file, PATHINFO_FILENAME)];
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php b/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php
deleted file mode 100644
index dc4f7105..00000000
--- a/vendor/symfony/http-foundation/Tests/ResponseHeaderBagTest.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\ResponseHeaderBag;
-
-/**
- * @group time-sensitive
- */
-class ResponseHeaderBagTest extends TestCase
-{
-    public function testAllPreserveCase()
-    {
-        $headers = [
-            'fOo' => 'BAR',
-            'ETag' => 'xyzzy',
-            'Content-MD5' => 'Q2hlY2sgSW50ZWdyaXR5IQ==',
-            'P3P' => 'CP="CAO PSA OUR"',
-            'WWW-Authenticate' => 'Basic realm="WallyWorld"',
-            'X-UA-Compatible' => 'IE=edge,chrome=1',
-            'X-XSS-Protection' => '1; mode=block',
-        ];
-
-        $bag = new ResponseHeaderBag($headers);
-        $allPreservedCase = $bag->allPreserveCase();
-
-        foreach (array_keys($headers) as $headerName) {
-            $this->assertArrayHasKey($headerName, $allPreservedCase, '->allPreserveCase() gets all input keys in original case');
-        }
-    }
-
-    public function testCacheControlHeader()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag = new ResponseHeaderBag(['Cache-Control' => 'public']);
-        $this->assertEquals('public', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-
-        $bag = new ResponseHeaderBag(['ETag' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('private'));
-        $this->assertTrue($bag->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($bag->hasCacheControlDirective('max-age'));
-
-        $bag = new ResponseHeaderBag(['Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag([
-            'Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT',
-            'Cache-Control' => 'max-age=3600',
-        ]);
-        $this->assertEquals('max-age=3600, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['Last-Modified' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['Etag' => 'abcde', 'Last-Modified' => 'abcde']);
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'max-age=100']);
-        $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 's-maxage=100']);
-        $this->assertEquals('s-maxage=100', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'private, max-age=100']);
-        $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag(['cache-control' => 'public, max-age=100']);
-        $this->assertEquals('max-age=100, public', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Last-Modified', 'abcde');
-        $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Cache-Control', ['public', 'must-revalidate']);
-        $this->assertCount(1, $bag->get('Cache-Control', null, false));
-        $this->assertEquals('must-revalidate, public', $bag->get('Cache-Control'));
-
-        $bag = new ResponseHeaderBag();
-        $bag->set('Cache-Control', 'public');
-        $bag->set('Cache-Control', 'must-revalidate', false);
-        $this->assertCount(1, $bag->get('Cache-Control', null, false));
-        $this->assertEquals('must-revalidate, public', $bag->get('Cache-Control'));
-    }
-
-    public function testCacheControlClone()
-    {
-        $headers = ['foo' => 'bar'];
-        $bag1 = new ResponseHeaderBag($headers);
-        $bag2 = new ResponseHeaderBag($bag1->allPreserveCase());
-        $this->assertEquals($bag1->allPreserveCase(), $bag2->allPreserveCase());
-    }
-
-    public function testToStringIncludesCookieHeaders()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-
-        $this->assertSetCookieHeader('foo=bar; path=/; httponly; samesite=lax', $bag);
-
-        $bag->clearCookie('foo');
-
-        $this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; httponly', $bag);
-    }
-
-    public function testClearCookieSecureNotHttpOnly()
-    {
-        $bag = new ResponseHeaderBag([]);
-
-        $bag->clearCookie('foo', '/', null, true, false);
-
-        $this->assertSetCookieHeader('foo=deleted; expires='.gmdate('D, d-M-Y H:i:s T', time() - 31536001).'; Max-Age=0; path=/; secure', $bag);
-    }
-
-    public function testReplace()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag->replace(['Cache-Control' => 'public']);
-        $this->assertEquals('public', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('public'));
-    }
-
-    public function testReplaceWithRemove()
-    {
-        $bag = new ResponseHeaderBag([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-
-        $bag->remove('Cache-Control');
-        $bag->replace([]);
-        $this->assertEquals('no-cache, private', $bag->get('Cache-Control'));
-        $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testCookiesWithSameNames()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/foo', 'foo.bar'));
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/bar', 'foo.bar'));
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/bar', 'bar.foo'));
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-
-        $this->assertCount(4, $bag->getCookies());
-        $this->assertEquals('foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax', $bag->get('set-cookie'));
-        $this->assertEquals([
-            'foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax',
-            'foo=bar; path=/path/bar; domain=foo.bar; httponly; samesite=lax',
-            'foo=bar; path=/path/bar; domain=bar.foo; httponly; samesite=lax',
-            'foo=bar; path=/; httponly; samesite=lax',
-        ], $bag->get('set-cookie', null, false));
-
-        $this->assertSetCookieHeader('foo=bar; path=/path/foo; domain=foo.bar; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=foo.bar; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=bar.foo; httponly; samesite=lax', $bag);
-        $this->assertSetCookieHeader('foo=bar; path=/; httponly; samesite=lax', $bag);
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-
-        $this->assertArrayHasKey('foo', $cookies['foo.bar']['/path/foo']);
-        $this->assertArrayHasKey('foo', $cookies['foo.bar']['/path/bar']);
-        $this->assertArrayHasKey('foo', $cookies['bar.foo']['/path/bar']);
-        $this->assertArrayHasKey('foo', $cookies['']['/']);
-    }
-
-    public function testRemoveCookie()
-    {
-        $bag = new ResponseHeaderBag();
-        $this->assertFalse($bag->has('set-cookie'));
-
-        $bag->setCookie(Cookie::create('foo', 'bar', 0, '/path/foo', 'foo.bar'));
-        $bag->setCookie(Cookie::create('bar', 'foo', 0, '/path/bar', 'foo.bar'));
-        $this->assertTrue($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayHasKey('/path/foo', $cookies['foo.bar']);
-
-        $bag->removeCookie('foo', '/path/foo', 'foo.bar');
-        $this->assertTrue($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('/path/foo', $cookies['foo.bar']);
-
-        $bag->removeCookie('bar', '/path/bar', 'foo.bar');
-        $this->assertFalse($bag->has('set-cookie'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('foo.bar', $cookies);
-    }
-
-    public function testRemoveCookieWithNullRemove()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->setCookie(Cookie::create('foo', 'bar'));
-        $bag->setCookie(Cookie::create('bar', 'foo'));
-
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayHasKey('/', $cookies['']);
-
-        $bag->removeCookie('foo', null);
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertArrayNotHasKey('foo', $cookies['']['/']);
-
-        $bag->removeCookie('bar', null);
-        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
-        $this->assertFalse(isset($cookies['']['/']['bar']));
-    }
-
-    public function testSetCookieHeader()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->set('set-cookie', 'foo=bar');
-        $this->assertEquals([Cookie::create('foo', 'bar', 0, '/', null, false, false, true, null)], $bag->getCookies());
-
-        $bag->set('set-cookie', 'foo2=bar2', false);
-        $this->assertEquals([
-            Cookie::create('foo', 'bar', 0, '/', null, false, false, true, null),
-            Cookie::create('foo2', 'bar2', 0, '/', null, false, false, true, null),
-        ], $bag->getCookies());
-
-        $bag->remove('set-cookie');
-        $this->assertEquals([], $bag->getCookies());
-    }
-
-    public function testGetCookiesWithInvalidArgument()
-    {
-        $this->expectException('InvalidArgumentException');
-        $bag = new ResponseHeaderBag();
-
-        $bag->getCookies('invalid_argument');
-    }
-
-    public function testToStringDoesntMessUpHeaders()
-    {
-        $headers = new ResponseHeaderBag();
-
-        $headers->set('Location', 'http://www.symfony.com');
-        $headers->set('Content-type', 'text/html');
-
-        (string) $headers;
-
-        $allHeaders = $headers->allPreserveCase();
-        $this->assertEquals(['http://www.symfony.com'], $allHeaders['Location']);
-        $this->assertEquals(['text/html'], $allHeaders['Content-type']);
-    }
-
-    public function testDateHeaderAddedOnCreation()
-    {
-        $now = time();
-
-        $bag = new ResponseHeaderBag();
-        $this->assertTrue($bag->has('Date'));
-
-        $this->assertEquals($now, $bag->getDate('Date')->getTimestamp());
-    }
-
-    public function testDateHeaderCanBeSetOnCreation()
-    {
-        $someDate = 'Thu, 23 Mar 2017 09:15:12 GMT';
-        $bag = new ResponseHeaderBag(['Date' => $someDate]);
-
-        $this->assertEquals($someDate, $bag->get('Date'));
-    }
-
-    public function testDateHeaderWillBeRecreatedWhenRemoved()
-    {
-        $someDate = 'Thu, 23 Mar 2017 09:15:12 GMT';
-        $bag = new ResponseHeaderBag(['Date' => $someDate]);
-        $bag->remove('Date');
-
-        // a (new) Date header is still present
-        $this->assertTrue($bag->has('Date'));
-        $this->assertNotEquals($someDate, $bag->get('Date'));
-    }
-
-    public function testDateHeaderWillBeRecreatedWhenHeadersAreReplaced()
-    {
-        $bag = new ResponseHeaderBag();
-        $bag->replace([]);
-
-        $this->assertTrue($bag->has('Date'));
-    }
-
-    private function assertSetCookieHeader($expected, ResponseHeaderBag $actual)
-    {
-        $this->assertRegExp('#^Set-Cookie:\s+'.preg_quote($expected, '#').'$#m', str_replace("\r\n", "\n", (string) $actual));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseTest.php b/vendor/symfony/http-foundation/Tests/ResponseTest.php
deleted file mode 100644
index ad1f806d..00000000
--- a/vendor/symfony/http-foundation/Tests/ResponseTest.php
+++ /dev/null
@@ -1,1070 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * @group time-sensitive
- */
-class ResponseTest extends ResponseTestCase
-{
-    public function testCreate()
-    {
-        $response = Response::create('foo', 301, ['Foo' => 'bar']);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-        $this->assertEquals(301, $response->getStatusCode());
-        $this->assertEquals('bar', $response->headers->get('foo'));
-    }
-
-    public function testToString()
-    {
-        $response = new Response();
-        $response = explode("\r\n", $response);
-        $this->assertEquals('HTTP/1.0 200 OK', $response[0]);
-        $this->assertEquals('Cache-Control: no-cache, private', $response[1]);
-    }
-
-    public function testClone()
-    {
-        $response = new Response();
-        $responseClone = clone $response;
-        $this->assertEquals($response, $responseClone);
-    }
-
-    public function testSendHeaders()
-    {
-        $response = new Response();
-        $headers = $response->sendHeaders();
-        $this->assertObjectHasAttribute('headers', $headers);
-        $this->assertObjectHasAttribute('content', $headers);
-        $this->assertObjectHasAttribute('version', $headers);
-        $this->assertObjectHasAttribute('statusCode', $headers);
-        $this->assertObjectHasAttribute('statusText', $headers);
-        $this->assertObjectHasAttribute('charset', $headers);
-    }
-
-    public function testSend()
-    {
-        $response = new Response();
-        $responseSend = $response->send();
-        $this->assertObjectHasAttribute('headers', $responseSend);
-        $this->assertObjectHasAttribute('content', $responseSend);
-        $this->assertObjectHasAttribute('version', $responseSend);
-        $this->assertObjectHasAttribute('statusCode', $responseSend);
-        $this->assertObjectHasAttribute('statusText', $responseSend);
-        $this->assertObjectHasAttribute('charset', $responseSend);
-    }
-
-    public function testGetCharset()
-    {
-        $response = new Response();
-        $charsetOrigin = 'UTF-8';
-        $response->setCharset($charsetOrigin);
-        $charset = $response->getCharset();
-        $this->assertEquals($charsetOrigin, $charset);
-    }
-
-    public function testIsCacheable()
-    {
-        $response = new Response();
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithErrorCode()
-    {
-        $response = new Response('', 500);
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithNoStoreDirective()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'private');
-        $this->assertFalse($response->isCacheable());
-    }
-
-    public function testIsCacheableWithSetTtl()
-    {
-        $response = new Response();
-        $response->setTtl(10);
-        $this->assertTrue($response->isCacheable());
-    }
-
-    public function testMustRevalidate()
-    {
-        $response = new Response();
-        $this->assertFalse($response->mustRevalidate());
-    }
-
-    public function testMustRevalidateWithMustRevalidateCacheControlHeader()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'must-revalidate');
-
-        $this->assertTrue($response->mustRevalidate());
-    }
-
-    public function testMustRevalidateWithProxyRevalidateCacheControlHeader()
-    {
-        $response = new Response();
-        $response->headers->set('cache-control', 'proxy-revalidate');
-
-        $this->assertTrue($response->mustRevalidate());
-    }
-
-    public function testSetNotModified()
-    {
-        $response = new Response('foo');
-        $modified = $response->setNotModified();
-        $this->assertObjectHasAttribute('headers', $modified);
-        $this->assertObjectHasAttribute('content', $modified);
-        $this->assertObjectHasAttribute('version', $modified);
-        $this->assertObjectHasAttribute('statusCode', $modified);
-        $this->assertObjectHasAttribute('statusText', $modified);
-        $this->assertObjectHasAttribute('charset', $modified);
-        $this->assertEquals(304, $modified->getStatusCode());
-
-        ob_start();
-        $modified->sendContent();
-        $string = ob_get_clean();
-        $this->assertEmpty($string);
-    }
-
-    public function testIsSuccessful()
-    {
-        $response = new Response();
-        $this->assertTrue($response->isSuccessful());
-    }
-
-    public function testIsNotModified()
-    {
-        $response = new Response();
-        $modified = $response->isNotModified(new Request());
-        $this->assertFalse($modified);
-    }
-
-    public function testIsNotModifiedNotSafe()
-    {
-        $request = Request::create('/homepage', 'POST');
-
-        $response = new Response();
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedLastModified()
-    {
-        $before = 'Sun, 25 Aug 2013 18:32:31 GMT';
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $after = 'Sun, 25 Aug 2013 19:33:31 GMT';
-
-        $request = new Request();
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('Last-Modified', $modified);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', $before);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', $after);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('Last-Modified', '');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedEtag()
-    {
-        $etagOne = 'randomly_generated_etag';
-        $etagTwo = 'randomly_generated_etag_2';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s, %s', $etagOne, $etagTwo, 'etagThree'));
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etagOne);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', $etagTwo);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', '');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedLastModifiedAndEtag()
-    {
-        $before = 'Sun, 25 Aug 2013 18:32:31 GMT';
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $after = 'Sun, 25 Aug 2013 19:33:31 GMT';
-        $etag = 'randomly_generated_etag';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s', $etag, 'etagThree'));
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etag);
-        $response->headers->set('Last-Modified', $after);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('ETag', 'non-existent-etag');
-        $response->headers->set('Last-Modified', $before);
-        $this->assertFalse($response->isNotModified($request));
-
-        $response->headers->set('ETag', $etag);
-        $response->headers->set('Last-Modified', $modified);
-        $this->assertTrue($response->isNotModified($request));
-    }
-
-    public function testIsNotModifiedIfModifiedSinceAndEtagWithoutLastModified()
-    {
-        $modified = 'Sun, 25 Aug 2013 18:33:31 GMT';
-        $etag = 'randomly_generated_etag';
-
-        $request = new Request();
-        $request->headers->set('if_none_match', sprintf('%s, %s', $etag, 'etagThree'));
-        $request->headers->set('If-Modified-Since', $modified);
-
-        $response = new Response();
-
-        $response->headers->set('ETag', $etag);
-        $this->assertTrue($response->isNotModified($request));
-
-        $response->headers->set('ETag', 'non-existent-etag');
-        $this->assertFalse($response->isNotModified($request));
-    }
-
-    public function testIsValidateable()
-    {
-        $response = new Response('', 200, ['Last-Modified' => $this->createDateTimeOneHourAgo()->format(DATE_RFC2822)]);
-        $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if Last-Modified is present');
-
-        $response = new Response('', 200, ['ETag' => '"12345"']);
-        $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if ETag is present');
-
-        $response = new Response();
-        $this->assertFalse($response->isValidateable(), '->isValidateable() returns false when no validator is present');
-    }
-
-    public function testGetDate()
-    {
-        $oneHourAgo = $this->createDateTimeOneHourAgo();
-        $response = new Response('', 200, ['Date' => $oneHourAgo->format(DATE_RFC2822)]);
-        $date = $response->getDate();
-        $this->assertEquals($oneHourAgo->getTimestamp(), $date->getTimestamp(), '->getDate() returns the Date header if present');
-
-        $response = new Response();
-        $date = $response->getDate();
-        $this->assertEquals(time(), $date->getTimestamp(), '->getDate() returns the current Date if no Date header present');
-
-        $response = new Response('', 200, ['Date' => $this->createDateTimeOneHourAgo()->format(DATE_RFC2822)]);
-        $now = $this->createDateTimeNow();
-        $response->headers->set('Date', $now->format(DATE_RFC2822));
-        $date = $response->getDate();
-        $this->assertEquals($now->getTimestamp(), $date->getTimestamp(), '->getDate() returns the date when the header has been modified');
-
-        $response = new Response('', 200);
-        $now = $this->createDateTimeNow();
-        $response->headers->remove('Date');
-        $date = $response->getDate();
-        $this->assertEquals($now->getTimestamp(), $date->getTimestamp(), '->getDate() returns the current Date when the header has previously been removed');
-    }
-
-    public function testGetMaxAge()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 's-maxage=600, max-age=0');
-        $this->assertEquals(600, $response->getMaxAge(), '->getMaxAge() uses s-maxage cache control directive when present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=600');
-        $this->assertEquals(600, $response->getMaxAge(), '->getMaxAge() falls back to max-age when no s-maxage directive present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'must-revalidate');
-        $response->headers->set('Expires', $this->createDateTimeOneHourLater()->format(DATE_RFC2822));
-        $this->assertEquals(3600, $response->getMaxAge(), '->getMaxAge() falls back to Expires when no max-age or s-maxage directive present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'must-revalidate');
-        $response->headers->set('Expires', -1);
-        $this->assertLessThanOrEqual(time() - 2 * 86400, $response->getExpires()->format('U'));
-
-        $response = new Response();
-        $this->assertNull($response->getMaxAge(), '->getMaxAge() returns null if no freshness information available');
-    }
-
-    public function testSetSharedMaxAge()
-    {
-        $response = new Response();
-        $response->setSharedMaxAge(20);
-
-        $cacheControl = $response->headers->get('Cache-Control');
-        $this->assertEquals('public, s-maxage=20', $cacheControl);
-    }
-
-    public function testIsPrivate()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100');
-        $response->setPrivate();
-        $this->assertEquals(100, $response->headers->getCacheControlDirective('max-age'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertTrue($response->headers->getCacheControlDirective('private'), '->isPrivate() adds the private Cache-Control directive when set to true');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'public, max-age=100');
-        $response->setPrivate();
-        $this->assertEquals(100, $response->headers->getCacheControlDirective('max-age'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertTrue($response->headers->getCacheControlDirective('private'), '->isPrivate() adds the private Cache-Control directive when set to true');
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'), '->isPrivate() removes the public Cache-Control directive');
-    }
-
-    public function testExpire()
-    {
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100');
-        $response->expire();
-        $this->assertEquals(100, $response->headers->get('Age'), '->expire() sets the Age to max-age when present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=100, s-maxage=500');
-        $response->expire();
-        $this->assertEquals(500, $response->headers->get('Age'), '->expire() sets the Age to s-maxage when both max-age and s-maxage are present');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=5, s-maxage=500');
-        $response->headers->set('Age', '1000');
-        $response->expire();
-        $this->assertEquals(1000, $response->headers->get('Age'), '->expire() does nothing when the response is already stale/expired');
-
-        $response = new Response();
-        $response->expire();
-        $this->assertFalse($response->headers->has('Age'), '->expire() does nothing when the response does not include freshness information');
-
-        $response = new Response();
-        $response->headers->set('Expires', -1);
-        $response->expire();
-        $this->assertNull($response->headers->get('Age'), '->expire() does not set the Age when the response is expired');
-
-        $response = new Response();
-        $response->headers->set('Expires', date(DATE_RFC2822, time() + 600));
-        $response->expire();
-        $this->assertNull($response->headers->get('Expires'), '->expire() removes the Expires header when the response is fresh');
-    }
-
-    public function testNullExpireHeader()
-    {
-        $response = new Response(null, 200, ['Expires' => null]);
-        $this->assertNull($response->getExpires());
-    }
-
-    public function testGetTtl()
-    {
-        $response = new Response();
-        $this->assertNull($response->getTtl(), '->getTtl() returns null when no Expires or Cache-Control headers are present');
-
-        $response = new Response();
-        $response->headers->set('Expires', $this->createDateTimeOneHourLater()->format(DATE_RFC2822));
-        $this->assertEquals(3600, $response->getTtl(), '->getTtl() uses the Expires header when no max-age is present');
-
-        $response = new Response();
-        $response->headers->set('Expires', $this->createDateTimeOneHourAgo()->format(DATE_RFC2822));
-        $this->assertLessThan(0, $response->getTtl(), '->getTtl() returns negative values when Expires is in past');
-
-        $response = new Response();
-        $response->headers->set('Expires', $response->getDate()->format(DATE_RFC2822));
-        $response->headers->set('Age', 0);
-        $this->assertSame(0, $response->getTtl(), '->getTtl() correctly handles zero');
-
-        $response = new Response();
-        $response->headers->set('Cache-Control', 'max-age=60');
-        $this->assertEquals(60, $response->getTtl(), '->getTtl() uses Cache-Control max-age when present');
-    }
-
-    public function testSetClientTtl()
-    {
-        $response = new Response();
-        $response->setClientTtl(10);
-
-        $this->assertEquals($response->getMaxAge(), $response->getAge() + 10);
-    }
-
-    public function testGetSetProtocolVersion()
-    {
-        $response = new Response();
-
-        $this->assertEquals('1.0', $response->getProtocolVersion());
-
-        $response->setProtocolVersion('1.1');
-
-        $this->assertEquals('1.1', $response->getProtocolVersion());
-    }
-
-    public function testGetVary()
-    {
-        $response = new Response();
-        $this->assertEquals([], $response->getVary(), '->getVary() returns an empty array if no Vary header is present');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language');
-        $this->assertEquals(['Accept-Language'], $response->getVary(), '->getVary() parses a single header name value');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language User-Agent    X-Foo');
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->getVary() parses multiple header name values separated by spaces');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language,User-Agent,    X-Foo');
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->getVary() parses multiple header name values separated by commas');
-
-        $vary = ['Accept-Language', 'User-Agent', 'X-foo'];
-
-        $response = new Response();
-        $response->headers->set('Vary', $vary);
-        $this->assertEquals($vary, $response->getVary(), '->getVary() parses multiple header name values in arrays');
-
-        $response = new Response();
-        $response->headers->set('Vary', 'Accept-Language, User-Agent, X-foo');
-        $this->assertEquals($vary, $response->getVary(), '->getVary() parses multiple header name values in arrays');
-    }
-
-    public function testSetVary()
-    {
-        $response = new Response();
-        $response->setVary('Accept-Language');
-        $this->assertEquals(['Accept-Language'], $response->getVary());
-
-        $response->setVary('Accept-Language, User-Agent');
-        $this->assertEquals(['Accept-Language', 'User-Agent'], $response->getVary(), '->setVary() replace the vary header by default');
-
-        $response->setVary('X-Foo', false);
-        $this->assertEquals(['Accept-Language', 'User-Agent', 'X-Foo'], $response->getVary(), '->setVary() doesn\'t wipe out earlier Vary headers if replace is set to false');
-    }
-
-    public function testDefaultContentType()
-    {
-        $headerMock = $this->getMockBuilder('Symfony\Component\HttpFoundation\ResponseHeaderBag')->setMethods(['set'])->getMock();
-        $headerMock->expects($this->at(0))
-            ->method('set')
-            ->with('Content-Type', 'text/html');
-        $headerMock->expects($this->at(1))
-            ->method('set')
-            ->with('Content-Type', 'text/html; charset=UTF-8');
-
-        $response = new Response('foo');
-        $response->headers = $headerMock;
-
-        $response->prepare(new Request());
-    }
-
-    public function testContentTypeCharset()
-    {
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/css');
-
-        // force fixContentType() to be called
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/css; charset=UTF-8', $response->headers->get('Content-Type'));
-    }
-
-    public function testPrepareDoesNothingIfContentTypeIsSet()
-    {
-        $response = new Response('foo');
-        $response->headers->set('Content-Type', 'text/plain');
-
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/plain; charset=UTF-8', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareDoesNothingIfRequestFormatIsNotDefined()
-    {
-        $response = new Response('foo');
-
-        $response->prepare(new Request());
-
-        $this->assertEquals('text/html; charset=UTF-8', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareSetContentType()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-        $request->setRequestFormat('json');
-
-        $response->prepare($request);
-
-        $this->assertEquals('application/json', $response->headers->get('content-type'));
-    }
-
-    public function testPrepareRemovesContentForHeadRequests()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/', 'HEAD');
-
-        $length = 12345;
-        $response->headers->set('Content-Length', $length);
-        $response->prepare($request);
-
-        $this->assertEquals('', $response->getContent());
-        $this->assertEquals($length, $response->headers->get('Content-Length'), 'Content-Length should be as if it was GET; see RFC2616 14.13');
-    }
-
-    public function testPrepareRemovesContentForInformationalResponse()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-
-        $response->setContent('content');
-        $response->setStatusCode(101);
-        $response->prepare($request);
-        $this->assertEquals('', $response->getContent());
-        $this->assertFalse($response->headers->has('Content-Type'));
-
-        $response->setContent('content');
-        $response->setStatusCode(304);
-        $response->prepare($request);
-        $this->assertEquals('', $response->getContent());
-        $this->assertFalse($response->headers->has('Content-Type'));
-        $this->assertFalse($response->headers->has('Content-Length'));
-    }
-
-    public function testPrepareRemovesContentLength()
-    {
-        $response = new Response('foo');
-        $request = Request::create('/');
-
-        $response->headers->set('Content-Length', 12345);
-        $response->prepare($request);
-        $this->assertEquals(12345, $response->headers->get('Content-Length'));
-
-        $response->headers->set('Transfer-Encoding', 'chunked');
-        $response->prepare($request);
-        $this->assertFalse($response->headers->has('Content-Length'));
-    }
-
-    public function testPrepareSetsPragmaOnHttp10Only()
-    {
-        $request = Request::create('/', 'GET');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.0');
-
-        $response = new Response('foo');
-        $response->prepare($request);
-        $this->assertEquals('no-cache', $response->headers->get('pragma'));
-        $this->assertEquals('-1', $response->headers->get('expires'));
-
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.1');
-        $response = new Response('foo');
-        $response->prepare($request);
-        $this->assertFalse($response->headers->has('pragma'));
-        $this->assertFalse($response->headers->has('expires'));
-    }
-
-    public function testPrepareSetsCookiesSecure()
-    {
-        $cookie = Cookie::create('foo', 'bar');
-
-        $response = new Response('foo');
-        $response->headers->setCookie($cookie);
-
-        $request = Request::create('/', 'GET');
-        $response->prepare($request);
-
-        $this->assertFalse($cookie->isSecure());
-
-        $request = Request::create('https://localhost/', 'GET');
-        $response->prepare($request);
-
-        $this->assertTrue($cookie->isSecure());
-    }
-
-    public function testSetCache()
-    {
-        $response = new Response();
-        // ['etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public']
-        try {
-            $response->setCache(['wrong option' => 'value']);
-            $this->fail('->setCache() throws an InvalidArgumentException if an option is not supported');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('InvalidArgumentException', $e, '->setCache() throws an InvalidArgumentException if an option is not supported');
-            $this->assertStringContainsString('"wrong option"', $e->getMessage());
-        }
-
-        $options = ['etag' => '"whatever"'];
-        $response->setCache($options);
-        $this->assertEquals($response->getEtag(), '"whatever"');
-
-        $now = $this->createDateTimeNow();
-        $options = ['last_modified' => $now];
-        $response->setCache($options);
-        $this->assertEquals($response->getLastModified()->getTimestamp(), $now->getTimestamp());
-
-        $options = ['max_age' => 100];
-        $response->setCache($options);
-        $this->assertEquals($response->getMaxAge(), 100);
-
-        $options = ['s_maxage' => 200];
-        $response->setCache($options);
-        $this->assertEquals($response->getMaxAge(), 200);
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['public' => true]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['public' => false]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['private' => true]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('public'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['private' => false]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-
-        $response->setCache(['immutable' => true]);
-        $this->assertTrue($response->headers->hasCacheControlDirective('immutable'));
-
-        $response->setCache(['immutable' => false]);
-        $this->assertFalse($response->headers->hasCacheControlDirective('immutable'));
-    }
-
-    public function testSendContent()
-    {
-        $response = new Response('test response rendering', 200);
-
-        ob_start();
-        $response->sendContent();
-        $string = ob_get_clean();
-        $this->assertStringContainsString('test response rendering', $string);
-    }
-
-    public function testSetPublic()
-    {
-        $response = new Response();
-        $response->setPublic();
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-    }
-
-    public function testSetImmutable()
-    {
-        $response = new Response();
-        $response->setImmutable();
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('immutable'));
-    }
-
-    public function testIsImmutable()
-    {
-        $response = new Response();
-        $response->setImmutable();
-
-        $this->assertTrue($response->isImmutable());
-    }
-
-    public function testSetDate()
-    {
-        $response = new Response();
-        $response->setDate(\DateTime::createFromFormat(\DateTime::ATOM, '2013-01-26T09:21:56+0100', new \DateTimeZone('Europe/Berlin')));
-
-        $this->assertEquals('2013-01-26T08:21:56+00:00', $response->getDate()->format(\DateTime::ATOM));
-    }
-
-    public function testSetDateWithImmutable()
-    {
-        $response = new Response();
-        $response->setDate(\DateTimeImmutable::createFromFormat(\DateTime::ATOM, '2013-01-26T09:21:56+0100', new \DateTimeZone('Europe/Berlin')));
-
-        $this->assertEquals('2013-01-26T08:21:56+00:00', $response->getDate()->format(\DateTime::ATOM));
-    }
-
-    public function testSetExpires()
-    {
-        $response = new Response();
-        $response->setExpires(null);
-
-        $this->assertNull($response->getExpires(), '->setExpires() remove the header when passed null');
-
-        $now = $this->createDateTimeNow();
-        $response->setExpires($now);
-
-        $this->assertEquals($response->getExpires()->getTimestamp(), $now->getTimestamp());
-    }
-
-    public function testSetExpiresWithImmutable()
-    {
-        $response = new Response();
-
-        $now = $this->createDateTimeImmutableNow();
-        $response->setExpires($now);
-
-        $this->assertEquals($response->getExpires()->getTimestamp(), $now->getTimestamp());
-    }
-
-    public function testSetLastModified()
-    {
-        $response = new Response();
-        $response->setLastModified($this->createDateTimeNow());
-        $this->assertNotNull($response->getLastModified());
-
-        $response->setLastModified(null);
-        $this->assertNull($response->getLastModified());
-    }
-
-    public function testSetLastModifiedWithImmutable()
-    {
-        $response = new Response();
-        $response->setLastModified($this->createDateTimeImmutableNow());
-        $this->assertNotNull($response->getLastModified());
-
-        $response->setLastModified(null);
-        $this->assertNull($response->getLastModified());
-    }
-
-    public function testIsInvalid()
-    {
-        $response = new Response();
-
-        try {
-            $response->setStatusCode(99);
-            $this->fail();
-        } catch (\InvalidArgumentException $e) {
-            $this->assertTrue($response->isInvalid());
-        }
-
-        try {
-            $response->setStatusCode(650);
-            $this->fail();
-        } catch (\InvalidArgumentException $e) {
-            $this->assertTrue($response->isInvalid());
-        }
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isInvalid());
-    }
-
-    /**
-     * @dataProvider getStatusCodeFixtures
-     */
-    public function testSetStatusCode($code, $text, $expectedText)
-    {
-        $response = new Response();
-
-        $response->setStatusCode($code, $text);
-
-        $statusText = new \ReflectionProperty($response, 'statusText');
-        $statusText->setAccessible(true);
-
-        $this->assertEquals($expectedText, $statusText->getValue($response));
-    }
-
-    public function getStatusCodeFixtures()
-    {
-        return [
-            ['200', null, 'OK'],
-            ['200', false, ''],
-            ['200', 'foo', 'foo'],
-            ['199', null, 'unknown status'],
-            ['199', false, ''],
-            ['199', 'foo', 'foo'],
-        ];
-    }
-
-    public function testIsInformational()
-    {
-        $response = new Response('', 100);
-        $this->assertTrue($response->isInformational());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isInformational());
-    }
-
-    public function testIsRedirectRedirection()
-    {
-        foreach ([301, 302, 303, 307] as $code) {
-            $response = new Response('', $code);
-            $this->assertTrue($response->isRedirection());
-            $this->assertTrue($response->isRedirect());
-        }
-
-        $response = new Response('', 304);
-        $this->assertTrue($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 404);
-        $this->assertFalse($response->isRedirection());
-        $this->assertFalse($response->isRedirect());
-
-        $response = new Response('', 301, ['Location' => '/good-uri']);
-        $this->assertFalse($response->isRedirect('/bad-uri'));
-        $this->assertTrue($response->isRedirect('/good-uri'));
-    }
-
-    public function testIsNotFound()
-    {
-        $response = new Response('', 404);
-        $this->assertTrue($response->isNotFound());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isNotFound());
-    }
-
-    public function testIsEmpty()
-    {
-        foreach ([204, 304] as $code) {
-            $response = new Response('', $code);
-            $this->assertTrue($response->isEmpty());
-        }
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isEmpty());
-    }
-
-    public function testIsForbidden()
-    {
-        $response = new Response('', 403);
-        $this->assertTrue($response->isForbidden());
-
-        $response = new Response('', 200);
-        $this->assertFalse($response->isForbidden());
-    }
-
-    public function testIsOk()
-    {
-        $response = new Response('', 200);
-        $this->assertTrue($response->isOk());
-
-        $response = new Response('', 404);
-        $this->assertFalse($response->isOk());
-    }
-
-    public function testIsServerOrClientError()
-    {
-        $response = new Response('', 404);
-        $this->assertTrue($response->isClientError());
-        $this->assertFalse($response->isServerError());
-
-        $response = new Response('', 500);
-        $this->assertFalse($response->isClientError());
-        $this->assertTrue($response->isServerError());
-    }
-
-    public function testHasVary()
-    {
-        $response = new Response();
-        $this->assertFalse($response->hasVary());
-
-        $response->setVary('User-Agent');
-        $this->assertTrue($response->hasVary());
-    }
-
-    public function testSetEtag()
-    {
-        $response = new Response('', 200, ['ETag' => '"12345"']);
-        $response->setEtag();
-
-        $this->assertNull($response->headers->get('Etag'), '->setEtag() removes Etags when call with null');
-    }
-
-    /**
-     * @dataProvider validContentProvider
-     */
-    public function testSetContent($content)
-    {
-        $response = new Response();
-        $response->setContent($content);
-        $this->assertEquals((string) $content, $response->getContent());
-    }
-
-    /**
-     * @dataProvider invalidContentProvider
-     */
-    public function testSetContentInvalid($content)
-    {
-        $this->expectException('UnexpectedValueException');
-        $response = new Response();
-        $response->setContent($content);
-    }
-
-    public function testSettersAreChainable()
-    {
-        $response = new Response();
-
-        $setters = [
-            'setProtocolVersion' => '1.0',
-            'setCharset' => 'UTF-8',
-            'setPublic' => null,
-            'setPrivate' => null,
-            'setDate' => $this->createDateTimeNow(),
-            'expire' => null,
-            'setMaxAge' => 1,
-            'setSharedMaxAge' => 1,
-            'setTtl' => 1,
-            'setClientTtl' => 1,
-        ];
-
-        foreach ($setters as $setter => $arg) {
-            $this->assertEquals($response, $response->{$setter}($arg));
-        }
-    }
-
-    public function testNoDeprecationsAreTriggered()
-    {
-        new DefaultResponse();
-        $this->getMockBuilder(Response::class)->getMock();
-
-        // we just need to ensure that subclasses of Response can be created without any deprecations
-        // being triggered if the subclass does not override any final methods
-        $this->addToAssertionCount(1);
-    }
-
-    public function validContentProvider()
-    {
-        return [
-            'obj' => [new StringableObject()],
-            'string' => ['Foo'],
-            'int' => [2],
-        ];
-    }
-
-    public function invalidContentProvider()
-    {
-        return [
-            'obj' => [new \stdClass()],
-            'array' => [[]],
-            'bool' => [true, '1'],
-        ];
-    }
-
-    protected function createDateTimeOneHourAgo()
-    {
-        return $this->createDateTimeNow()->sub(new \DateInterval('PT1H'));
-    }
-
-    protected function createDateTimeOneHourLater()
-    {
-        return $this->createDateTimeNow()->add(new \DateInterval('PT1H'));
-    }
-
-    protected function createDateTimeNow()
-    {
-        $date = new \DateTime();
-
-        return $date->setTimestamp(time());
-    }
-
-    protected function createDateTimeImmutableNow()
-    {
-        $date = new \DateTimeImmutable();
-
-        return $date->setTimestamp(time());
-    }
-
-    protected function provideResponse()
-    {
-        return new Response();
-    }
-
-    /**
-     * @see http://github.com/zendframework/zend-diactoros for the canonical source repository
-     *
-     * @author Fábio Pacheco
-     * @copyright Copyright (c) 2015-2016 Zend Technologies USA Inc. (http://www.zend.com)
-     * @license https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
-     */
-    public function ianaCodesReasonPhrasesProvider()
-    {
-        if (!\in_array('https', stream_get_wrappers(), true)) {
-            $this->markTestSkipped('The "https" wrapper is not available');
-        }
-
-        $ianaHttpStatusCodes = new \DOMDocument();
-
-        $context = stream_context_create([
-            'http' => [
-                'method' => 'GET',
-                'timeout' => 30,
-                'user_agent' => __METHOD__,
-            ],
-        ]);
-
-        $ianaHttpStatusCodes->loadXML(file_get_contents('https://www.iana.org/assignments/http-status-codes/http-status-codes.xml', false, $context));
-        if (!$ianaHttpStatusCodes->relaxNGValidate(__DIR__.'/schema/http-status-codes.rng')) {
-            self::fail('Invalid IANA\'s HTTP status code list.');
-        }
-
-        $ianaCodesReasonPhrases = [];
-
-        $xpath = new \DOMXPath($ianaHttpStatusCodes);
-        $xpath->registerNamespace('ns', 'http://www.iana.org/assignments');
-
-        $records = $xpath->query('//ns:record');
-        foreach ($records as $record) {
-            $value = $xpath->query('.//ns:value', $record)->item(0)->nodeValue;
-            $description = $xpath->query('.//ns:description', $record)->item(0)->nodeValue;
-
-            if (\in_array($description, ['Unassigned', '(Unused)'], true)) {
-                continue;
-            }
-
-            if (preg_match('/^([0-9]+)\s*\-\s*([0-9]+)$/', $value, $matches)) {
-                for ($value = $matches[1]; $value <= $matches[2]; ++$value) {
-                    $ianaCodesReasonPhrases[] = [$value, $description];
-                }
-            } else {
-                $ianaCodesReasonPhrases[] = [$value, $description];
-            }
-        }
-
-        return $ianaCodesReasonPhrases;
-    }
-
-    /**
-     * @dataProvider ianaCodesReasonPhrasesProvider
-     */
-    public function testReasonPhraseDefaultsAgainstIana($code, $reasonPhrase)
-    {
-        $this->assertEquals($reasonPhrase, Response::$statusTexts[$code]);
-    }
-}
-
-class StringableObject
-{
-    public function __toString()
-    {
-        return 'Foo';
-    }
-}
-
-class DefaultResponse extends Response
-{
-}
diff --git a/vendor/symfony/http-foundation/Tests/ResponseTestCase.php b/vendor/symfony/http-foundation/Tests/ResponseTestCase.php
deleted file mode 100644
index 4ead34c1..00000000
--- a/vendor/symfony/http-foundation/Tests/ResponseTestCase.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-
-abstract class ResponseTestCase extends TestCase
-{
-    public function testNoCacheControlHeaderOnAttachmentUsingHTTPSAndMSIE()
-    {
-        // Check for HTTPS and IE 8
-        $request = new Request();
-        $request->server->set('HTTPS', true);
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertFalse($response->headers->has('Cache-Control'));
-
-        // Check for IE 10 and HTTPS
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 9 and HTTPS
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 9 and HTTP
-        $request->server->set('HTTPS', false);
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for IE 8 and HTTP
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for non-IE and HTTPS
-        $request->server->set('HTTPS', true);
-        $request->server->set('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17');
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-
-        // Check for non-IE and HTTP
-        $request->server->set('HTTPS', false);
-
-        $response = $this->provideResponse();
-        $response->headers->set('Content-Disposition', 'attachment; filename="fname.ext"');
-        $response->prepare($request);
-
-        $this->assertTrue($response->headers->has('Cache-Control'));
-    }
-
-    abstract protected function provideResponse();
-}
diff --git a/vendor/symfony/http-foundation/Tests/ServerBagTest.php b/vendor/symfony/http-foundation/Tests/ServerBagTest.php
deleted file mode 100644
index 0663b118..00000000
--- a/vendor/symfony/http-foundation/Tests/ServerBagTest.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\ServerBag;
-
-/**
- * ServerBagTest.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class ServerBagTest extends TestCase
-{
-    public function testShouldExtractHeadersFromServerArray()
-    {
-        $server = [
-            'SOME_SERVER_VARIABLE' => 'value',
-            'SOME_SERVER_VARIABLE2' => 'value',
-            'ROOT' => 'value',
-            'HTTP_CONTENT_TYPE' => 'text/html',
-            'HTTP_CONTENT_LENGTH' => '0',
-            'HTTP_ETAG' => 'asdf',
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ];
-
-        $bag = new ServerBag($server);
-
-        $this->assertEquals([
-            'CONTENT_TYPE' => 'text/html',
-            'CONTENT_LENGTH' => '0',
-            'ETAG' => 'asdf',
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpPasswordIsOptional()
-    {
-        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo']);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgi()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:bar')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => 'bar',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgiBogus()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic_'.base64_encode('foo:bar')]);
-
-        // Username and passwords should not be set as the header is bogus
-        $headers = $bag->getHeaders();
-        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
-        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
-    }
-
-    public function testHttpBasicAuthWithPhpCgiRedirect()
-    {
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word'),
-            'PHP_AUTH_USER' => 'username',
-            'PHP_AUTH_PW' => 'pass:word',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpBasicAuthWithPhpCgiEmptyPassword()
-    {
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:')]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpDigestAuthWithPhpCgi()
-    {
-        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $digest,
-            'PHP_AUTH_DIGEST' => $digest,
-        ], $bag->getHeaders());
-    }
-
-    public function testHttpDigestAuthWithPhpCgiBogus()
-    {
-        $digest = 'Digest_username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
-
-        // Username and passwords should not be set as the header is bogus
-        $headers = $bag->getHeaders();
-        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
-        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
-    }
-
-    public function testHttpDigestAuthWithPhpCgiRedirect()
-    {
-        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $digest]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $digest,
-            'PHP_AUTH_DIGEST' => $digest,
-        ], $bag->getHeaders());
-    }
-
-    public function testOAuthBearerAuth()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-        ], $bag->getHeaders());
-    }
-
-    public function testOAuthBearerAuthWithRedirect()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-        ], $bag->getHeaders());
-    }
-
-    /**
-     * @see https://github.com/symfony/symfony/issues/17345
-     */
-    public function testItDoesNotOverwriteTheAuthorizationHeaderIfItIsAlreadySet()
-    {
-        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
-        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo', 'HTTP_AUTHORIZATION' => $headerContent]);
-
-        $this->assertEquals([
-            'AUTHORIZATION' => $headerContent,
-            'PHP_AUTH_USER' => 'foo',
-            'PHP_AUTH_PW' => '',
-        ], $bag->getHeaders());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php
deleted file mode 100644
index 6313967a..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Attribute/AttributeBagTest.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Attribute;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-
-/**
- * Tests AttributeBag.
- *
- * @author Drak <drak@zikula.org>
- */
-class AttributeBagTest extends TestCase
-{
-    private $array = [];
-
-    /**
-     * @var AttributeBag
-     */
-    private $bag;
-
-    protected function setUp(): void
-    {
-        $this->array = [
-            'hello' => 'world',
-            'always' => 'be happy',
-            'user.login' => 'drak',
-            'csrf.token' => [
-                'a' => '1234',
-                'b' => '4321',
-            ],
-            'category' => [
-                'fishing' => [
-                    'first' => 'cod',
-                    'second' => 'sole',
-                ],
-            ],
-        ];
-        $this->bag = new AttributeBag('_sf');
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        $this->array = [];
-    }
-
-    public function testInitialize()
-    {
-        $bag = new AttributeBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $bag->all());
-        $array = ['should' => 'change'];
-        $bag->initialize($array);
-        $this->assertEquals($array, $bag->all());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf', $this->bag->getStorageKey());
-        $attributeBag = new AttributeBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('attributes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHas($key, $value, $exists)
-    {
-        $this->assertEquals($exists, $this->bag->has($key));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGet($key, $value, $expected)
-    {
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testGetDefaults()
-    {
-        $this->assertNull($this->bag->get('user2.login'));
-        $this->assertEquals('default', $this->bag->get('user2.login', 'default'));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testSet($key, $value, $expected)
-    {
-        $this->bag->set($key, $value);
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testAll()
-    {
-        $this->assertEquals($this->array, $this->bag->all());
-
-        $this->bag->set('hello', 'fabien');
-        $array = $this->array;
-        $array['hello'] = 'fabien';
-        $this->assertEquals($array, $this->bag->all());
-    }
-
-    public function testReplace()
-    {
-        $array = [];
-        $array['name'] = 'jack';
-        $array['foo.bar'] = 'beep';
-        $this->bag->replace($array);
-        $this->assertEquals($array, $this->bag->all());
-        $this->assertNull($this->bag->get('hello'));
-        $this->assertNull($this->bag->get('always'));
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemove()
-    {
-        $this->assertEquals('world', $this->bag->get('hello'));
-        $this->bag->remove('hello');
-        $this->assertNull($this->bag->get('hello'));
-
-        $this->assertEquals('be happy', $this->bag->get('always'));
-        $this->bag->remove('always');
-        $this->assertNull($this->bag->get('always'));
-
-        $this->assertEquals('drak', $this->bag->get('user.login'));
-        $this->bag->remove('user.login');
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function attributesProvider()
-    {
-        return [
-            ['hello', 'world', true],
-            ['always', 'be happy', true],
-            ['user.login', 'drak', true],
-            ['csrf.token', ['a' => '1234', 'b' => '4321'], true],
-            ['category', ['fishing' => ['first' => 'cod', 'second' => 'sole']], true],
-            ['user2.login', null, false],
-            ['never', null, false],
-            ['bye', null, false],
-            ['bye/for/now', null, false],
-        ];
-    }
-
-    public function testGetIterator()
-    {
-        $i = 0;
-        foreach ($this->bag as $key => $val) {
-            $this->assertEquals($this->array[$key], $val);
-            ++$i;
-        }
-
-        $this->assertEquals(\count($this->array), $i);
-    }
-
-    public function testCount()
-    {
-        $this->assertCount(\count($this->array), $this->bag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php
deleted file mode 100644
index 3a3251d0..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Attribute/NamespacedAttributeBagTest.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Attribute;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\NamespacedAttributeBag;
-
-/**
- * Tests NamespacedAttributeBag.
- *
- * @author Drak <drak@zikula.org>
- */
-class NamespacedAttributeBagTest extends TestCase
-{
-    private $array = [];
-
-    /**
-     * @var NamespacedAttributeBag
-     */
-    private $bag;
-
-    protected function setUp(): void
-    {
-        $this->array = [
-            'hello' => 'world',
-            'always' => 'be happy',
-            'user.login' => 'drak',
-            'csrf.token' => [
-                'a' => '1234',
-                'b' => '4321',
-            ],
-            'category' => [
-                'fishing' => [
-                    'first' => 'cod',
-                    'second' => 'sole',
-                ],
-            ],
-        ];
-        $this->bag = new NamespacedAttributeBag('_sf2', '/');
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        $this->array = [];
-    }
-
-    public function testInitialize()
-    {
-        $bag = new NamespacedAttributeBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $this->bag->all());
-        $array = ['should' => 'not stick'];
-        $bag->initialize($array);
-
-        // should have remained the same
-        $this->assertEquals($this->array, $this->bag->all());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf2', $this->bag->getStorageKey());
-        $attributeBag = new NamespacedAttributeBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHas($key, $value, $exists)
-    {
-        $this->assertEquals($exists, $this->bag->has($key));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testHasNoSideEffect($key, $value, $expected)
-    {
-        $expected = json_encode($this->bag->all());
-        $this->bag->has($key);
-
-        $this->assertEquals($expected, json_encode($this->bag->all()));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGet($key, $value, $expected)
-    {
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testGetDefaults()
-    {
-        $this->assertNull($this->bag->get('user2.login'));
-        $this->assertEquals('default', $this->bag->get('user2.login', 'default'));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testGetNoSideEffect($key, $value, $expected)
-    {
-        $expected = json_encode($this->bag->all());
-        $this->bag->get($key);
-
-        $this->assertEquals($expected, json_encode($this->bag->all()));
-    }
-
-    /**
-     * @dataProvider attributesProvider
-     */
-    public function testSet($key, $value, $expected)
-    {
-        $this->bag->set($key, $value);
-        $this->assertEquals($value, $this->bag->get($key));
-    }
-
-    public function testAll()
-    {
-        $this->assertEquals($this->array, $this->bag->all());
-
-        $this->bag->set('hello', 'fabien');
-        $array = $this->array;
-        $array['hello'] = 'fabien';
-        $this->assertEquals($array, $this->bag->all());
-    }
-
-    public function testReplace()
-    {
-        $array = [];
-        $array['name'] = 'jack';
-        $array['foo.bar'] = 'beep';
-        $this->bag->replace($array);
-        $this->assertEquals($array, $this->bag->all());
-        $this->assertNull($this->bag->get('hello'));
-        $this->assertNull($this->bag->get('always'));
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemove()
-    {
-        $this->assertEquals('world', $this->bag->get('hello'));
-        $this->bag->remove('hello');
-        $this->assertNull($this->bag->get('hello'));
-
-        $this->assertEquals('be happy', $this->bag->get('always'));
-        $this->bag->remove('always');
-        $this->assertNull($this->bag->get('always'));
-
-        $this->assertEquals('drak', $this->bag->get('user.login'));
-        $this->bag->remove('user.login');
-        $this->assertNull($this->bag->get('user.login'));
-    }
-
-    public function testRemoveExistingNamespacedAttribute()
-    {
-        $this->assertSame('cod', $this->bag->remove('category/fishing/first'));
-    }
-
-    public function testRemoveNonexistingNamespacedAttribute()
-    {
-        $this->assertNull($this->bag->remove('foo/bar/baz'));
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function attributesProvider()
-    {
-        return [
-            ['hello', 'world', true],
-            ['always', 'be happy', true],
-            ['user.login', 'drak', true],
-            ['csrf.token', ['a' => '1234', 'b' => '4321'], true],
-            ['csrf.token/a', '1234', true],
-            ['csrf.token/b', '4321', true],
-            ['category', ['fishing' => ['first' => 'cod', 'second' => 'sole']], true],
-            ['category/fishing', ['first' => 'cod', 'second' => 'sole'], true],
-            ['category/fishing/missing/first', null, false],
-            ['category/fishing/first', 'cod', true],
-            ['category/fishing/second', 'sole', true],
-            ['category/fishing/missing/second', null, false],
-            ['user2.login', null, false],
-            ['never', null, false],
-            ['bye', null, false],
-            ['bye/for/now', null, false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php
deleted file mode 100644
index ba268719..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Flash/AutoExpireFlashBagTest.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Flash;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Flash\AutoExpireFlashBag as FlashBag;
-
-/**
- * AutoExpireFlashBagTest.
- *
- * @author Drak <drak@zikula.org>
- */
-class AutoExpireFlashBagTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Flash\AutoExpireFlashBag
-     */
-    private $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new FlashBag();
-        $this->array = ['new' => ['notice' => ['A previous flash message']]];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $bag = new FlashBag();
-        $array = ['new' => ['notice' => ['A previous flash message']]];
-        $bag->initialize($array);
-        $this->assertEquals(['A previous flash message'], $bag->peek('notice'));
-        $array = ['new' => [
-                'notice' => ['Something else'],
-                'error' => ['a'],
-            ]];
-        $bag->initialize($array);
-        $this->assertEquals(['Something else'], $bag->peek('notice'));
-        $this->assertEquals(['a'], $bag->peek('error'));
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_symfony_flashes', $this->bag->getStorageKey());
-        $attributeBag = new FlashBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('flashes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testPeek()
-    {
-        $this->assertEquals([], $this->bag->peek('non_existing'));
-        $this->assertEquals(['default'], $this->bag->peek('non_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testSet()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testHas()
-    {
-        $this->assertFalse($this->bag->has('nothing'));
-        $this->assertTrue($this->bag->has('notice'));
-    }
-
-    public function testKeys()
-    {
-        $this->assertEquals(['notice'], $this->bag->keys());
-    }
-
-    public function testPeekAll()
-    {
-        $array = [
-            'new' => [
-                'notice' => 'Foo',
-                'error' => 'Bar',
-            ],
-        ];
-
-        $this->bag->initialize($array);
-        $this->assertEquals([
-            'notice' => 'Foo',
-            'error' => 'Bar',
-            ], $this->bag->peekAll()
-        );
-
-        $this->assertEquals([
-            'notice' => 'Foo',
-            'error' => 'Bar',
-            ], $this->bag->peekAll()
-        );
-    }
-
-    public function testGet()
-    {
-        $this->assertEquals([], $this->bag->get('non_existing'));
-        $this->assertEquals(['default'], $this->bag->get('non_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->get('notice'));
-        $this->assertEquals([], $this->bag->get('notice'));
-    }
-
-    public function testSetAll()
-    {
-        $this->bag->setAll(['a' => 'first', 'b' => 'second']);
-        $this->assertFalse($this->bag->has('a'));
-        $this->assertFalse($this->bag->has('b'));
-    }
-
-    public function testAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['A previous flash message'],
-            ], $this->bag->all()
-        );
-
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function testClear()
-    {
-        $this->assertEquals(['notice' => ['A previous flash message']], $this->bag->clear());
-    }
-
-    public function testDoNotRemoveTheNewFlashesWhenDisplayingTheExistingOnes()
-    {
-        $this->bag->add('success', 'Something');
-        $this->bag->all();
-
-        $this->assertEquals(['new' => ['success' => ['Something']], 'display' => []], $this->array);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php
deleted file mode 100644
index 24dbbfe9..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Flash/FlashBagTest.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Flash;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-
-/**
- * FlashBagTest.
- *
- * @author Drak <drak@zikula.org>
- */
-class FlashBagTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface
-     */
-    private $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new FlashBag();
-        $this->array = ['notice' => ['A previous flash message']];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $bag = new FlashBag();
-        $bag->initialize($this->array);
-        $this->assertEquals($this->array, $bag->peekAll());
-        $array = ['should' => ['change']];
-        $bag->initialize($array);
-        $this->assertEquals($array, $bag->peekAll());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_symfony_flashes', $this->bag->getStorageKey());
-        $attributeBag = new FlashBag('test');
-        $this->assertEquals('test', $attributeBag->getStorageKey());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('flashes', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testPeek()
-    {
-        $this->assertEquals([], $this->bag->peek('non_existing'));
-        $this->assertEquals(['default'], $this->bag->peek('not_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-        $this->assertEquals(['A previous flash message'], $this->bag->peek('notice'));
-    }
-
-    public function testAdd()
-    {
-        $tab = ['bar' => 'baz'];
-        $this->bag->add('string_message', 'lorem');
-        $this->bag->add('object_message', new \stdClass());
-        $this->bag->add('array_message', $tab);
-
-        $this->assertEquals(['lorem'], $this->bag->get('string_message'));
-        $this->assertEquals([new \stdClass()], $this->bag->get('object_message'));
-        $this->assertEquals([$tab], $this->bag->get('array_message'));
-    }
-
-    public function testGet()
-    {
-        $this->assertEquals([], $this->bag->get('non_existing'));
-        $this->assertEquals(['default'], $this->bag->get('not_existing', ['default']));
-        $this->assertEquals(['A previous flash message'], $this->bag->get('notice'));
-        $this->assertEquals([], $this->bag->get('notice'));
-    }
-
-    public function testAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'], ], $this->bag->all()
-        );
-
-        $this->assertEquals([], $this->bag->all());
-    }
-
-    public function testSet()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('notice', 'Bar');
-        $this->assertEquals(['Bar'], $this->bag->peek('notice'));
-    }
-
-    public function testHas()
-    {
-        $this->assertFalse($this->bag->has('nothing'));
-        $this->assertTrue($this->bag->has('notice'));
-    }
-
-    public function testKeys()
-    {
-        $this->assertEquals(['notice'], $this->bag->keys());
-    }
-
-    public function testSetAll()
-    {
-        $this->bag->add('one_flash', 'Foo');
-        $this->bag->add('another_flash', 'Bar');
-        $this->assertTrue($this->bag->has('one_flash'));
-        $this->assertTrue($this->bag->has('another_flash'));
-        $this->bag->setAll(['unique_flash' => 'FooBar']);
-        $this->assertFalse($this->bag->has('one_flash'));
-        $this->assertFalse($this->bag->has('another_flash'));
-        $this->assertSame(['unique_flash' => 'FooBar'], $this->bag->all());
-        $this->assertSame([], $this->bag->all());
-    }
-
-    public function testPeekAll()
-    {
-        $this->bag->set('notice', 'Foo');
-        $this->bag->set('error', 'Bar');
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'],
-            ], $this->bag->peekAll()
-        );
-        $this->assertTrue($this->bag->has('notice'));
-        $this->assertTrue($this->bag->has('error'));
-        $this->assertEquals([
-            'notice' => ['Foo'],
-            'error' => ['Bar'],
-            ], $this->bag->peekAll()
-        );
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/SessionTest.php b/vendor/symfony/http-foundation/Tests/Session/SessionTest.php
deleted file mode 100644
index e216bfc8..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/SessionTest.php
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionBagProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-/**
- * SessionTest.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Drak <drak@zikula.org>
- */
-class SessionTest extends TestCase
-{
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface
-     */
-    protected $storage;
-
-    /**
-     * @var \Symfony\Component\HttpFoundation\Session\SessionInterface
-     */
-    protected $session;
-
-    protected function setUp(): void
-    {
-        $this->storage = new MockArraySessionStorage();
-        $this->session = new Session($this->storage, new AttributeBag(), new FlashBag());
-    }
-
-    protected function tearDown(): void
-    {
-        $this->storage = null;
-        $this->session = null;
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->assertTrue($this->session->start());
-        $this->assertNotEquals('', $this->session->getId());
-    }
-
-    public function testIsStarted()
-    {
-        $this->assertFalse($this->session->isStarted());
-        $this->session->start();
-        $this->assertTrue($this->session->isStarted());
-    }
-
-    public function testSetId()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->session->setId('0123456789abcdef');
-        $this->session->start();
-        $this->assertEquals('0123456789abcdef', $this->session->getId());
-    }
-
-    public function testSetIdAfterStart()
-    {
-        $this->session->start();
-        $id = $this->session->getId();
-
-        $e = null;
-        try {
-            $this->session->setId($id);
-        } catch (\Exception $e) {
-        }
-
-        $this->assertNull($e);
-
-        try {
-            $this->session->setId('different');
-        } catch (\Exception $e) {
-        }
-
-        $this->assertInstanceOf('\LogicException', $e);
-    }
-
-    public function testSetName()
-    {
-        $this->assertEquals('MOCKSESSID', $this->session->getName());
-        $this->session->setName('session.test.com');
-        $this->session->start();
-        $this->assertEquals('session.test.com', $this->session->getName());
-    }
-
-    public function testGet()
-    {
-        // tests defaults
-        $this->assertNull($this->session->get('foo'));
-        $this->assertEquals(1, $this->session->get('foo', 1));
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testSet($key, $value)
-    {
-        $this->session->set($key, $value);
-        $this->assertEquals($value, $this->session->get($key));
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testHas($key, $value)
-    {
-        $this->session->set($key, $value);
-        $this->assertTrue($this->session->has($key));
-        $this->assertFalse($this->session->has($key.'non_value'));
-    }
-
-    public function testReplace()
-    {
-        $this->session->replace(['happiness' => 'be good', 'symfony' => 'awesome']);
-        $this->assertEquals(['happiness' => 'be good', 'symfony' => 'awesome'], $this->session->all());
-        $this->session->replace([]);
-        $this->assertEquals([], $this->session->all());
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testAll($key, $value, $result)
-    {
-        $this->session->set($key, $value);
-        $this->assertEquals($result, $this->session->all());
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testClear($key, $value)
-    {
-        $this->session->set('hi', 'fabien');
-        $this->session->set($key, $value);
-        $this->session->clear();
-        $this->assertEquals([], $this->session->all());
-    }
-
-    public function setProvider()
-    {
-        return [
-            ['foo', 'bar', ['foo' => 'bar']],
-            ['foo.bar', 'too much beer', ['foo.bar' => 'too much beer']],
-            ['great', 'symfony is great', ['great' => 'symfony is great']],
-        ];
-    }
-
-    /**
-     * @dataProvider setProvider
-     */
-    public function testRemove($key, $value)
-    {
-        $this->session->set('hi.world', 'have a nice day');
-        $this->session->set($key, $value);
-        $this->session->remove($key);
-        $this->assertEquals(['hi.world' => 'have a nice day'], $this->session->all());
-    }
-
-    public function testInvalidate()
-    {
-        $this->session->set('invalidate', 123);
-        $this->session->invalidate();
-        $this->assertEquals([], $this->session->all());
-    }
-
-    public function testMigrate()
-    {
-        $this->session->set('migrate', 321);
-        $this->session->migrate();
-        $this->assertEquals(321, $this->session->get('migrate'));
-    }
-
-    public function testMigrateDestroy()
-    {
-        $this->session->set('migrate', 333);
-        $this->session->migrate(true);
-        $this->assertEquals(333, $this->session->get('migrate'));
-    }
-
-    public function testSave()
-    {
-        $this->session->start();
-        $this->session->save();
-
-        $this->assertFalse($this->session->isStarted());
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->session->getId());
-        $this->session->start();
-        $this->assertNotEquals('', $this->session->getId());
-    }
-
-    public function testGetFlashBag()
-    {
-        $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface', $this->session->getFlashBag());
-    }
-
-    public function testGetIterator()
-    {
-        $attributes = ['hello' => 'world', 'symfony' => 'rocks'];
-        foreach ($attributes as $key => $val) {
-            $this->session->set($key, $val);
-        }
-
-        $i = 0;
-        foreach ($this->session as $key => $val) {
-            $this->assertEquals($attributes[$key], $val);
-            ++$i;
-        }
-
-        $this->assertEquals(\count($attributes), $i);
-    }
-
-    public function testGetCount()
-    {
-        $this->session->set('hello', 'world');
-        $this->session->set('symfony', 'rocks');
-
-        $this->assertCount(2, $this->session);
-    }
-
-    public function testGetMeta()
-    {
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\MetadataBag', $this->session->getMetadataBag());
-    }
-
-    public function testIsEmpty()
-    {
-        $this->assertTrue($this->session->isEmpty());
-
-        $this->session->set('hello', 'world');
-        $this->assertFalse($this->session->isEmpty());
-
-        $this->session->remove('hello');
-        $this->assertTrue($this->session->isEmpty());
-
-        $flash = $this->session->getFlashBag();
-        $flash->set('hello', 'world');
-        $this->assertFalse($this->session->isEmpty());
-
-        $flash->get('hello');
-        $this->assertTrue($this->session->isEmpty());
-    }
-
-    public function testGetBagWithBagImplementingGetBag()
-    {
-        $bag = new AttributeBag();
-        $bag->setName('foo');
-
-        $storage = new MockArraySessionStorage();
-        $storage->registerBag($bag);
-
-        $this->assertSame($bag, (new Session($storage))->getBag('foo'));
-    }
-
-    public function testGetBagWithBagNotImplementingGetBag()
-    {
-        $data = [];
-
-        $bag = new AttributeBag();
-        $bag->setName('foo');
-
-        $storage = new MockArraySessionStorage();
-        $storage->registerBag(new SessionBagProxy($bag, $data, $usageIndex));
-
-        $this->assertSame($bag, (new Session($storage))->getBag('foo'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php
deleted file mode 100644
index 6a15a068..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractRedisSessionHandlerTestCase.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler;
-
-/**
- * @requires extension redis
- * @group time-sensitive
- */
-abstract class AbstractRedisSessionHandlerTestCase extends TestCase
-{
-    protected const PREFIX = 'prefix_';
-
-    /**
-     * @var RedisSessionHandler
-     */
-    protected $storage;
-
-    /**
-     * @var \Redis|\RedisArray|\RedisCluster|\Predis\Client
-     */
-    protected $redisClient;
-
-    /**
-     * @return \Redis|\RedisArray|\RedisCluster|\Predis\Client
-     */
-    abstract protected function createRedisClient(string $host);
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (!\extension_loaded('redis')) {
-            self::markTestSkipped('Extension redis required.');
-        }
-
-        $host = getenv('REDIS_HOST') ?: 'localhost';
-
-        $this->redisClient = $this->createRedisClient($host);
-        $this->storage = new RedisSessionHandler(
-            $this->redisClient,
-            ['prefix' => self::PREFIX]
-        );
-    }
-
-    protected function tearDown(): void
-    {
-        $this->redisClient = null;
-        $this->storage = null;
-
-        parent::tearDown();
-    }
-
-    public function testOpenSession()
-    {
-        $this->assertTrue($this->storage->open('', ''));
-    }
-
-    public function testCloseSession()
-    {
-        $this->assertTrue($this->storage->close());
-    }
-
-    public function testReadSession()
-    {
-        $this->redisClient->set(self::PREFIX.'id1', null);
-        $this->redisClient->set(self::PREFIX.'id2', 'abc123');
-
-        $this->assertEquals('', $this->storage->read('id1'));
-        $this->assertEquals('abc123', $this->storage->read('id2'));
-    }
-
-    public function testWriteSession()
-    {
-        $this->assertTrue($this->storage->write('id', 'data'));
-
-        $this->assertTrue((bool) $this->redisClient->exists(self::PREFIX.'id'));
-        $this->assertEquals('data', $this->redisClient->get(self::PREFIX.'id'));
-    }
-
-    public function testUseSessionGcMaxLifetimeAsTimeToLive()
-    {
-        $this->storage->write('id', 'data');
-        $ttl = $this->redisClient->ttl(self::PREFIX.'id');
-
-        $this->assertLessThanOrEqual(ini_get('session.gc_maxlifetime'), $ttl);
-        $this->assertGreaterThanOrEqual(0, $ttl);
-    }
-
-    public function testDestroySession()
-    {
-        $this->redisClient->set(self::PREFIX.'id', 'foo');
-
-        $this->assertTrue((bool) $this->redisClient->exists(self::PREFIX.'id'));
-        $this->assertTrue($this->storage->destroy('id'));
-        $this->assertFalse((bool) $this->redisClient->exists(self::PREFIX.'id'));
-    }
-
-    public function testGcSession()
-    {
-        $this->assertTrue($this->storage->gc(123));
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $lowTtl = 10;
-
-        $this->redisClient->setex(self::PREFIX.'id', $lowTtl, 'foo');
-        $this->storage->updateTimestamp('id', []);
-
-        $this->assertGreaterThan($lowTtl, $this->redisClient->ttl(self::PREFIX.'id'));
-    }
-
-    /**
-     * @dataProvider getOptionFixtures
-     */
-    public function testSupportedParam(array $options, bool $supported)
-    {
-        try {
-            new RedisSessionHandler($this->redisClient, $options);
-            $this->assertTrue($supported);
-        } catch (\InvalidArgumentException $e) {
-            $this->assertFalse($supported);
-        }
-    }
-
-    public function getOptionFixtures(): array
-    {
-        return [
-            [['prefix' => 'session'], true],
-            [['prefix' => 'sfs', 'foo' => 'bar'], false],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php
deleted file mode 100644
index b25b68bb..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/AbstractSessionHandlerTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-
-class AbstractSessionHandlerTest extends TestCase
-{
-    private static $server;
-
-    public static function setUpBeforeClass(): void
-    {
-        $spec = [
-            1 => ['file', '/dev/null', 'w'],
-            2 => ['file', '/dev/null', 'w'],
-        ];
-        if (!self::$server = @proc_open('exec php -S localhost:8053', $spec, $pipes, __DIR__.'/Fixtures')) {
-            self::markTestSkipped('PHP server unable to start.');
-        }
-        sleep(1);
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        if (self::$server) {
-            proc_terminate(self::$server);
-            proc_close(self::$server);
-        }
-    }
-
-    /**
-     * @dataProvider provideSession
-     */
-    public function testSession($fixture)
-    {
-        $context = ['http' => ['header' => "Cookie: sid=123abc\r\n"]];
-        $context = stream_context_create($context);
-        $result = file_get_contents(sprintf('http://localhost:8053/%s.php', $fixture), false, $context);
-
-        $this->assertStringEqualsFile(__DIR__.sprintf('/Fixtures/%s.expected', $fixture), $result);
-    }
-
-    public function provideSession()
-    {
-        foreach (glob(__DIR__.'/Fixtures/*.php') as $file) {
-            yield [pathinfo($file, PATHINFO_FILENAME)];
-        }
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc
deleted file mode 100644
index a887f607..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/common.inc
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler;
-
-$parent = __DIR__;
-while (!@file_exists($parent.'/vendor/autoload.php')) {
-    if (!@file_exists($parent)) {
-        // open_basedir restriction in effect
-        break;
-    }
-    if ($parent === dirname($parent)) {
-        echo "vendor/autoload.php not found\n";
-        exit(1);
-    }
-
-    $parent = dirname($parent);
-}
-
-require $parent.'/vendor/autoload.php';
-
-error_reporting(-1);
-ini_set('html_errors', 0);
-ini_set('display_errors', 1);
-ini_set('session.gc_probability', 0);
-ini_set('session.serialize_handler', 'php');
-ini_set('session.cookie_lifetime', 0);
-ini_set('session.cookie_domain', '');
-ini_set('session.cookie_secure', '');
-ini_set('session.cookie_httponly', '');
-ini_set('session.use_cookies', 1);
-ini_set('session.use_only_cookies', 1);
-ini_set('session.cache_expire', 180);
-ini_set('session.cookie_path', '/');
-ini_set('session.cookie_domain', '');
-ini_set('session.cookie_secure', 1);
-ini_set('session.cookie_httponly', 1);
-ini_set('session.use_strict_mode', 1);
-ini_set('session.lazy_write', 1);
-ini_set('session.name', 'sid');
-ini_set('session.save_path', __DIR__);
-ini_set('session.cache_limiter', '');
-
-header_remove('X-Powered-By');
-header('Content-Type: text/plain; charset=utf-8');
-
-register_shutdown_function(function () {
-    echo "\n";
-    session_write_close();
-    print_r(headers_list());
-    echo "shutdown\n";
-});
-ob_start();
-
-class TestSessionHandler extends AbstractSessionHandler
-{
-    private $data;
-
-    public function __construct($data = '')
-    {
-        $this->data = $data;
-    }
-
-    public function open($path, $name): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::open($path, $name);
-    }
-
-    public function validateId($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::validateId($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($sessionId): string
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::read($sessionId);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function updateTimestamp($sessionId, $data): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write($sessionId, $data): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::write($sessionId, $data);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function destroy($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return parent::destroy($sessionId);
-    }
-
-    public function close(): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    public function gc($maxLifetime): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-
-    protected function doRead($sessionId): string
-    {
-        echo __FUNCTION__.': ', $this->data, "\n";
-
-        return $this->data;
-    }
-
-    protected function doWrite($sessionId, $data): bool
-    {
-        echo __FUNCTION__.': ', $data, "\n";
-
-        return true;
-    }
-
-    protected function doDestroy($sessionId): bool
-    {
-        echo __FUNCTION__, "\n";
-
-        return true;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected
deleted file mode 100644
index 82037147..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.expected
+++ /dev/null
@@ -1,17 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-destroy
-doDestroy
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php
deleted file mode 100644
index 3cfc1250..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/empty_destroys.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-unset($_SESSION['abc']);
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected
deleted file mode 100644
index 587adaf1..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.expected
+++ /dev/null
@@ -1,14 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-123
-updateTimestamp
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
deleted file mode 100644
index 3e62fb9e..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-echo $_SESSION['abc'];
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected
deleted file mode 100644
index baa5f2f6..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected
+++ /dev/null
@@ -1,24 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-destroy
-doDestroy
-close
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-doWrite: abc|i:123;
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
deleted file mode 100644
index a0f635c8..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-session_regenerate_id(true);
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected
deleted file mode 100644
index 05a5d5d0..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.expected
+++ /dev/null
@@ -1,21 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-Array
-(
-    [0] => bar
-)
-$_SESSION is not empty
-write
-destroy
-close
-$_SESSION is empty
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
deleted file mode 100644
index 96dca3c2..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage();
-$storage->setSaveHandler(new TestSessionHandler());
-$flash = new FlashBag();
-$storage->registerBag($flash);
-$storage->start();
-
-$flash->add('foo', 'bar');
-
-print_r($flash->get('foo'));
-echo empty($_SESSION) ? '$_SESSION is empty' : '$_SESSION is not empty';
-echo "\n";
-
-$storage->save();
-
-echo empty($_SESSION) ? '$_SESSION is empty' : '$_SESSION is not empty';
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
deleted file mode 100644
index 33da0a5b..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
+++ /dev/null
@@ -1,15 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-updateTimestamp
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: abc=def
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
deleted file mode 100644
index ffb5b20a..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-
-setcookie('abc', 'def');
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
deleted file mode 100644
index 63078228..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
+++ /dev/null
@@ -1,25 +0,0 @@
-open
-validateId
-read
-doRead: abc|i:123;
-read
-updateTimestamp
-close
-open
-validateId
-read
-doRead: abc|i:123;
-read
-
-write
-destroy
-doDestroy
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=10800, private, must-revalidate
-    [2] => Set-Cookie: abc=def
-    [3] => Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
deleted file mode 100644
index ec511932..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-setcookie('abc', 'def');
-
-session_set_save_handler(new TestSessionHandler('abc|i:123;'), false);
-session_start();
-session_write_close();
-session_start();
-
-$_SESSION['abc'] = 234;
-unset($_SESSION['abc']);
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected
deleted file mode 100644
index d20fb88e..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.expected
+++ /dev/null
@@ -1,16 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-
-write
-doWrite: foo|s:3:"bar";
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
deleted file mode 100644
index fc2c4182..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage(['cookie_samesite' => 'lax']);
-$storage->setSaveHandler(new TestSessionHandler());
-$storage->start();
-
-$_SESSION = ['foo' => 'bar'];
-
-ob_start(function ($buffer) { return str_replace(session_id(), 'random_session_id', $buffer); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected
deleted file mode 100644
index 8b5fc08b..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected
+++ /dev/null
@@ -1,23 +0,0 @@
-open
-validateId
-read
-doRead: 
-read
-destroy
-close
-open
-validateId
-read
-doRead: 
-read
-
-write
-doWrite: foo|s:3:"bar";
-close
-Array
-(
-    [0] => Content-Type: text/plain; charset=utf-8
-    [1] => Cache-Control: max-age=0, private, must-revalidate
-    [2] => Set-Cookie: sid=random_session_id; path=/; secure; HttpOnly; SameSite=lax
-)
-shutdown
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php
deleted file mode 100644
index a28b6fed..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-require __DIR__.'/common.inc';
-
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-$storage = new NativeSessionStorage(['cookie_samesite' => 'lax']);
-$storage->setSaveHandler(new TestSessionHandler());
-$storage->start();
-
-$_SESSION = ['foo' => 'bar'];
-
-$storage->regenerate(true);
-
-ob_start(function ($buffer) { return preg_replace('~_sf2_meta.*$~m', '', str_replace(session_id(), 'random_session_id', $buffer)); });
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
deleted file mode 100644
index e9c17703..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler;
-
-/**
- * @requires extension memcached
- * @group time-sensitive
- */
-class MemcachedSessionHandlerTest extends TestCase
-{
-    const PREFIX = 'prefix_';
-    const TTL = 1000;
-
-    /**
-     * @var MemcachedSessionHandler
-     */
-    protected $storage;
-
-    protected $memcached;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (version_compare(phpversion('memcached'), '2.2.0', '>=') && version_compare(phpversion('memcached'), '3.0.0b1', '<')) {
-            $this->markTestSkipped('Tests can only be run with memcached extension 2.1.0 or lower, or 3.0.0b1 or higher');
-        }
-
-        $this->memcached = $this->getMockBuilder('Memcached')->getMock();
-        $this->storage = new MemcachedSessionHandler(
-            $this->memcached,
-            ['prefix' => self::PREFIX, 'expiretime' => self::TTL]
-        );
-    }
-
-    protected function tearDown(): void
-    {
-        $this->memcached = null;
-        $this->storage = null;
-        parent::tearDown();
-    }
-
-    public function testOpenSession()
-    {
-        $this->assertTrue($this->storage->open('', ''));
-    }
-
-    public function testCloseSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('quit')
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->close());
-    }
-
-    public function testReadSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('get')
-            ->with(self::PREFIX.'id')
-        ;
-
-        $this->assertEquals('', $this->storage->read('id'));
-    }
-
-    public function testWriteSession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('set')
-            ->with(self::PREFIX.'id', 'data', $this->equalTo(time() + self::TTL, 2))
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->write('id', 'data'));
-    }
-
-    public function testDestroySession()
-    {
-        $this->memcached
-            ->expects($this->once())
-            ->method('delete')
-            ->with(self::PREFIX.'id')
-            ->willReturn(true)
-        ;
-
-        $this->assertTrue($this->storage->destroy('id'));
-    }
-
-    public function testGcSession()
-    {
-        $this->assertTrue($this->storage->gc(123));
-    }
-
-    /**
-     * @dataProvider getOptionFixtures
-     */
-    public function testSupportedOptions($options, $supported)
-    {
-        try {
-            new MemcachedSessionHandler($this->memcached, $options);
-            $this->assertTrue($supported);
-        } catch (\InvalidArgumentException $e) {
-            $this->assertFalse($supported);
-        }
-    }
-
-    public function getOptionFixtures()
-    {
-        return [
-            [['prefix' => 'session'], true],
-            [['expiretime' => 100], true],
-            [['prefix' => 'session', 'expiretime' => 200], true],
-            [['expiretime' => 100, 'foo' => 'bar'], false],
-        ];
-    }
-
-    public function testGetConnection()
-    {
-        $method = new \ReflectionMethod($this->storage, 'getMemcached');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\Memcached', $method->invoke($this->storage));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php
deleted file mode 100644
index 01615e6b..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MigratingSessionHandlerTest.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MigratingSessionHandler;
-
-class MigratingSessionHandlerTest extends TestCase
-{
-    private $dualHandler;
-    private $currentHandler;
-    private $writeOnlyHandler;
-
-    protected function setUp(): void
-    {
-        $this->currentHandler = $this->createMock(\SessionHandlerInterface::class);
-        $this->writeOnlyHandler = $this->createMock(\SessionHandlerInterface::class);
-
-        $this->dualHandler = new MigratingSessionHandler($this->currentHandler, $this->writeOnlyHandler);
-    }
-
-    public function testInstanceOf()
-    {
-        $this->assertInstanceOf(\SessionHandlerInterface::class, $this->dualHandler);
-        $this->assertInstanceOf(\SessionUpdateTimestampHandlerInterface::class, $this->dualHandler);
-    }
-
-    public function testClose()
-    {
-        $this->currentHandler->expects($this->once())
-            ->method('close')
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('close')
-            ->willReturn(false);
-
-        $result = $this->dualHandler->close();
-
-        $this->assertTrue($result);
-    }
-
-    public function testDestroy()
-    {
-        $sessionId = 'xyz';
-
-        $this->currentHandler->expects($this->once())
-            ->method('destroy')
-            ->with($sessionId)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('destroy')
-            ->with($sessionId)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->destroy($sessionId);
-
-        $this->assertTrue($result);
-    }
-
-    public function testGc()
-    {
-        $maxlifetime = 357;
-
-        $this->currentHandler->expects($this->once())
-            ->method('gc')
-            ->with($maxlifetime)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('gc')
-            ->with($maxlifetime)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->gc($maxlifetime);
-        $this->assertTrue($result);
-    }
-
-    public function testOpen()
-    {
-        $savePath = '/path/to/save/location';
-        $sessionName = 'xyz';
-
-        $this->currentHandler->expects($this->once())
-            ->method('open')
-            ->with($savePath, $sessionName)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('open')
-            ->with($savePath, $sessionName)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->open($savePath, $sessionName);
-
-        $this->assertTrue($result);
-    }
-
-    public function testRead()
-    {
-        $sessionId = 'xyz';
-        $readValue = 'something';
-
-        $this->currentHandler->expects($this->once())
-            ->method('read')
-            ->with($sessionId)
-            ->willReturn($readValue);
-
-        $this->writeOnlyHandler->expects($this->never())
-            ->method('read')
-            ->with($this->any());
-
-        $result = $this->dualHandler->read($sessionId);
-
-        $this->assertSame($readValue, $result);
-    }
-
-    public function testWrite()
-    {
-        $sessionId = 'xyz';
-        $data = 'my-serialized-data';
-
-        $this->currentHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->write($sessionId, $data);
-
-        $this->assertTrue($result);
-    }
-
-    public function testValidateId()
-    {
-        $sessionId = 'xyz';
-        $readValue = 'something';
-
-        $this->currentHandler->expects($this->once())
-            ->method('read')
-            ->with($sessionId)
-            ->willReturn($readValue);
-
-        $this->writeOnlyHandler->expects($this->never())
-            ->method('read')
-            ->with($this->any());
-
-        $result = $this->dualHandler->validateId($sessionId);
-
-        $this->assertTrue($result);
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $sessionId = 'xyz';
-        $data = 'my-serialized-data';
-
-        $this->currentHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(true);
-
-        $this->writeOnlyHandler->expects($this->once())
-            ->method('write')
-            ->with($sessionId, $data)
-            ->willReturn(false);
-
-        $result = $this->dualHandler->updateTimestamp($sessionId, $data);
-
-        $this->assertTrue($result);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
deleted file mode 100644
index f956fa27..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\MockObject\MockObject;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler;
-
-/**
- * @author Markus Bachmann <markus.bachmann@bachi.biz>
- * @group time-sensitive
- * @requires extension mongodb
- */
-class MongoDbSessionHandlerTest extends TestCase
-{
-    /**
-     * @var MockObject
-     */
-    private $mongo;
-    private $storage;
-    public $options;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        if (!class_exists(\MongoDB\Client::class)) {
-            $this->markTestSkipped('The mongodb/mongodb package is required.');
-        }
-
-        $this->mongo = $this->getMockBuilder(\MongoDB\Client::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $this->options = [
-            'id_field' => '_id',
-            'data_field' => 'data',
-            'time_field' => 'time',
-            'expiry_field' => 'expires_at',
-            'database' => 'sf-test',
-            'collection' => 'session-test',
-        ];
-
-        $this->storage = new MongoDbSessionHandler($this->mongo, $this->options);
-    }
-
-    public function testConstructorShouldThrowExceptionForMissingOptions()
-    {
-        $this->expectException('InvalidArgumentException');
-        new MongoDbSessionHandler($this->mongo, []);
-    }
-
-    public function testOpenMethodAlwaysReturnTrue()
-    {
-        $this->assertTrue($this->storage->open('test', 'test'), 'The "open" method should always return true');
-    }
-
-    public function testCloseMethodAlwaysReturnTrue()
-    {
-        $this->assertTrue($this->storage->close(), 'The "close" method should always return true');
-    }
-
-    public function testRead()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        // defining the timeout before the actual method call
-        // allows to test for "greater than" values in the $criteria
-        $testTimeout = time() + 1;
-
-        $collection->expects($this->once())
-            ->method('findOne')
-            ->willReturnCallback(function ($criteria) use ($testTimeout) {
-                $this->assertArrayHasKey($this->options['id_field'], $criteria);
-                $this->assertEquals($criteria[$this->options['id_field']], 'foo');
-
-                $this->assertArrayHasKey($this->options['expiry_field'], $criteria);
-                $this->assertArrayHasKey('$gte', $criteria[$this->options['expiry_field']]);
-
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $criteria[$this->options['expiry_field']]['$gte']);
-                $this->assertGreaterThanOrEqual(round((string) $criteria[$this->options['expiry_field']]['$gte'] / 1000), $testTimeout);
-
-                return [
-                    $this->options['id_field'] => 'foo',
-                    $this->options['expiry_field'] => new \MongoDB\BSON\UTCDateTime(),
-                    $this->options['data_field'] => new \MongoDB\BSON\Binary('bar', \MongoDB\BSON\Binary::TYPE_OLD_BINARY),
-                ];
-            });
-
-        $this->assertEquals('bar', $this->storage->read('foo'));
-    }
-
-    public function testWrite()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('updateOne')
-            ->willReturnCallback(function ($criteria, $updateData, $options) {
-                $this->assertEquals([$this->options['id_field'] => 'foo'], $criteria);
-                $this->assertEquals(['upsert' => true], $options);
-
-                $data = $updateData['$set'];
-                $expectedExpiry = time() + (int) ini_get('session.gc_maxlifetime');
-                $this->assertInstanceOf(\MongoDB\BSON\Binary::class, $data[$this->options['data_field']]);
-                $this->assertEquals('bar', $data[$this->options['data_field']]->getData());
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $data[$this->options['time_field']]);
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $data[$this->options['expiry_field']]);
-                $this->assertGreaterThanOrEqual($expectedExpiry, round((string) $data[$this->options['expiry_field']] / 1000));
-            });
-
-        $this->assertTrue($this->storage->write('foo', 'bar'));
-    }
-
-    public function testReplaceSessionData()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $data = [];
-
-        $collection->expects($this->exactly(2))
-            ->method('updateOne')
-            ->willReturnCallback(function ($criteria, $updateData, $options) use (&$data) {
-                $data = $updateData;
-            });
-
-        $this->storage->write('foo', 'bar');
-        $this->storage->write('foo', 'foobar');
-
-        $this->assertEquals('foobar', $data['$set'][$this->options['data_field']]->getData());
-    }
-
-    public function testDestroy()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('deleteOne')
-            ->with([$this->options['id_field'] => 'foo']);
-
-        $this->assertTrue($this->storage->destroy('foo'));
-    }
-
-    public function testGc()
-    {
-        $collection = $this->createMongoCollectionMock();
-
-        $this->mongo->expects($this->once())
-            ->method('selectCollection')
-            ->with($this->options['database'], $this->options['collection'])
-            ->willReturn($collection);
-
-        $collection->expects($this->once())
-            ->method('deleteMany')
-            ->willReturnCallback(function ($criteria) {
-                $this->assertInstanceOf(\MongoDB\BSON\UTCDateTime::class, $criteria[$this->options['expiry_field']]['$lt']);
-                $this->assertGreaterThanOrEqual(time() - 1, round((string) $criteria[$this->options['expiry_field']]['$lt'] / 1000));
-            });
-
-        $this->assertTrue($this->storage->gc(1));
-    }
-
-    public function testGetConnection()
-    {
-        $method = new \ReflectionMethod($this->storage, 'getMongo');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf(\MongoDB\Client::class, $method->invoke($this->storage));
-    }
-
-    private function createMongoCollectionMock()
-    {
-        $collection = $this->getMockBuilder(\MongoDB\Collection::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        return $collection;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php
deleted file mode 100644
index cd167fb1..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NativeFileSessionHandlerTest.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Test class for NativeFileSessionHandler.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NativeFileSessionHandlerTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $storage = new NativeSessionStorage(['name' => 'TESTING'], new NativeFileSessionHandler(sys_get_temp_dir()));
-
-        $this->assertEquals('user', ini_get('session.save_handler'));
-
-        $this->assertEquals(sys_get_temp_dir(), ini_get('session.save_path'));
-        $this->assertEquals('TESTING', ini_get('session.name'));
-    }
-
-    /**
-     * @dataProvider savePathDataProvider
-     */
-    public function testConstructSavePath($savePath, $expectedSavePath, $path)
-    {
-        $handler = new NativeFileSessionHandler($savePath);
-        $this->assertEquals($expectedSavePath, ini_get('session.save_path'));
-        $this->assertDirectoryExists(realpath($path));
-
-        rmdir($path);
-    }
-
-    public function savePathDataProvider()
-    {
-        $base = sys_get_temp_dir();
-
-        return [
-            ["$base/foo", "$base/foo", "$base/foo"],
-            ["5;$base/foo", "5;$base/foo", "$base/foo"],
-            ["5;0600;$base/foo", "5;0600;$base/foo", "$base/foo"],
-        ];
-    }
-
-    public function testConstructException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = new NativeFileSessionHandler('something;invalid;with;too-many-args');
-    }
-
-    public function testConstructDefault()
-    {
-        $path = ini_get('session.save_path');
-        $storage = new NativeSessionStorage(['name' => 'TESTING'], new NativeFileSessionHandler());
-
-        $this->assertEquals($path, ini_get('session.save_path'));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php
deleted file mode 100644
index 0d246e1a..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/NullSessionHandlerTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-
-/**
- * Test class for NullSessionHandler.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NullSessionHandlerTest extends TestCase
-{
-    public function testSaveHandlers()
-    {
-        $storage = $this->getStorage();
-        $this->assertEquals('user', ini_get('session.save_handler'));
-    }
-
-    public function testSession()
-    {
-        session_id('nullsessionstorage');
-        $storage = $this->getStorage();
-        $session = new Session($storage);
-        $this->assertNull($session->get('something'));
-        $session->set('something', 'unique');
-        $this->assertEquals('unique', $session->get('something'));
-    }
-
-    public function testNothingIsPersisted()
-    {
-        session_id('nullsessionstorage');
-        $storage = $this->getStorage();
-        $session = new Session($storage);
-        $session->start();
-        $this->assertEquals('nullsessionstorage', $session->getId());
-        $this->assertNull($session->get('something'));
-    }
-
-    public function getStorage()
-    {
-        return new NativeSessionStorage([], new NullSessionHandler());
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php
deleted file mode 100644
index d080ce3c..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
-
-/**
- * @requires extension pdo_sqlite
- * @group time-sensitive
- */
-class PdoSessionHandlerTest extends TestCase
-{
-    private $dbFile;
-
-    protected function tearDown(): void
-    {
-        // make sure the temporary database file is deleted when it has been created (even when a test fails)
-        if ($this->dbFile) {
-            @unlink($this->dbFile);
-        }
-        parent::tearDown();
-    }
-
-    protected function getPersistentSqliteDsn()
-    {
-        $this->dbFile = tempnam(sys_get_temp_dir(), 'sf_sqlite_sessions');
-
-        return 'sqlite:'.$this->dbFile;
-    }
-
-    protected function getMemorySqlitePdo()
-    {
-        $pdo = new \PDO('sqlite::memory:');
-        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
-        $storage = new PdoSessionHandler($pdo);
-        $storage->createTable();
-
-        return $pdo;
-    }
-
-    public function testWrongPdoErrMode()
-    {
-        $this->expectException('InvalidArgumentException');
-        $pdo = $this->getMemorySqlitePdo();
-        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_SILENT);
-
-        $storage = new PdoSessionHandler($pdo);
-    }
-
-    public function testInexistentTable()
-    {
-        $this->expectException('RuntimeException');
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo(), ['db_table' => 'inexistent_table']);
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-    }
-
-    public function testCreateTableTwice()
-    {
-        $this->expectException('RuntimeException');
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->createTable();
-    }
-
-    public function testWithLazyDsnConnection()
-    {
-        $dsn = $this->getPersistentSqliteDsn();
-
-        $storage = new PdoSessionHandler($dsn);
-        $storage->createTable();
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertSame('', $data, 'New session returns empty string data');
-
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('data', $data, 'Written value can be read back correctly');
-    }
-
-    public function testWithLazySavePathConnection()
-    {
-        $dsn = $this->getPersistentSqliteDsn();
-
-        // Open is called with what ini_set('session.save_path', $dsn) would mean
-        $storage = new PdoSessionHandler(null);
-        $storage->open($dsn, 'sid');
-        $storage->createTable();
-        $data = $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertSame('', $data, 'New session returns empty string data');
-
-        $storage->open($dsn, 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('data', $data, 'Written value can be read back correctly');
-    }
-
-    public function testReadWriteReadWithNullByte()
-    {
-        $sessionData = 'da'."\0".'ta';
-
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $readData = $storage->read('id');
-        $storage->write('id', $sessionData);
-        $storage->close();
-        $this->assertSame('', $readData, 'New session returns empty string data');
-
-        $storage->open('', 'sid');
-        $readData = $storage->read('id');
-        $storage->close();
-        $this->assertSame($sessionData, $readData, 'Written value can be read back correctly');
-    }
-
-    public function testReadConvertsStreamToString()
-    {
-        $pdo = new MockPdo('pgsql');
-        $pdo->prepareResult = $this->getMockBuilder('PDOStatement')->getMock();
-
-        $content = 'foobar';
-        $stream = $this->createStream($content);
-
-        $pdo->prepareResult->expects($this->once())->method('fetchAll')
-            ->willReturn([[$stream, 42, time()]]);
-
-        $storage = new PdoSessionHandler($pdo);
-        $result = $storage->read('foo');
-
-        $this->assertSame($content, $result);
-    }
-
-    public function testReadLockedConvertsStreamToString()
-    {
-        if (filter_var(ini_get('session.use_strict_mode'), FILTER_VALIDATE_BOOLEAN)) {
-            $this->markTestSkipped('Strict mode needs no locking for new sessions.');
-        }
-
-        $pdo = new MockPdo('pgsql');
-        $selectStmt = $this->getMockBuilder('PDOStatement')->getMock();
-        $insertStmt = $this->getMockBuilder('PDOStatement')->getMock();
-
-        $pdo->prepareResult = function ($statement) use ($selectStmt, $insertStmt) {
-            return 0 === strpos($statement, 'INSERT') ? $insertStmt : $selectStmt;
-        };
-
-        $content = 'foobar';
-        $stream = $this->createStream($content);
-        $exception = null;
-
-        $selectStmt->expects($this->atLeast(2))->method('fetchAll')
-            ->willReturnCallback(function () use (&$exception, $stream) {
-                return $exception ? [[$stream, 42, time()]] : [];
-            });
-
-        $insertStmt->expects($this->once())->method('execute')
-            ->willReturnCallback(function () use (&$exception) {
-                throw $exception = new \PDOException('', '23');
-            });
-
-        $storage = new PdoSessionHandler($pdo);
-        $result = $storage->read('foo');
-
-        $this->assertSame($content, $result);
-    }
-
-    public function testReadingRequiresExactlySameId()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $storage->write('id', 'data');
-        $storage->write('test', 'data');
-        $storage->write('space ', 'data');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $readDataCaseSensitive = $storage->read('ID');
-        $readDataNoCharFolding = $storage->read('tést');
-        $readDataKeepSpace = $storage->read('space ');
-        $readDataExtraSpace = $storage->read('space  ');
-        $storage->close();
-
-        $this->assertSame('', $readDataCaseSensitive, 'Retrieval by ID should be case-sensitive (collation setting)');
-        $this->assertSame('', $readDataNoCharFolding, 'Retrieval by ID should not do character folding (collation setting)');
-        $this->assertSame('data', $readDataKeepSpace, 'Retrieval by ID requires spaces as-is');
-        $this->assertSame('', $readDataExtraSpace, 'Retrieval by ID requires spaces as-is');
-    }
-
-    /**
-     * Simulates session_regenerate_id(true) which will require an INSERT or UPDATE (replace).
-     */
-    public function testWriteDifferentSessionIdThanRead()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->destroy('id');
-        $storage->write('new_id', 'data_of_new_session_id');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $data = $storage->read('new_id');
-        $storage->close();
-
-        $this->assertSame('data_of_new_session_id', $data, 'Data of regenerated session id is available');
-    }
-
-    public function testWrongUsageStillWorks()
-    {
-        // wrong method sequence that should no happen, but still works
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-        $storage->write('id', 'data');
-        $storage->write('other_id', 'other_data');
-        $storage->destroy('inexistent');
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $otherData = $storage->read('other_id');
-        $storage->close();
-
-        $this->assertSame('data', $data);
-        $this->assertSame('other_data', $otherData);
-    }
-
-    public function testSessionDestroy()
-    {
-        $pdo = $this->getMemorySqlitePdo();
-        $storage = new PdoSessionHandler($pdo);
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-        $this->assertEquals(1, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->destroy('id');
-        $storage->close();
-        $this->assertEquals(0, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
-
-        $storage->open('', 'sid');
-        $data = $storage->read('id');
-        $storage->close();
-        $this->assertSame('', $data, 'Destroyed session returns empty string');
-    }
-
-    /**
-     * @runInSeparateProcess
-     */
-    public function testSessionGC()
-    {
-        $previousLifeTime = ini_set('session.gc_maxlifetime', 1000);
-        $pdo = $this->getMemorySqlitePdo();
-        $storage = new PdoSessionHandler($pdo);
-
-        $storage->open('', 'sid');
-        $storage->read('id');
-        $storage->write('id', 'data');
-        $storage->close();
-
-        $storage->open('', 'sid');
-        $storage->read('gc_id');
-        ini_set('session.gc_maxlifetime', -1); // test that you can set lifetime of a session after it has been read
-        $storage->write('gc_id', 'data');
-        $storage->close();
-        $this->assertEquals(2, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'No session pruned because gc not called');
-
-        $storage->open('', 'sid');
-        $data = $storage->read('gc_id');
-        $storage->gc(-1);
-        $storage->close();
-
-        ini_set('session.gc_maxlifetime', $previousLifeTime);
-
-        $this->assertSame('', $data, 'Session already considered garbage, so not returning data even if it is not pruned yet');
-        $this->assertEquals(1, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'Expired session is pruned');
-    }
-
-    public function testGetConnection()
-    {
-        $storage = new PdoSessionHandler($this->getMemorySqlitePdo());
-
-        $method = new \ReflectionMethod($storage, 'getConnection');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\PDO', $method->invoke($storage));
-    }
-
-    public function testGetConnectionConnectsIfNeeded()
-    {
-        $storage = new PdoSessionHandler('sqlite::memory:');
-
-        $method = new \ReflectionMethod($storage, 'getConnection');
-        $method->setAccessible(true);
-
-        $this->assertInstanceOf('\PDO', $method->invoke($storage));
-    }
-
-    /**
-     * @dataProvider provideUrlDsnPairs
-     */
-    public function testUrlDsn($url, $expectedDsn, $expectedUser = null, $expectedPassword = null)
-    {
-        $storage = new PdoSessionHandler($url);
-        $reflection = new \ReflectionClass(PdoSessionHandler::class);
-
-        foreach (['dsn' => $expectedDsn, 'username' => $expectedUser, 'password' => $expectedPassword] as $property => $expectedValue) {
-            if (!isset($expectedValue)) {
-                continue;
-            }
-            $property = $reflection->getProperty($property);
-            $property->setAccessible(true);
-            $this->assertSame($expectedValue, $property->getValue($storage));
-        }
-    }
-
-    public function provideUrlDsnPairs()
-    {
-        yield ['mysql://localhost/test', 'mysql:host=localhost;dbname=test;'];
-        yield ['mysql://localhost:56/test', 'mysql:host=localhost;port=56;dbname=test;'];
-        yield ['mysql2://root:pwd@localhost/test', 'mysql:host=localhost;dbname=test;', 'root', 'pwd'];
-        yield ['postgres://localhost/test', 'pgsql:host=localhost;dbname=test;'];
-        yield ['postgresql://localhost:5634/test', 'pgsql:host=localhost;port=5634;dbname=test;'];
-        yield ['postgres://root:pwd@localhost/test', 'pgsql:host=localhost;dbname=test;', 'root', 'pwd'];
-        yield 'sqlite relative path' => ['sqlite://localhost/tmp/test', 'sqlite:tmp/test'];
-        yield 'sqlite absolute path' => ['sqlite://localhost//tmp/test', 'sqlite:/tmp/test'];
-        yield 'sqlite relative path without host' => ['sqlite:///tmp/test', 'sqlite:tmp/test'];
-        yield 'sqlite absolute path without host' => ['sqlite3:////tmp/test', 'sqlite:/tmp/test'];
-        yield ['sqlite://localhost/:memory:', 'sqlite::memory:'];
-        yield ['mssql://localhost/test', 'sqlsrv:server=localhost;Database=test'];
-        yield ['mssql://localhost:56/test', 'sqlsrv:server=localhost,56;Database=test'];
-    }
-
-    private function createStream($content)
-    {
-        $stream = tmpfile();
-        fwrite($stream, $content);
-        fseek($stream, 0);
-
-        return $stream;
-    }
-}
-
-class MockPdo extends \PDO
-{
-    public $prepareResult;
-    private $driverName;
-    private $errorMode;
-
-    public function __construct($driverName = null, $errorMode = null)
-    {
-        $this->driverName = $driverName;
-        $this->errorMode = null !== $errorMode ?: \PDO::ERRMODE_EXCEPTION;
-    }
-
-    public function getAttribute($attribute)
-    {
-        if (\PDO::ATTR_ERRMODE === $attribute) {
-            return $this->errorMode;
-        }
-
-        if (\PDO::ATTR_DRIVER_NAME === $attribute) {
-            return $this->driverName;
-        }
-
-        return parent::getAttribute($attribute);
-    }
-
-    public function prepare($statement, $driverOptions = [])
-    {
-        return \is_callable($this->prepareResult)
-            ? ($this->prepareResult)($statement, $driverOptions)
-            : $this->prepareResult;
-    }
-
-    public function beginTransaction()
-    {
-    }
-
-    public function rollBack()
-    {
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php
deleted file mode 100644
index 622b42da..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use Predis\Client;
-
-class PredisClusterSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): Client
-    {
-        return new Client([['host' => $host]]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php
deleted file mode 100644
index 5ecab116..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/PredisSessionHandlerTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use Predis\Client;
-
-class PredisSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): Client
-    {
-        return new Client(['host' => $host]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php
deleted file mode 100644
index b03a3723..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisArraySessionHandlerTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisArraySessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): \RedisArray
-    {
-        return new \RedisArray([$host]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php
deleted file mode 100644
index c1ba70dc..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisClusterSessionHandlerTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisClusterSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    public static function setUpBeforeClass(): void
-    {
-        if (!class_exists('RedisCluster')) {
-            self::markTestSkipped('The RedisCluster class is required.');
-        }
-
-        if (!$hosts = getenv('REDIS_CLUSTER_HOSTS')) {
-            self::markTestSkipped('REDIS_CLUSTER_HOSTS env var is not defined.');
-        }
-    }
-
-    protected function createRedisClient(string $host): \RedisCluster
-    {
-        return new \RedisCluster(null, explode(' ', getenv('REDIS_CLUSTER_HOSTS')));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php
deleted file mode 100644
index afdb6c50..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/RedisSessionHandlerTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-class RedisSessionHandlerTest extends AbstractRedisSessionHandlerTestCase
-{
-    protected function createRedisClient(string $host): \Redis
-    {
-        $client = new \Redis();
-        $client->connect($host);
-
-        return $client;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php
deleted file mode 100644
index 6a0d1687..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/StrictSessionHandlerTest.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandler;
-
-class StrictSessionHandlerTest extends TestCase
-{
-    public function testOpen()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('open')
-            ->with('path', 'name')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertInstanceOf('SessionUpdateTimestampHandlerInterface', $proxy);
-        $this->assertInstanceOf(AbstractSessionHandler::class, $proxy);
-        $this->assertTrue($proxy->open('path', 'name'));
-    }
-
-    public function testCloseSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('close')
-            ->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->close());
-    }
-
-    public function testValidateIdOK()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id'));
-    }
-
-    public function testValidateIdKO()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertFalse($proxy->validateId('id'));
-    }
-
-    public function testRead()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('data', $proxy->read('id'));
-    }
-
-    public function testReadWithValidateIdOK()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id'));
-        $this->assertSame('data', $proxy->read('id'));
-    }
-
-    public function testReadWithValidateIdMismatch()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->exactly(2))->method('read')
-            ->withConsecutive(['id1'], ['id2'])
-            ->will($this->onConsecutiveCalls('data1', 'data2'));
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->validateId('id1'));
-        $this->assertSame('data2', $proxy->read('id2'));
-    }
-
-    public function testUpdateTimestamp()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->updateTimestamp('id', 'data'));
-    }
-
-    public function testWrite()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->write('id', 'data'));
-    }
-
-    public function testWriteEmptyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->never())->method('write');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertFalse($proxy->validateId('id'));
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', ''));
-    }
-
-    public function testWriteEmptyExistingSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('data');
-        $handler->expects($this->never())->method('write');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('data', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', ''));
-    }
-
-    public function testDestroy()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('destroy')
-            ->with('id')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testDestroyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->once())->method('destroy')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testDestroyNonEmptyNewSession()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('read')
-            ->with('id')->willReturn('');
-        $handler->expects($this->once())->method('write')
-            ->with('id', 'data')->willReturn(true);
-        $handler->expects($this->once())->method('destroy')
-            ->with('id')->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertSame('', $proxy->read('id'));
-        $this->assertTrue($proxy->write('id', 'data'));
-        $this->assertTrue($proxy->destroy('id'));
-    }
-
-    public function testGc()
-    {
-        $handler = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $handler->expects($this->once())->method('gc')
-            ->with(123)->willReturn(true);
-        $proxy = new StrictSessionHandler($handler);
-
-        $this->assertTrue($proxy->gc(123));
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php
deleted file mode 100644
index e040f486..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MetadataBagTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
-
-/**
- * Test class for MetadataBag.
- *
- * @group time-sensitive
- */
-class MetadataBagTest extends TestCase
-{
-    /**
-     * @var MetadataBag
-     */
-    protected $bag;
-
-    protected $array = [];
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-        $this->bag = new MetadataBag();
-        $this->array = [MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 0];
-        $this->bag->initialize($this->array);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->array = [];
-        $this->bag = null;
-        parent::tearDown();
-    }
-
-    public function testInitialize()
-    {
-        $sessionMetadata = [];
-
-        $bag1 = new MetadataBag();
-        $bag1->initialize($sessionMetadata);
-        $this->assertGreaterThanOrEqual(time(), $bag1->getCreated());
-        $this->assertEquals($bag1->getCreated(), $bag1->getLastUsed());
-
-        sleep(1);
-        $bag2 = new MetadataBag();
-        $bag2->initialize($sessionMetadata);
-        $this->assertEquals($bag1->getCreated(), $bag2->getCreated());
-        $this->assertEquals($bag1->getLastUsed(), $bag2->getLastUsed());
-        $this->assertEquals($bag2->getCreated(), $bag2->getLastUsed());
-
-        sleep(1);
-        $bag3 = new MetadataBag();
-        $bag3->initialize($sessionMetadata);
-        $this->assertEquals($bag1->getCreated(), $bag3->getCreated());
-        $this->assertGreaterThan($bag2->getLastUsed(), $bag3->getLastUsed());
-        $this->assertNotEquals($bag3->getCreated(), $bag3->getLastUsed());
-    }
-
-    public function testGetSetName()
-    {
-        $this->assertEquals('__metadata', $this->bag->getName());
-        $this->bag->setName('foo');
-        $this->assertEquals('foo', $this->bag->getName());
-    }
-
-    public function testGetStorageKey()
-    {
-        $this->assertEquals('_sf2_meta', $this->bag->getStorageKey());
-    }
-
-    public function testGetLifetime()
-    {
-        $bag = new MetadataBag();
-        $array = [MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 1000];
-        $bag->initialize($array);
-        $this->assertEquals(1000, $bag->getLifetime());
-    }
-
-    public function testGetCreated()
-    {
-        $this->assertEquals(1234567, $this->bag->getCreated());
-    }
-
-    public function testGetLastUsed()
-    {
-        $this->assertLessThanOrEqual(time(), $this->bag->getLastUsed());
-    }
-
-    public function testClear()
-    {
-        $this->bag->clear();
-
-        // the clear method has no side effects, we just want to ensure it doesn't trigger any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testSkipLastUsedUpdate()
-    {
-        $bag = new MetadataBag('', 30);
-        $timeStamp = time();
-
-        $created = $timeStamp - 15;
-        $sessionMetadata = [
-            MetadataBag::CREATED => $created,
-            MetadataBag::UPDATED => $created,
-            MetadataBag::LIFETIME => 1000,
-        ];
-        $bag->initialize($sessionMetadata);
-
-        $this->assertEquals($created, $sessionMetadata[MetadataBag::UPDATED]);
-    }
-
-    public function testDoesNotSkipLastUsedUpdate()
-    {
-        $bag = new MetadataBag('', 30);
-        $timeStamp = time();
-
-        $created = $timeStamp - 45;
-        $sessionMetadata = [
-            MetadataBag::CREATED => $created,
-            MetadataBag::UPDATED => $created,
-            MetadataBag::LIFETIME => 1000,
-        ];
-        $bag->initialize($sessionMetadata);
-
-        $this->assertEquals($timeStamp, $sessionMetadata[MetadataBag::UPDATED]);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php
deleted file mode 100644
index b99e7198..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MockArraySessionStorageTest.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-
-/**
- * Test class for MockArraySessionStorage.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockArraySessionStorageTest extends TestCase
-{
-    /**
-     * @var MockArraySessionStorage
-     */
-    private $storage;
-
-    /**
-     * @var AttributeBag
-     */
-    private $attributes;
-
-    /**
-     * @var FlashBag
-     */
-    private $flashes;
-
-    private $data;
-
-    protected function setUp(): void
-    {
-        $this->attributes = new AttributeBag();
-        $this->flashes = new FlashBag();
-
-        $this->data = [
-            $this->attributes->getStorageKey() => ['foo' => 'bar'],
-            $this->flashes->getStorageKey() => ['notice' => 'hello'],
-        ];
-
-        $this->storage = new MockArraySessionStorage();
-        $this->storage->registerBag($this->flashes);
-        $this->storage->registerBag($this->attributes);
-        $this->storage->setSessionData($this->data);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->data = null;
-        $this->flashes = null;
-        $this->attributes = null;
-        $this->storage = null;
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->assertNotEquals('', $id);
-        $this->storage->start();
-        $this->assertEquals($id, $this->storage->getId());
-    }
-
-    public function testRegenerate()
-    {
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->storage->regenerate();
-        $this->assertNotEquals($id, $this->storage->getId());
-        $this->assertEquals(['foo' => 'bar'], $this->storage->getBag('attributes')->all());
-        $this->assertEquals(['notice' => 'hello'], $this->storage->getBag('flashes')->peekAll());
-
-        $id = $this->storage->getId();
-        $this->storage->regenerate(true);
-        $this->assertNotEquals($id, $this->storage->getId());
-        $this->assertEquals(['foo' => 'bar'], $this->storage->getBag('attributes')->all());
-        $this->assertEquals(['notice' => 'hello'], $this->storage->getBag('flashes')->peekAll());
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $this->assertNotEquals('', $this->storage->getId());
-    }
-
-    public function testClearClearsBags()
-    {
-        $this->storage->clear();
-
-        $this->assertSame([], $this->storage->getBag('attributes')->all());
-        $this->assertSame([], $this->storage->getBag('flashes')->peekAll());
-    }
-
-    public function testClearStartsSession()
-    {
-        $this->storage->clear();
-
-        $this->assertTrue($this->storage->isStarted());
-    }
-
-    public function testClearWithNoBagsStartsSession()
-    {
-        $storage = new MockArraySessionStorage();
-
-        $storage->clear();
-
-        $this->assertTrue($storage->isStarted());
-    }
-
-    public function testUnstartedSave()
-    {
-        $this->expectException('RuntimeException');
-        $this->storage->save();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php
deleted file mode 100644
index d9314075..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/MockFileSessionStorageTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;
-
-/**
- * Test class for MockFileSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- */
-class MockFileSessionStorageTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $sessionDir;
-
-    /**
-     * @var MockFileSessionStorage
-     */
-    protected $storage;
-
-    protected function setUp(): void
-    {
-        $this->sessionDir = sys_get_temp_dir().'/sftest';
-        $this->storage = $this->getStorage();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->sessionDir = null;
-        $this->storage = null;
-        array_map('unlink', glob($this->sessionDir.'/*.session'));
-        if (is_dir($this->sessionDir)) {
-            rmdir($this->sessionDir);
-        }
-    }
-
-    public function testStart()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->assertTrue($this->storage->start());
-        $id = $this->storage->getId();
-        $this->assertNotEquals('', $this->storage->getId());
-        $this->assertTrue($this->storage->start());
-        $this->assertEquals($id, $this->storage->getId());
-    }
-
-    public function testRegenerate()
-    {
-        $this->storage->start();
-        $this->storage->getBag('attributes')->set('regenerate', 1234);
-        $this->storage->regenerate();
-        $this->assertEquals(1234, $this->storage->getBag('attributes')->get('regenerate'));
-        $this->storage->regenerate(true);
-        $this->assertEquals(1234, $this->storage->getBag('attributes')->get('regenerate'));
-    }
-
-    public function testGetId()
-    {
-        $this->assertEquals('', $this->storage->getId());
-        $this->storage->start();
-        $this->assertNotEquals('', $this->storage->getId());
-    }
-
-    public function testSave()
-    {
-        $this->storage->start();
-        $id = $this->storage->getId();
-        $this->assertNotEquals('108', $this->storage->getBag('attributes')->get('new'));
-        $this->assertFalse($this->storage->getBag('flashes')->has('newkey'));
-        $this->storage->getBag('attributes')->set('new', '108');
-        $this->storage->getBag('flashes')->set('newkey', 'test');
-        $this->storage->save();
-
-        $storage = $this->getStorage();
-        $storage->setId($id);
-        $storage->start();
-        $this->assertEquals('108', $storage->getBag('attributes')->get('new'));
-        $this->assertTrue($storage->getBag('flashes')->has('newkey'));
-        $this->assertEquals(['test'], $storage->getBag('flashes')->peek('newkey'));
-    }
-
-    public function testMultipleInstances()
-    {
-        $storage1 = $this->getStorage();
-        $storage1->start();
-        $storage1->getBag('attributes')->set('foo', 'bar');
-        $storage1->save();
-
-        $storage2 = $this->getStorage();
-        $storage2->setId($storage1->getId());
-        $storage2->start();
-        $this->assertEquals('bar', $storage2->getBag('attributes')->get('foo'), 'values persist between instances');
-    }
-
-    public function testSaveWithoutStart()
-    {
-        $this->expectException('RuntimeException');
-        $storage1 = $this->getStorage();
-        $storage1->save();
-    }
-
-    private function getStorage()
-    {
-        $storage = new MockFileSessionStorage($this->sessionDir);
-        $storage->registerBag(new FlashBag());
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php
deleted file mode 100644
index 17f46bef..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/NativeSessionStorageTest.php
+++ /dev/null
@@ -1,290 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Test class for NativeSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- *
- * These tests require separate processes.
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class NativeSessionStorageTest extends TestCase
-{
-    private $savePath;
-
-    protected function setUp(): void
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest');
-        if (!is_dir($this->savePath)) {
-            mkdir($this->savePath);
-        }
-    }
-
-    protected function tearDown(): void
-    {
-        session_write_close();
-        array_map('unlink', glob($this->savePath.'/*'));
-        if (is_dir($this->savePath)) {
-            rmdir($this->savePath);
-        }
-
-        $this->savePath = null;
-    }
-
-    /**
-     * @return NativeSessionStorage
-     */
-    protected function getStorage(array $options = [])
-    {
-        $storage = new NativeSessionStorage($options);
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-
-    public function testBag()
-    {
-        $storage = $this->getStorage();
-        $bag = new FlashBag();
-        $storage->registerBag($bag);
-        $this->assertSame($bag, $storage->getBag($bag->getName()));
-    }
-
-    public function testRegisterBagException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $storage = $this->getStorage();
-        $storage->getBag('non_existing');
-    }
-
-    public function testRegisterBagForAStartedSessionThrowsException()
-    {
-        $this->expectException('LogicException');
-        $storage = $this->getStorage();
-        $storage->start();
-        $storage->registerBag(new AttributeBag());
-    }
-
-    public function testGetId()
-    {
-        $storage = $this->getStorage();
-        $this->assertSame('', $storage->getId(), 'Empty ID before starting session');
-
-        $storage->start();
-        $id = $storage->getId();
-        $this->assertIsString($id);
-        $this->assertNotSame('', $id);
-
-        $storage->save();
-        $this->assertSame($id, $storage->getId(), 'ID stays after saving session');
-    }
-
-    public function testRegenerate()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->regenerate();
-        $this->assertNotEquals($id, $storage->getId());
-        $this->assertEquals(7, $storage->getBag('attributes')->get('lucky'));
-    }
-
-    public function testRegenerateDestroy()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('legs', 11);
-        $storage->regenerate(true);
-        $this->assertNotEquals($id, $storage->getId());
-        $this->assertEquals(11, $storage->getBag('attributes')->get('legs'));
-    }
-
-    public function testSessionGlobalIsUpToDateAfterIdRegeneration()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->regenerate();
-        $storage->getBag('attributes')->set('lucky', 42);
-
-        $this->assertEquals(42, $_SESSION['_sf2_attributes']['lucky']);
-    }
-
-    public function testRegenerationFailureDoesNotFlagStorageAsStarted()
-    {
-        $storage = $this->getStorage();
-        $this->assertFalse($storage->regenerate());
-        $this->assertFalse($storage->isStarted());
-    }
-
-    public function testDefaultSessionCacheLimiter()
-    {
-        $this->iniSet('session.cache_limiter', 'nocache');
-
-        $storage = new NativeSessionStorage();
-        $this->assertEquals('', ini_get('session.cache_limiter'));
-    }
-
-    public function testExplicitSessionCacheLimiter()
-    {
-        $this->iniSet('session.cache_limiter', 'nocache');
-
-        $storage = new NativeSessionStorage(['cache_limiter' => 'public']);
-        $this->assertEquals('public', ini_get('session.cache_limiter'));
-    }
-
-    public function testCookieOptions()
-    {
-        $options = [
-            'cookie_lifetime' => 123456,
-            'cookie_path' => '/my/cookie/path',
-            'cookie_domain' => 'symfony.example.com',
-            'cookie_secure' => true,
-            'cookie_httponly' => false,
-        ];
-
-        if (\PHP_VERSION_ID >= 70300) {
-            $options['cookie_samesite'] = 'lax';
-        }
-
-        $this->getStorage($options);
-        $temp = session_get_cookie_params();
-        $gco = [];
-
-        foreach ($temp as $key => $value) {
-            $gco['cookie_'.$key] = $value;
-        }
-
-        $this->assertEquals($options, $gco);
-    }
-
-    public function testSessionOptions()
-    {
-        if (\defined('HHVM_VERSION')) {
-            $this->markTestSkipped('HHVM is not handled in this test case.');
-        }
-
-        $options = [
-            'url_rewriter.tags' => 'a=href',
-            'cache_expire' => '200',
-        ];
-
-        $this->getStorage($options);
-
-        $this->assertSame('a=href', ini_get('url_rewriter.tags'));
-        $this->assertSame('200', ini_get('session.cache_expire'));
-    }
-
-    public function testSetSaveHandlerException()
-    {
-        $this->expectException('InvalidArgumentException');
-        $storage = $this->getStorage();
-        $storage->setSaveHandler(new \stdClass());
-    }
-
-    public function testSetSaveHandler()
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $storage = $this->getStorage();
-        $storage->setSaveHandler();
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(null);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new SessionHandlerProxy(new NativeFileSessionHandler()));
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new NativeFileSessionHandler());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new SessionHandlerProxy(new NullSessionHandler()));
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-        $storage->setSaveHandler(new NullSessionHandler());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy', $storage->getSaveHandler());
-    }
-
-    public function testStarted()
-    {
-        $this->expectException('RuntimeException');
-        $storage = $this->getStorage();
-
-        $this->assertFalse($storage->getSaveHandler()->isActive());
-        $this->assertFalse($storage->isStarted());
-
-        session_start();
-        $this->assertTrue(isset($_SESSION));
-        $this->assertTrue($storage->getSaveHandler()->isActive());
-
-        // PHP session might have started, but the storage driver has not, so false is correct here
-        $this->assertFalse($storage->isStarted());
-
-        $key = $storage->getMetadataBag()->getStorageKey();
-        $this->assertArrayNotHasKey($key, $_SESSION);
-        $storage->start();
-    }
-
-    public function testRestart()
-    {
-        $storage = $this->getStorage();
-        $storage->start();
-        $id = $storage->getId();
-        $storage->getBag('attributes')->set('lucky', 7);
-        $storage->save();
-        $storage->start();
-        $this->assertSame($id, $storage->getId(), 'Same session ID after restarting');
-        $this->assertSame(7, $storage->getBag('attributes')->get('lucky'), 'Data still available');
-    }
-
-    public function testCanCreateNativeSessionStorageWhenSessionAlreadyStarted()
-    {
-        session_start();
-        $this->getStorage();
-
-        // Assert no exception has been thrown by `getStorage()`
-        $this->addToAssertionCount(1);
-    }
-
-    public function testSetSessionOptionsOnceSessionStartedIsIgnored()
-    {
-        session_start();
-        $this->getStorage([
-            'name' => 'something-else',
-        ]);
-
-        // Assert no exception has been thrown by `getStorage()`
-        $this->addToAssertionCount(1);
-    }
-
-    public function testGetBagsOnceSessionStartedIsIgnored()
-    {
-        session_start();
-        $bag = new AttributeBag();
-        $bag->setName('flashes');
-
-        $storage = $this->getStorage();
-        $storage->registerBag($bag);
-
-        $this->assertEquals($storage->getBag('flashes'), $bag);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php
deleted file mode 100644
index 7d682707..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
-use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
-
-/**
- * Test class for PhpSessionStorage.
- *
- * @author Drak <drak@zikula.org>
- *
- * These tests require separate processes.
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class PhpBridgeSessionStorageTest extends TestCase
-{
-    private $savePath;
-
-    protected function setUp(): void
-    {
-        $this->iniSet('session.save_handler', 'files');
-        $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest');
-        if (!is_dir($this->savePath)) {
-            mkdir($this->savePath);
-        }
-    }
-
-    protected function tearDown(): void
-    {
-        session_write_close();
-        array_map('unlink', glob($this->savePath.'/*'));
-        if (is_dir($this->savePath)) {
-            rmdir($this->savePath);
-        }
-
-        $this->savePath = null;
-    }
-
-    /**
-     * @return PhpBridgeSessionStorage
-     */
-    protected function getStorage()
-    {
-        $storage = new PhpBridgeSessionStorage();
-        $storage->registerBag(new AttributeBag());
-
-        return $storage;
-    }
-
-    public function testPhpSession()
-    {
-        $storage = $this->getStorage();
-
-        $this->assertNotSame(\PHP_SESSION_ACTIVE, session_status());
-        $this->assertFalse($storage->isStarted());
-
-        session_start();
-        $this->assertTrue(isset($_SESSION));
-        $this->assertSame(\PHP_SESSION_ACTIVE, session_status());
-        // PHP session might have started, but the storage driver has not, so false is correct here
-        $this->assertFalse($storage->isStarted());
-
-        $key = $storage->getMetadataBag()->getStorageKey();
-        $this->assertArrayNotHasKey($key, $_SESSION);
-        $storage->start();
-        $this->assertArrayHasKey($key, $_SESSION);
-    }
-
-    public function testClear()
-    {
-        $storage = $this->getStorage();
-        session_start();
-        $_SESSION['drak'] = 'loves symfony';
-        $storage->getBag('attributes')->set('symfony', 'greatness');
-        $key = $storage->getBag('attributes')->getStorageKey();
-        $this->assertEquals($_SESSION[$key], ['symfony' => 'greatness']);
-        $this->assertEquals($_SESSION['drak'], 'loves symfony');
-        $storage->clear();
-        $this->assertEquals($_SESSION[$key], []);
-        $this->assertEquals($_SESSION['drak'], 'loves symfony');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php
deleted file mode 100644
index 4820a659..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Proxy;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Test class for AbstractProxy.
- *
- * @author Drak <drak@zikula.org>
- */
-class AbstractProxyTest extends TestCase
-{
-    /**
-     * @var AbstractProxy
-     */
-    protected $proxy;
-
-    protected function setUp(): void
-    {
-        $this->proxy = $this->getMockForAbstractClass(AbstractProxy::class);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->proxy = null;
-    }
-
-    public function testGetSaveHandlerName()
-    {
-        $this->assertNull($this->proxy->getSaveHandlerName());
-    }
-
-    public function testIsSessionHandlerInterface()
-    {
-        $this->assertFalse($this->proxy->isSessionHandlerInterface());
-        $sh = new SessionHandlerProxy(new \SessionHandler());
-        $this->assertTrue($sh->isSessionHandlerInterface());
-    }
-
-    public function testIsWrapper()
-    {
-        $this->assertFalse($this->proxy->isWrapper());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testIsActive()
-    {
-        $this->assertFalse($this->proxy->isActive());
-        session_start();
-        $this->assertTrue($this->proxy->isActive());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testName()
-    {
-        $this->assertEquals(session_name(), $this->proxy->getName());
-        $this->proxy->setName('foo');
-        $this->assertEquals('foo', $this->proxy->getName());
-        $this->assertEquals(session_name(), $this->proxy->getName());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testNameException()
-    {
-        $this->expectException('LogicException');
-        session_start();
-        $this->proxy->setName('foo');
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testId()
-    {
-        $this->assertEquals(session_id(), $this->proxy->getId());
-        $this->proxy->setId('foo');
-        $this->assertEquals('foo', $this->proxy->getId());
-        $this->assertEquals(session_id(), $this->proxy->getId());
-    }
-
-    /**
-     * @runInSeparateProcess
-     * @preserveGlobalState disabled
-     */
-    public function testIdException()
-    {
-        $this->expectException('LogicException');
-        session_start();
-        $this->proxy->setId('foo');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php b/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php
deleted file mode 100644
index 1cf4aed0..00000000
--- a/vendor/symfony/http-foundation/Tests/Session/Storage/Proxy/SessionHandlerProxyTest.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Proxy;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy;
-
-/**
- * Tests for SessionHandlerProxy class.
- *
- * @author Drak <drak@zikula.org>
- *
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class SessionHandlerProxyTest extends TestCase
-{
-    /**
-     * @var \PHPUnit\Framework\MockObject\Matcher
-     */
-    private $mock;
-
-    /**
-     * @var SessionHandlerProxy
-     */
-    private $proxy;
-
-    protected function setUp(): void
-    {
-        $this->mock = $this->getMockBuilder('SessionHandlerInterface')->getMock();
-        $this->proxy = new SessionHandlerProxy($this->mock);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->mock = null;
-        $this->proxy = null;
-    }
-
-    public function testOpenTrue()
-    {
-        $this->mock->expects($this->once())
-            ->method('open')
-            ->willReturn(true);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->open('name', 'id');
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testOpenFalse()
-    {
-        $this->mock->expects($this->once())
-            ->method('open')
-            ->willReturn(false);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->open('name', 'id');
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testClose()
-    {
-        $this->mock->expects($this->once())
-            ->method('close')
-            ->willReturn(true);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->close();
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testCloseFalse()
-    {
-        $this->mock->expects($this->once())
-            ->method('close')
-            ->willReturn(false);
-
-        $this->assertFalse($this->proxy->isActive());
-        $this->proxy->close();
-        $this->assertFalse($this->proxy->isActive());
-    }
-
-    public function testRead()
-    {
-        $this->mock->expects($this->once())
-            ->method('read');
-
-        $this->proxy->read('id');
-    }
-
-    public function testWrite()
-    {
-        $this->mock->expects($this->once())
-            ->method('write');
-
-        $this->proxy->write('id', 'data');
-    }
-
-    public function testDestroy()
-    {
-        $this->mock->expects($this->once())
-            ->method('destroy');
-
-        $this->proxy->destroy('id');
-    }
-
-    public function testGc()
-    {
-        $this->mock->expects($this->once())
-            ->method('gc');
-
-        $this->proxy->gc(86400);
-    }
-
-    /**
-     * @requires PHPUnit 5.1
-     */
-    public function testValidateId()
-    {
-        $mock = $this->getMockBuilder(['SessionHandlerInterface', 'SessionUpdateTimestampHandlerInterface'])->getMock();
-        $mock->expects($this->once())
-            ->method('validateId');
-
-        $proxy = new SessionHandlerProxy($mock);
-        $proxy->validateId('id');
-
-        $this->assertTrue($this->proxy->validateId('id'));
-    }
-
-    /**
-     * @requires PHPUnit 5.1
-     */
-    public function testUpdateTimestamp()
-    {
-        $mock = $this->getMockBuilder(['SessionHandlerInterface', 'SessionUpdateTimestampHandlerInterface'])->getMock();
-        $mock->expects($this->once())
-            ->method('updateTimestamp')
-            ->willReturn(false);
-
-        $proxy = new SessionHandlerProxy($mock);
-        $proxy->updateTimestamp('id', 'data');
-
-        $this->mock->expects($this->once())
-            ->method('write');
-
-        $this->proxy->updateTimestamp('id', 'data');
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php b/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php
deleted file mode 100644
index a084e917..00000000
--- a/vendor/symfony/http-foundation/Tests/StreamedResponseTest.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-
-class StreamedResponseTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 404, ['Content-Type' => 'text/plain']);
-
-        $this->assertEquals(404, $response->getStatusCode());
-        $this->assertEquals('text/plain', $response->headers->get('Content-Type'));
-    }
-
-    public function testPrepareWith11Protocol()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $request = Request::create('/');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.1');
-
-        $response->prepare($request);
-
-        $this->assertEquals('1.1', $response->getProtocolVersion());
-        $this->assertNotEquals('chunked', $response->headers->get('Transfer-Encoding'), 'Apache assumes responses with a Transfer-Encoding header set to chunked to already be encoded.');
-    }
-
-    public function testPrepareWith10Protocol()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $request = Request::create('/');
-        $request->server->set('SERVER_PROTOCOL', 'HTTP/1.0');
-
-        $response->prepare($request);
-
-        $this->assertEquals('1.0', $response->getProtocolVersion());
-        $this->assertNull($response->headers->get('Transfer-Encoding'));
-    }
-
-    public function testPrepareWithHeadRequest()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 200, ['Content-Length' => '123']);
-        $request = Request::create('/', 'HEAD');
-
-        $response->prepare($request);
-
-        $this->assertSame('123', $response->headers->get('Content-Length'));
-    }
-
-    public function testPrepareWithCacheHeaders()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; }, 200, ['Cache-Control' => 'max-age=600, public']);
-        $request = Request::create('/', 'GET');
-
-        $response->prepare($request);
-        $this->assertEquals('max-age=600, public', $response->headers->get('Cache-Control'));
-    }
-
-    public function testSendContent()
-    {
-        $called = 0;
-
-        $response = new StreamedResponse(function () use (&$called) { ++$called; });
-
-        $response->sendContent();
-        $this->assertEquals(1, $called);
-
-        $response->sendContent();
-        $this->assertEquals(1, $called);
-    }
-
-    public function testSendContentWithNonCallable()
-    {
-        $this->expectException('LogicException');
-        $response = new StreamedResponse(null);
-        $response->sendContent();
-    }
-
-    public function testSetContent()
-    {
-        $this->expectException('LogicException');
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $response->setContent('foo');
-    }
-
-    public function testGetContent()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $this->assertFalse($response->getContent());
-    }
-
-    public function testCreate()
-    {
-        $response = StreamedResponse::create(function () {}, 204);
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response);
-        $this->assertEquals(204, $response->getStatusCode());
-    }
-
-    public function testReturnThis()
-    {
-        $response = new StreamedResponse(function () {});
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendContent());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendContent());
-
-        $response = new StreamedResponse(function () {});
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendHeaders());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\StreamedResponse', $response->sendHeaders());
-    }
-
-    public function testSetNotModified()
-    {
-        $response = new StreamedResponse(function () { echo 'foo'; });
-        $modified = $response->setNotModified();
-        $this->assertObjectHasAttribute('headers', $modified);
-        $this->assertObjectHasAttribute('content', $modified);
-        $this->assertObjectHasAttribute('version', $modified);
-        $this->assertObjectHasAttribute('statusCode', $modified);
-        $this->assertObjectHasAttribute('statusText', $modified);
-        $this->assertObjectHasAttribute('charset', $modified);
-        $this->assertEquals(304, $modified->getStatusCode());
-
-        ob_start();
-        $modified->sendContent();
-        $string = ob_get_clean();
-        $this->assertEmpty($string);
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
deleted file mode 100644
index eca8aed2..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Test\Constraint\RequestAttributeValueSame;
-
-class RequestAttributeValueSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $request = new Request();
-        $request->attributes->set('foo', 'bar');
-        $constraint = new RequestAttributeValueSame('foo', 'bar');
-        $this->assertTrue($constraint->evaluate($request, '', true));
-        $constraint = new RequestAttributeValueSame('bar', 'foo');
-        $this->assertFalse($constraint->evaluate($request, '', true));
-
-        try {
-            $constraint->evaluate($request);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Request has attribute \"bar\" with value \"foo\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
deleted file mode 100644
index 778879c3..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseCookieValueSame;
-
-class ResponseCookieValueSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $response = new Response();
-        $response->headers->setCookie(Cookie::create('foo', 'bar', 0, '/path'));
-        $constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseCookieValueSame('foo', 'babar', '/path');
-        $this->assertFalse($constraint->evaluate($response, '', true));
-
-        try {
-            $constraint->evaluate($response);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has cookie \"foo\" with path \"/path\" with value \"babar\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
deleted file mode 100644
index 05ca95fb..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasCookie;
-
-class ResponseHasCookieTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $response = new Response();
-        $response->headers->setCookie(Cookie::create('foo', 'bar'));
-        $constraint = new ResponseHasCookie('foo');
-        $this->assertTrue($constraint->evaluate($response, '', true));
-        $constraint = new ResponseHasCookie('bar');
-        $this->assertFalse($constraint->evaluate($response, '', true));
-
-        try {
-            $constraint->evaluate($response);
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has cookie \"bar\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
deleted file mode 100644
index 7b811a64..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasHeader;
-
-class ResponseHasHeaderTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseHasHeader('Date');
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $constraint = new ResponseHasHeader('X-Date');
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has header \"X-Date\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
deleted file mode 100644
index d527f35d..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHeaderSame;
-
-class ResponseHeaderSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseHeaderSame('Cache-Control', 'no-cache, private');
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $constraint = new ResponseHeaderSame('Cache-Control', 'public');
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertEquals("Failed asserting that the Response has header \"Cache-Control\" with value \"public\".\n", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
deleted file mode 100644
index a8314c25..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsRedirected;
-
-class ResponseIsRedirectedTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseIsRedirected();
-
-        $this->assertTrue($constraint->evaluate(new Response('', 301), '', true));
-        $this->assertFalse($constraint->evaluate(new Response(), '', true));
-
-        try {
-            $constraint->evaluate(new Response());
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response is redirected.\nHTTP/1.0 200 OK", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
deleted file mode 100644
index b59daf8a..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsSuccessful;
-
-class ResponseIsSuccessfulTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseIsSuccessful();
-
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
-
-        try {
-            $constraint->evaluate(new Response('', 404));
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response is successful.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php b/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
deleted file mode 100644
index 53200fdd..00000000
--- a/vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Test\Constraint;
-
-use PHPUnit\Framework\ExpectationFailedException;
-use PHPUnit\Framework\TestCase;
-use PHPUnit\Framework\TestFailure;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Test\Constraint\ResponseStatusCodeSame;
-
-class ResponseStatusCodeSameTest extends TestCase
-{
-    public function testConstraint(): void
-    {
-        $constraint = new ResponseStatusCodeSame(200);
-        $this->assertTrue($constraint->evaluate(new Response(), '', true));
-        $this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
-        $constraint = new ResponseStatusCodeSame(404);
-        $this->assertTrue($constraint->evaluate(new Response('', 404), '', true));
-
-        $constraint = new ResponseStatusCodeSame(200);
-        try {
-            $constraint->evaluate(new Response('', 404));
-        } catch (ExpectationFailedException $e) {
-            $this->assertStringContainsString("Failed asserting that the Response status code is 200.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
-
-            return;
-        }
-
-        $this->fail();
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/UrlHelperTest.php b/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
deleted file mode 100644
index 9a750bd8..00000000
--- a/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\UrlHelper;
-use Symfony\Component\Routing\RequestContext;
-
-class UrlHelperTest extends TestCase
-{
-    /**
-     * @dataProvider getGenerateAbsoluteUrlData()
-     */
-    public function testGenerateAbsoluteUrl($expected, $path, $pathinfo)
-    {
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $helper = new UrlHelper($stack);
-
-        $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlData()
-    {
-        return [
-            ['http://localhost/foo.png', '/foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar.html'],
-            ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar'],
-            ['http://localhost/foo/bar/foo.png', 'foo.png', '/foo/bar/'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-
-            ['http://localhost/foo/bar?baz', '?baz', '/foo/bar'],
-            ['http://localhost/foo/bar?baz=1', '?baz=1', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1', 'baz?baz=1', '/foo/bar?foo=1'],
-
-            ['http://localhost/foo/bar#baz', '#baz', '/foo/bar'],
-            ['http://localhost/foo/bar?0#baz', '#baz', '/foo/bar?0'],
-            ['http://localhost/foo/bar?baz=1#baz', '?baz=1#baz', '/foo/bar?foo=1'],
-            ['http://localhost/foo/baz?baz=1#baz', 'baz?baz=1#baz', '/foo/bar?foo=1'],
-        ];
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithRequestContext($path, $baseUrl, $host, $scheme, $httpPort, $httpsPort, $expected)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $requestContext = new RequestContext($baseUrl, 'GET', $host, $scheme, $httpPort, $httpsPort, $path);
-        $helper = new UrlHelper(new RequestStack(), $requestContext);
-
-        $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
-    }
-
-    /**
-     * @dataProvider getGenerateAbsoluteUrlRequestContextData
-     */
-    public function testGenerateAbsoluteUrlWithoutRequestAndRequestContext($path)
-    {
-        if (!class_exists('Symfony\Component\Routing\RequestContext')) {
-            $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
-        }
-
-        $helper = new UrlHelper(new RequestStack());
-
-        $this->assertEquals($path, $helper->getAbsoluteUrl($path));
-    }
-
-    public function getGenerateAbsoluteUrlRequestContextData()
-    {
-        return [
-            ['/foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'http', 80, 443, 'http://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo.png'],
-            ['foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo/foo.png'],
-            ['foo.png', '/foo/bar/', 'localhost', 'https', 80, 443, 'https://localhost/foo/bar/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'http', 443, 80, 'http://localhost:443/foo.png'],
-            ['/foo.png', '/foo', 'localhost', 'https', 443, 80, 'https://localhost:80/foo.png'],
-        ];
-    }
-
-    public function testGenerateAbsoluteUrlWithScriptFileName()
-    {
-        $request = Request::create('http://localhost/app/web/app_dev.php');
-        $request->server->set('SCRIPT_FILENAME', '/var/www/app/web/app_dev.php');
-
-        $stack = new RequestStack();
-        $stack->push($request);
-        $helper = new UrlHelper($stack);
-
-        $this->assertEquals(
-            'http://localhost/app/web/bundles/framework/css/structure.css',
-            $helper->getAbsoluteUrl('/app/web/bundles/framework/css/structure.css')
-        );
-    }
-
-    /**
-     * @dataProvider getGenerateRelativePathData()
-     */
-    public function testGenerateRelativePath($expected, $path, $pathinfo)
-    {
-        if (!method_exists('Symfony\Component\HttpFoundation\Request', 'getRelativeUriForPath')) {
-            $this->markTestSkipped('Your version of Symfony HttpFoundation is too old.');
-        }
-
-        $stack = new RequestStack();
-        $stack->push(Request::create($pathinfo));
-        $urlHelper = new UrlHelper($stack);
-
-        $this->assertEquals($expected, $urlHelper->getRelativePath($path));
-    }
-
-    public function getGenerateRelativePathData()
-    {
-        return [
-            ['../foo.png', '/foo.png', '/foo/bar.html'],
-            ['../baz/foo.png', '/baz/foo.png', '/foo/bar.html'],
-            ['baz/foo.png', 'baz/foo.png', '/foo/bar.html'],
-
-            ['http://example.com/baz', 'http://example.com/baz', '/'],
-            ['https://example.com/baz', 'https://example.com/baz', '/'],
-            ['//example.com/baz', '//example.com/baz', '/'],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng b/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng
deleted file mode 100644
index 73708ca6..00000000
--- a/vendor/symfony/http-foundation/Tests/schema/http-status-codes.rng
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version='1.0'?>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  ns="http://www.iana.org/assignments">
-
-  <include href="iana-registry.rng"/>
-
-  <start>
-    <element name="registry">
-      <ref name="registryMeta"/>
-      <element name="registry">
-        <ref name="registryMeta"/>
-        <zeroOrMore>
-          <element name="record">
-            <optional>
-              <attribute name="date"><ref name="genericDate"/></attribute>
-            </optional>
-            <optional>
-              <attribute name="updated"><ref name="genericDate"/></attribute>
-            </optional>
-            <element name="value"><ref name="genericRange"/></element>
-            <element name="description"><text/></element>
-            <ref name="references"/>
-          </element>
-        </zeroOrMore>
-      </element>
-      <ref name="people"/>
-    </element>
-  </start>
-
-</grammar>
diff --git a/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng b/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng
deleted file mode 100644
index b9c3ca9d..00000000
--- a/vendor/symfony/http-foundation/Tests/schema/iana-registry.rng
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version='1.0'?>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  ns="http://www.iana.org/assignments">
-
-  <define name="registryMeta">
-    <interleave>
-      <attribute name="id"><data type="ID"/></attribute>
-      <optional><element name="title"><ref name="text_with_references"/></element></optional>
-      <optional><element name="created"><ref name="genericDate"/></element></optional>
-      <optional><element name="updated"><data type="date"/></element></optional>
-      <optional><element name="registration_rule"><ref
-            name="text_with_references"/></element></optional>
-      <optional><element name="expert"><text/></element></optional>
-      <optional><element name="description"><ref name="text_with_references"/></element></optional>
-      <zeroOrMore><element name="note"><ref name="text_with_references"/></element></zeroOrMore>
-      <ref name="references"/>
-      <optional><element name="hide"><empty/></element></optional>
-      <zeroOrMore><element name="category"><text/></element></zeroOrMore>
-      <zeroOrMore><ref name="range"/></zeroOrMore>
-      <optional><ref name="file"/></optional>
-    </interleave>
-  </define>
-
-  <define name="range">
-    <element name="range">
-       <interleave>
-	  <element name="value"><text/></element>
-	  <optional><element name="hex"><text/></element></optional>
-	  <element name="registration_rule"><ref name="text_with_references"/></element>
-	  <optional><element name="note"><ref name="text_with_references"/></element></optional>
-	  <optional><ref name="xref"/></optional>
-       </interleave>
-    </element>
-  </define>
-
-  <define name="people">
-    <element name="people">
-      <zeroOrMore>
-        <element name="person">
-          <attribute name="id"><data type="ID"/></attribute>
-          <optional><element name="name"><text/></element></optional>
-          <optional><element name="org"><text/></element></optional>
-          <zeroOrMore><element name="uri"><data type="anyURI"/></element></zeroOrMore>
-          <optional><element name="updated"><ref name="genericDate"/></element></optional>
-        </element>
-      </zeroOrMore>
-    </element>
-  </define>
-
-  <define name="xref">
-    <element name="xref">
-      <optional>
-        <attribute name="lastupdated"><ref name="genericDate"/></attribute>
-      </optional>
-      <choice>
-        <group>
-          <attribute name="type"><value>uri</value></attribute>
-          <attribute name="data"><data type="anyURI"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>rfc</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">(rfc|bcp|std)\d+</param>
-            </data>
-          </attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>rfc-errata</value></attribute>
-          <attribute name="data"><data type="positiveInteger"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>draft</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">(draft|RFC)(-[a-zA-Z0-9]+)+</param>
-            </data>
-          </attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>registry</value></attribute>
-          <attribute name="data"><data type="NCName"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>person</value></attribute>
-          <attribute name="data"><data type="NCName"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>text</value></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>note</value></attribute>
-          <attribute name="data"><data type="positiveInteger"/></attribute>
-        </group>
-        <group>
-          <attribute name="type"><value>unicode</value></attribute>
-          <attribute name="data">
-            <data type="string">
-              <param name="pattern">ucd\d+\.\d+\.\d+</param>
-            </data>
-          </attribute>
-        </group>
-      </choice>
-      <text/>
-    </element>
-  </define>
-
-  <define name="references">
-    <zeroOrMore>
-      <ref name="xref"/>
-    </zeroOrMore>
-  </define>
-
-  <define name="text_with_references">
-    <interleave>
-      <zeroOrMore>
-        <text/>
-        <optional><ref name="xref"/></optional>
-      </zeroOrMore>
-    </interleave>
-  </define>
-
-  <define name="richText">
-    <zeroOrMore>
-      <choice>
-        <interleave>
-          <ref name="text_with_references"/>
-          <optional><element name="br"><empty/></element></optional>
-        </interleave>
-        <element name="paragraph">
-          <interleave>
-            <ref name="text_with_references"/>
-            <optional><element name="br"><empty/></element></optional>
-          </interleave>
-        </element>
-        <element name="artwork"><text/></element>
-      </choice>
-    </zeroOrMore>
-  </define>
-
-  <define name="genericRange">
-    <data type="string">
-      <param name="pattern">(\d+|0x[\da-fA-F]+)(\s*-\s*(\d+|0x[\da-fA-F]+))?</param>
-    </data>
-  </define>
-
-  <define name="genericDate">
-    <choice>
-      <data type="date"/>
-      <data type="gYearMonth"/>
-    </choice>
-  </define>
-
-  <define name="hex32">
-    <data type="string">
-      <param name="pattern">0x[0-9]{8}</param>
-    </data>
-  </define>
-
-  <define name="binary">
-    <data type="string">
-      <param name="pattern">[0-1]+</param>
-    </data>
-  </define>
-
-  <define name="footnotes">
-    <zeroOrMore>
-      <element name="footnote">
-        <attribute name="anchor"><data type="positiveInteger"/></attribute>
-        <interleave>
-          <zeroOrMore>
-            <text/>
-            <optional><ref name="xref"/></optional>
-          </zeroOrMore>
-        </interleave>
-      </element>
-    </zeroOrMore>
-  </define>
-
-  <define name="file">
-    <element name="file">
-      <attribute name="type">
-        <choice>
-          <value>legacy</value>
-          <value>mib</value>
-          <value>template</value>
-          <value>json</value>
-        </choice>
-      </attribute>
-      <optional>
-        <attribute name="name"/>
-      </optional>
-      <data type="anyURI"/>
-    </element>
-  </define>
-
-</grammar>
diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json
index f3097511..79f4b396 100644
--- a/vendor/symfony/http-foundation/composer.json
+++ b/vendor/symfony/http-foundation/composer.json
@@ -16,13 +16,13 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "symfony/mime": "^4.3",
+        "php": ">=7.1.3",
+        "symfony/mime": "^4.3|^5.0",
         "symfony/polyfill-mbstring": "~1.1"
     },
     "require-dev": {
         "predis/predis": "~1.0",
-        "symfony/expression-language": "~3.4|~4.0"
+        "symfony/expression-language": "^3.4|^4.0|^5.0"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" },
@@ -30,10 +30,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/http-foundation/phpunit.xml.dist b/vendor/symfony/http-foundation/phpunit.xml.dist
deleted file mode 100644
index f57bc9e6..00000000
--- a/vendor/symfony/http-foundation/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpFoundation Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/http-kernel/.gitignore b/vendor/symfony/http-kernel/.gitignore
deleted file mode 100644
index 94a6a252..00000000
--- a/vendor/symfony/http-kernel/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
-Tests/Fixtures/cache/
-Tests/Fixtures/logs/
diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php
index a769e960..e8057737 100644
--- a/vendor/symfony/http-kernel/Bundle/Bundle.php
+++ b/vendor/symfony/http-kernel/Bundle/Bundle.php
@@ -69,7 +69,7 @@ abstract class Bundle implements BundleInterface
 
             if (null !== $extension) {
                 if (!$extension instanceof ExtensionInterface) {
-                    throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension)));
+                    throw new \LogicException(sprintf('Extension "%s" must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', \get_class($extension)));
                 }
 
                 // check naming convention
@@ -116,10 +116,8 @@ abstract class Bundle implements BundleInterface
 
     /**
      * Returns the bundle name (the class short name).
-     *
-     * @return string The Bundle name
      */
-    final public function getName()
+    final public function getName(): string
     {
         if (null === $this->name) {
             $this->parseClassName();
diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md
index b1a5f510..08a8cfdd 100644
--- a/vendor/symfony/http-kernel/CHANGELOG.md
+++ b/vendor/symfony/http-kernel/CHANGELOG.md
@@ -1,6 +1,29 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * The `DebugHandlersListener` class has been marked as `final`
+ * Added new Bundle directory convention consistent with standard skeletons
+ * Deprecated the second and third argument of `KernelInterface::locateResource`
+ * Deprecated the second and third argument of `FileLocator::__construct`
+ * Deprecated loading resources from `%kernel.root_dir%/Resources` and `%kernel.root_dir%` as
+   fallback directories. Resources like service definitions are usually loaded relative to the
+   current directory or with a glob pattern. The fallback directories have never been advocated
+   so you likely do not use those in any app based on the SF Standard or Flex edition.
+ * Marked all dispatched event classes as `@final`
+ * Added `ErrorController` to enable the preview and error rendering mechanism
+ * Getting the container from a non-booted kernel is deprecated.
+ * Marked the `AjaxDataCollector`, `ConfigDataCollector`, `EventDataCollector`,
+   `ExceptionDataCollector`, `LoggerDataCollector`, `MemoryDataCollector`,
+   `RequestDataCollector` and `TimeDataCollector` classes as `@final`.
+ * Marked the `RouterDataCollector::collect()` method as `@final`.
+ * The `DataCollectorInterface::collect()` and `Profiler::collect()` methods third parameter signature
+   will be `\Throwable $exception = null` instead of `\Exception $exception = null` in Symfony 5.0.
+ * Deprecated methods `ExceptionEvent::get/setException()`, use `get/setThrowable()` instead
+ * Deprecated class `ExceptionListener`, use `ErrorListener` instead
+
 4.3.0
 -----
 
@@ -31,8 +54,8 @@ CHANGELOG
 
  * deprecated `KernelInterface::getRootDir()` and the `kernel.root_dir` parameter
  * deprecated `KernelInterface::getName()` and the `kernel.name` parameter
- * deprecated the first and second constructor argument of `ConfigDataCollector` 
- * deprecated `ConfigDataCollector::getApplicationName()` 
+ * deprecated the first and second constructor argument of `ConfigDataCollector`
+ * deprecated `ConfigDataCollector::getApplicationName()`
  * deprecated `ConfigDataCollector::getApplicationVersion()`
 
 4.1.0
diff --git a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
index 47a6ece5..f5670f1b 100644
--- a/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
+++ b/vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php
@@ -31,7 +31,7 @@ class Psr6CacheClearer implements CacheClearerInterface
     public function getPool($name)
     {
         if (!$this->hasPool($name)) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: %s.', $name));
+            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
         }
 
         return $this->pools[$name];
@@ -40,7 +40,7 @@ class Psr6CacheClearer implements CacheClearerInterface
     public function clearPool($name)
     {
         if (!isset($this->pools[$name])) {
-            throw new \InvalidArgumentException(sprintf('Cache pool not found: %s.', $name));
+            throw new \InvalidArgumentException(sprintf('Cache pool not found: "%s".', $name));
         }
 
         return $this->pools[$name]->clear();
diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
index 57292e07..baecfc5d 100644
--- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
+++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php
@@ -53,7 +53,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
         if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
             $collectedLogs = [];
             $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) {
+                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
                     return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
                 }
 
@@ -63,7 +63,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
                     return null;
                 }
 
-                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
+                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3);
                 // Clean the trace by removing first frames added by the error handler itself.
                 for ($i = 0; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
@@ -115,7 +115,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface
      *
      * @return bool always false
      */
-    public function isOptional()
+    public function isOptional(): bool
     {
         return false;
     }
diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php
index fba2562a..f0dd66ec 100644
--- a/vendor/symfony/http-kernel/Client.php
+++ b/vendor/symfony/http-kernel/Client.php
@@ -34,10 +34,7 @@ class Client extends AbstractBrowser
     private $catchExceptions = true;
 
     /**
-     * @param HttpKernelInterface $kernel    An HttpKernel instance
-     * @param array               $server    The server parameters (equivalent of $_SERVER)
-     * @param History             $history   A History instance to store the browser history
-     * @param CookieJar           $cookieJar A CookieJar instance to store the cookies
+     * @param array $server The server parameters (equivalent of $_SERVER)
      */
     public function __construct(HttpKernelInterface $kernel, array $server = [], History $history = null, CookieJar $cookieJar = null)
     {
@@ -169,7 +166,7 @@ EOF;
                         '',
                         $value->getClientOriginalName(),
                         $value->getClientMimeType(),
-                        UPLOAD_ERR_INI_SIZE,
+                        \UPLOAD_ERR_INI_SIZE,
                         true
                     );
                 } else {
diff --git a/vendor/symfony/http-kernel/Config/FileLocator.php b/vendor/symfony/http-kernel/Config/FileLocator.php
index f88d1684..5dc82b33 100644
--- a/vendor/symfony/http-kernel/Config/FileLocator.php
+++ b/vendor/symfony/http-kernel/Config/FileLocator.php
@@ -22,19 +22,28 @@ use Symfony\Component\HttpKernel\KernelInterface;
 class FileLocator extends BaseFileLocator
 {
     private $kernel;
-    private $path;
 
     /**
-     * @param KernelInterface $kernel A KernelInterface instance
-     * @param string|null     $path   The path the global resource directory
-     * @param array           $paths  An array of paths where to look for resources
+     * @deprecated since Symfony 4.4
      */
-    public function __construct(KernelInterface $kernel, string $path = null, array $paths = [])
+    private $path;
+
+    public function __construct(KernelInterface $kernel/*, string $path = null, array $paths = [], bool $triggerDeprecation = true*/)
     {
         $this->kernel = $kernel;
-        if (null !== $path) {
-            $this->path = $path;
-            $paths[] = $path;
+
+        if (2 <= \func_num_args()) {
+            $this->path = func_get_arg(1);
+            $paths = 3 <= \func_num_args() ? func_get_arg(2) : [];
+            if (null !== $this->path) {
+                $paths[] = $this->path;
+            }
+
+            if (4 !== \func_num_args() || func_get_arg(3)) {
+                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+            }
+        } else {
+            $paths = [];
         }
 
         parent::__construct($paths);
@@ -46,9 +55,36 @@ class FileLocator extends BaseFileLocator
     public function locate($file, $currentPath = null, $first = true)
     {
         if (isset($file[0]) && '@' === $file[0]) {
-            return $this->kernel->locateResource($file, $this->path, $first);
+            return $this->kernel->locateResource($file, $this->path, $first, false);
+        }
+
+        $locations = parent::locate($file, $currentPath, $first);
+
+        if (isset($file[0]) && !(
+            '/' === $file[0] || '\\' === $file[0]
+            || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && ('\\' === $file[2] || '/' === $file[2]))
+            || null !== parse_url($file, \PHP_URL_SCHEME)
+        )) {
+            $deprecation = false;
+
+            // no need to trigger deprecations when the loaded file is given as absolute path
+            foreach ($this->paths as $deprecatedPath) {
+                foreach ((array) $locations as $location) {
+                    if (null !== $currentPath && 0 === strpos($location, $currentPath)) {
+                        return $locations;
+                    }
+
+                    if (0 === strpos($location, $deprecatedPath) && (null === $currentPath || false === strpos($location, $currentPath))) {
+                        $deprecation = sprintf('Loading the file "%s" from the global resource directory "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $file, $deprecatedPath);
+                    }
+                }
+            }
+
+            if ($deprecation) {
+                @trigger_error($deprecation, \E_USER_DEPRECATED);
+            }
         }
 
-        return parent::locate($file, $currentPath, $first);
+        return $locations;
     }
 }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
index 86ceab2f..3504ae61 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver.php
@@ -43,7 +43,7 @@ final class ArgumentResolver implements ArgumentResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function getArguments(Request $request, $controller)
+    public function getArguments(Request $request, $controller): array
     {
         $arguments = [];
 
@@ -55,14 +55,16 @@ final class ArgumentResolver implements ArgumentResolverInterface
 
                 $resolved = $resolver->resolve($request, $metadata);
 
-                if (!$resolved instanceof \Generator) {
-                    throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', \get_class($resolver)));
-                }
-
+                $atLeastOne = false;
                 foreach ($resolved as $append) {
+                    $atLeastOne = true;
                     $arguments[] = $append;
                 }
 
+                if (!$atLeastOne) {
+                    throw new \InvalidArgumentException(sprintf('"%s::resolve()" must yield at least one value.', \get_class($resolver)));
+                }
+
                 // continue to the next controller argument
                 continue 2;
             }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
index e58fd3ab..32a0e071 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php
@@ -25,7 +25,7 @@ final class DefaultValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return $argument->hasDefaultValue() || (null !== $argument->getType() && $argument->isNullable() && !$argument->isVariadic());
     }
@@ -33,7 +33,7 @@ final class DefaultValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $argument->hasDefaultValue() ? $argument->getDefaultValue() : null;
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
index 19e324dc..d4971cc1 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php
@@ -34,7 +34,7 @@ final class NotTaggedControllerValueResolver implements ArgumentValueResolverInt
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         $controller = $request->attributes->get('_controller');
 
@@ -58,7 +58,7 @@ final class NotTaggedControllerValueResolver implements ArgumentValueResolverInt
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         if (\is_array($controller = $request->attributes->get('_controller'))) {
             $controller = $controller[0].'::'.$controller[1];
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
index 05be372d..c62d327b 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php
@@ -25,7 +25,7 @@ final class RequestAttributeValueResolver implements ArgumentValueResolverInterf
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return !$argument->isVariadic() && $request->attributes->has($argument->getName());
     }
@@ -33,7 +33,7 @@ final class RequestAttributeValueResolver implements ArgumentValueResolverInterf
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request->attributes->get($argument->getName());
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
index 2a5060a6..75cbd97e 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php
@@ -25,7 +25,7 @@ final class RequestValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return Request::class === $argument->getType() || is_subclass_of($argument->getType(), Request::class);
     }
@@ -33,7 +33,7 @@ final class RequestValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request;
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
index e7df546b..4ffb8c99 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php
@@ -34,7 +34,7 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         $controller = $request->attributes->get('_controller');
 
@@ -58,7 +58,7 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         if (\is_array($controller = $request->attributes->get('_controller'))) {
             $controller = $controller[0].'::'.$controller[1];
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
index 276d6546..a1e6b431 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php
@@ -26,7 +26,7 @@ final class SessionValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         if (!$request->hasSession()) {
             return false;
@@ -43,7 +43,7 @@ final class SessionValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         yield $request->getSession();
     }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
index 7ee2d7af..ed61420e 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php
@@ -25,7 +25,7 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function supports(Request $request, ArgumentMetadata $argument)
+    public function supports(Request $request, ArgumentMetadata $argument): bool
     {
         return $argument->isVariadic() && $request->attributes->has($argument->getName());
     }
@@ -33,7 +33,7 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
     /**
      * {@inheritdoc}
      */
-    public function resolve(Request $request, ArgumentMetadata $argument)
+    public function resolve(Request $request, ArgumentMetadata $argument): iterable
     {
         $values = $request->attributes->get($argument->getName());
 
@@ -41,8 +41,6 @@ final class VariadicValueResolver implements ArgumentValueResolverInterface
             throw new \InvalidArgumentException(sprintf('The action argument "...$%1$s" is required to be an array, the request attribute "%1$s" contains a type of "%2$s" instead.', $argument->getName(), \gettype($values)));
         }
 
-        foreach ($values as $value) {
-            yield $value;
-        }
+        yield from $values;
     }
 }
diff --git a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php b/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
index 6b14ed5b..1317707b 100644
--- a/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
+++ b/vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php
@@ -31,7 +31,7 @@ interface ArgumentValueResolverInterface
     /**
      * Returns the possible value(s).
      *
-     * @return \Generator
+     * @return iterable
      */
     public function resolve(Request $request, ArgumentMetadata $argument);
 }
diff --git a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
index e1da1738..7eb028de 100644
--- a/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php
@@ -61,10 +61,10 @@ class ContainerControllerResolver extends ControllerResolver
         $this->throwExceptionIfControllerWasRemoved($class, $e);
 
         if ($e instanceof \ArgumentCountError) {
-            throw new \InvalidArgumentException(sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define such a service?', $class), 0, $e);
+            throw new \InvalidArgumentException(sprintf('Controller "%s" has required constructor arguments and does not exist in the container. Did you forget to define the controller as a service?', $class), 0, $e);
         }
 
-        throw new \InvalidArgumentException(sprintf('Controller "%s" does neither exist as service nor as class', $class), 0, $e);
+        throw new \InvalidArgumentException(sprintf('Controller "%s" does neither exist as service nor as class.', $class), 0, $e);
     }
 
     private function throwExceptionIfControllerWasRemoved(string $controller, \Throwable $previous)
diff --git a/vendor/symfony/http-kernel/Controller/ControllerResolver.php b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
index 7291c25d..44f34d8e 100644
--- a/vendor/symfony/http-kernel/Controller/ControllerResolver.php
+++ b/vendor/symfony/http-kernel/Controller/ControllerResolver.php
@@ -64,7 +64,7 @@ class ControllerResolver implements ControllerResolverInterface
             }
 
             if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($controller)));
+                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$this->getControllerError($controller));
             }
 
             return $controller;
@@ -72,7 +72,7 @@ class ControllerResolver implements ControllerResolverInterface
 
         if (\is_object($controller)) {
             if (!\is_callable($controller)) {
-                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($controller)));
+                throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($controller), $request->getPathInfo()));
             }
 
             return $controller;
@@ -85,11 +85,11 @@ class ControllerResolver implements ControllerResolverInterface
         try {
             $callable = $this->createController($controller);
         } catch (\InvalidArgumentException $e) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $e->getMessage()));
+            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()).$e->getMessage(), 0, $e);
         }
 
         if (!\is_callable($callable)) {
-            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($callable)));
+            throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable: '.$this->getControllerError($callable), $request->getPathInfo()));
         }
 
         return $callable;
@@ -151,7 +151,7 @@ class ControllerResolver implements ControllerResolverInterface
         return new $class();
     }
 
-    private function getControllerError($callable)
+    private function getControllerError($callable): string
     {
         if (\is_string($callable)) {
             if (false !== strpos($callable, '::')) {
@@ -213,7 +213,7 @@ class ControllerResolver implements ControllerResolverInterface
         return $message;
     }
 
-    private function getClassMethodsWithoutMagicMethods($classOrObject)
+    private function getClassMethodsWithoutMagicMethods($classOrObject): array
     {
         $methods = get_class_methods($classOrObject);
 
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
index e73b848e..6fc7e703 100644
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
+++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php
@@ -99,7 +99,7 @@ class ArgumentMetadata
     public function getDefaultValue()
     {
         if (!$this->hasDefaultValue) {
-            throw new \LogicException(sprintf('Argument $%s does not have a default value. Use %s::hasDefaultValue() to avoid this exception.', $this->name, __CLASS__));
+            throw new \LogicException(sprintf('Argument $%s does not have a default value. Use "%s::hasDefaultValue()" to avoid this exception.', $this->name, __CLASS__));
         }
 
         return $this->defaultValue;
diff --git a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
index 44fe4779..05a68229 100644
--- a/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
+++ b/vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php
@@ -21,7 +21,7 @@ final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface
     /**
      * {@inheritdoc}
      */
-    public function createArgumentMetadata($controller)
+    public function createArgumentMetadata($controller): array
     {
         $arguments = [];
 
@@ -48,22 +48,18 @@ final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface
         if (!$type = $parameter->getType()) {
             return null;
         }
-        $name = $type->getName();
-        $lcName = strtolower($name);
+        $name = $type instanceof \ReflectionNamedType ? $type->getName() : (string) $type;
 
-        if ('self' !== $lcName && 'parent' !== $lcName) {
-            return $name;
-        }
-        if (!$function instanceof \ReflectionMethod) {
-            return null;
-        }
-        if ('self' === $lcName) {
-            return $function->getDeclaringClass()->name;
-        }
-        if ($parent = $function->getDeclaringClass()->getParentClass()) {
-            return $parent->name;
+        if ($function instanceof \ReflectionMethod) {
+            $lcName = strtolower($name);
+            switch ($lcName) {
+                case 'self':
+                    return $function->getDeclaringClass()->name;
+                case 'parent':
+                    return ($parent = $function->getDeclaringClass()->getParentClass()) ? $parent->name : null;
+            }
         }
 
-        return null;
+        return $name;
     }
 }
diff --git a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
index 370a874f..356ce227 100644
--- a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
@@ -18,10 +18,17 @@ use Symfony\Component\HttpFoundation\Response;
  * AjaxDataCollector.
  *
  * @author Bart van den Burg <bart@burgov.nl>
+ *
+ * @final since Symfony 4.4
  */
 class AjaxDataCollector extends DataCollector
 {
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     */
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         // all collecting is done client side
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
index 7000e70d..f005f1d9 100644
--- a/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php
@@ -15,10 +15,12 @@ use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Kernel;
 use Symfony\Component\HttpKernel\KernelInterface;
-use Symfony\Component\VarDumper\Caster\LinkStub;
+use Symfony\Component\VarDumper\Caster\ClassStub;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class ConfigDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -28,20 +30,18 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
     private $kernel;
     private $name;
     private $version;
-    private $hasVarDumper;
 
     public function __construct(string $name = null, string $version = null)
     {
         if (1 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "$name" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
         if (2 <= \func_num_args()) {
-            @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "$version" argument in method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         $this->name = $name;
         $this->version = $version;
-        $this->hasVarDumper = class_exists(LinkStub::class);
     }
 
     /**
@@ -54,8 +54,10 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->data = [
             'app_name' => $this->name,
@@ -65,26 +67,27 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
             'symfony_state' => 'unknown',
             'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
             'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
-            'php_version' => PHP_VERSION,
-            'php_architecture' => PHP_INT_SIZE * 8,
+            'php_version' => \PHP_VERSION,
+            'php_architecture' => \PHP_INT_SIZE * 8,
             'php_intl_locale' => class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a',
             'php_timezone' => date_default_timezone_get(),
             'xdebug_enabled' => \extension_loaded('xdebug'),
-            'apcu_enabled' => \extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN),
-            'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN),
+            'apcu_enabled' => \extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), \FILTER_VALIDATE_BOOLEAN),
+            'zend_opcache_enabled' => \extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN),
             'bundles' => [],
             'sapi_name' => \PHP_SAPI,
         ];
 
         if (isset($this->kernel)) {
             foreach ($this->kernel->getBundles() as $name => $bundle) {
-                $this->data['bundles'][$name] = $this->hasVarDumper ? new LinkStub($bundle->getPath()) : $bundle->getPath();
+                $this->data['bundles'][$name] = new ClassStub(\get_class($bundle));
             }
 
             $this->data['symfony_state'] = $this->determineSymfonyState();
             $this->data['symfony_minor_version'] = sprintf('%s.%s', Kernel::MAJOR_VERSION, Kernel::MINOR_VERSION);
-            $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE);
-            $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE);
+            $this->data['symfony_lts'] = 4 === Kernel::MINOR_VERSION;
+            $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE);
+            $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE);
             $this->data['symfony_eom'] = $eom->format('F Y');
             $this->data['symfony_eol'] = $eol->format('F Y');
         }
@@ -113,7 +116,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getApplicationName()
     {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->data['app_name'];
     }
@@ -123,7 +126,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getApplicationVersion()
     {
-        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The method "%s()" is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->data['app_version'];
     }
@@ -169,6 +172,14 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
         return $this->data['symfony_minor_version'];
     }
 
+    /**
+     * Returns if the current Symfony version is a Long-Term Support one.
+     */
+    public function isSymfonyLts(): bool
+    {
+        return $this->data['symfony_lts'];
+    }
+
     /**
      * Returns the human redable date when this Symfony version ends its
      * maintenance period.
@@ -244,7 +255,7 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      */
     public function getAppName()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
 
         return 'n/a';
     }
@@ -327,11 +338,11 @@ class ConfigDataCollector extends DataCollector implements LateDataCollectorInte
      *
      * @return string One of: dev, stable, eom, eol
      */
-    private function determineSymfonyState()
+    private function determineSymfonyState(): string
     {
         $now = new \DateTime();
-        $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
-        $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE)->modify('last day of this month');
+        $eom = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
+        $eol = \DateTime::createFromFormat('d/m/Y', '01/'.Kernel::END_OF_LIFE)->modify('last day of this month');
 
         if ($now > $eol) {
             $versionState = 'eol';
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollector.php b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
index 52ab90c6..832a5d9e 100644
--- a/vendor/symfony/http-kernel/DataCollector/DataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/DataCollector.php
@@ -43,9 +43,9 @@ abstract class DataCollector implements DataCollectorInterface
      */
     public function serialize()
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
 
-        $trace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
+        $trace = debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
         $isCalledFromOverridingMethod = isset($trace[1]['function'], $trace[1]['object']) && 'serialize' === $trace[1]['function'] && $this === $trace[1]['object'];
 
         return $isCalledFromOverridingMethod ? $this->data : serialize($this->data);
@@ -56,7 +56,7 @@ abstract class DataCollector implements DataCollectorInterface
      */
     public function unserialize($data)
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3, store all the serialized state in the data property instead.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->data = \is_array($data) ? $data : unserialize($data);
     }
@@ -77,9 +77,6 @@ abstract class DataCollector implements DataCollectorInterface
             return $var;
         }
         if (null === $this->cloner) {
-            if (!class_exists(CutStub::class)) {
-                throw new \LogicException(sprintf('The VarDumper component is needed for the %s() method. Install symfony/var-dumper version 3.4 or above.', __METHOD__));
-            }
             $this->cloner = new VarCloner();
             $this->cloner->setMaxItems(-1);
             $this->cloner->addCasters($this->getCasters());
@@ -105,19 +102,18 @@ abstract class DataCollector implements DataCollectorInterface
 
                 return $a;
             },
-        ];
-
-        if (method_exists(ReflectionCaster::class, 'unsetClosureFileInfo')) {
-            $casters += ReflectionCaster::UNSET_CLOSURE_FILE_INFO;
-        }
+        ] + ReflectionCaster::UNSET_CLOSURE_FILE_INFO;
 
         return $casters;
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
             $this->data = $this->serialize();
         }
 
@@ -127,7 +123,7 @@ abstract class DataCollector implements DataCollectorInterface
     public function __wakeup()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'unserialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::unserialize()" method is deprecated since Symfony 4.3, store all the serialized state in the "data" property instead.', $c), \E_USER_DEPRECATED);
             $this->unserialize($this->data);
         }
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
index b9584110..a302ad30 100644
--- a/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
+++ b/vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php
@@ -24,8 +24,10 @@ interface DataCollectorInterface extends ResetInterface
 {
     /**
      * Collects data for the given Request and Response.
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null);
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/);
 
     /**
      * Returns the name of the collector.
diff --git a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
index 577eb2ca..4e430f8f 100644
--- a/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php
@@ -98,7 +98,12 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
         }
     }
 
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     */
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if (!$this->dataCount) {
             $this->data = [];
@@ -148,7 +153,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
     /**
      * @internal
      */
-    public function __sleep()
+    public function __sleep(): array
     {
         if (!$this->dataCount) {
             $this->data = [];
@@ -193,7 +198,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
             $dumper = new HtmlDumper($data, $this->charset);
             $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
         } else {
-            throw new \InvalidArgumentException(sprintf('Invalid dump format: %s', $format));
+            throw new \InvalidArgumentException(sprintf('Invalid dump format: "%s".', $format));
         }
         $dumps = [];
 
@@ -230,13 +235,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
                 --$i;
             }
 
-            if (isset($_SERVER['VAR_DUMPER_FORMAT'])) {
-                $html = 'html' === $_SERVER['VAR_DUMPER_FORMAT'];
-            } else {
-                $html = !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && stripos($h[$i], 'html');
-            }
-
-            if ($html) {
+            if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && stripos($h[$i], 'html')) {
                 $dumper = new HtmlDumper('php://output', $this->charset);
                 $dumper->setDisplayOptions(['fileLinkFormat' => $this->fileLinkFormat]);
             } else {
@@ -256,7 +255,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
         }
     }
 
-    private function doDump(DataDumperInterface $dumper, $data, $name, $file, $line)
+    private function doDump(DataDumperInterface $dumper, $data, string $name, string $file, int $line)
     {
         if ($dumper instanceof CliDumper) {
             $contextDumper = function ($name, $file, $line, $fmt) {
diff --git a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
index 63975702..89fd1833 100644
--- a/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/EventDataCollector.php
@@ -23,6 +23,8 @@ use Symfony\Contracts\Service\ResetInterface;
  * EventDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class EventDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -38,8 +40,10 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
         $this->data = [
diff --git a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
index f9be5bdd..222cae5d 100644
--- a/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
-use Symfony\Component\Debug\Exception\FlattenException;
+use Symfony\Component\ErrorHandler\Exception\FlattenException;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -19,17 +19,23 @@ use Symfony\Component\HttpFoundation\Response;
  * ExceptionDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class ExceptionDataCollector extends DataCollector
 {
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
+        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
+
         if (null !== $exception) {
             $this->data = [
-                'exception' => FlattenException::create($exception),
+                'exception' => FlattenException::createFromThrowable($exception),
             ];
         }
     }
diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
index d6cca047..07dd254d 100644
--- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
+use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Response;
@@ -21,6 +21,8 @@ use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
  * LogDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class LoggerDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -41,8 +43,10 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
     }
@@ -118,7 +122,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return 'logger';
     }
 
-    private function getContainerDeprecationLogs()
+    private function getContainerDeprecationLogs(): array
     {
         if (null === $this->containerPathPrefix || !file_exists($file = $this->containerPathPrefix.'Deprecations.log')) {
             return [];
@@ -151,7 +155,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         }
 
         $logs = [];
-        foreach (file($compilerLogsFilepath, FILE_IGNORE_NEW_LINES) as $log) {
+        foreach (file($compilerLogsFilepath, \FILE_IGNORE_NEW_LINES) as $log) {
             $log = explode(': ', $log, 2);
             if (!isset($log[1]) || !preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)++$/', $log[0])) {
                 $log = ['Unknown Compiler Pass', implode(': ', $log)];
@@ -163,7 +167,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return $logs;
     }
 
-    private function sanitizeLogs($logs)
+    private function sanitizeLogs(array $logs)
     {
         $sanitizedLogs = [];
         $silencedLogs = [];
@@ -175,7 +179,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
                 continue;
             }
 
-            $message = $log['message'];
+            $message = '_'.$log['message'];
             $exception = $log['context']['exception'];
 
             if ($exception instanceof SilencedErrorContext) {
@@ -212,7 +216,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
         return array_values($sanitizedLogs);
     }
 
-    private function isSilencedOrDeprecationErrorLog(array $log)
+    private function isSilencedOrDeprecationErrorLog(array $log): bool
     {
         if (!isset($log['context']['exception'])) {
             return false;
@@ -224,14 +228,14 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
             return true;
         }
 
-        if ($exception instanceof \ErrorException && \in_array($exception->getSeverity(), [E_DEPRECATED, E_USER_DEPRECATED], true)) {
+        if ($exception instanceof \ErrorException && \in_array($exception->getSeverity(), [\E_DEPRECATED, \E_USER_DEPRECATED], true)) {
             return true;
         }
 
         return false;
     }
 
-    private function computeErrorsCount(array $containerDeprecationLogs)
+    private function computeErrorsCount(array $containerDeprecationLogs): array
     {
         $silencedLogs = [];
         $count = [
diff --git a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
index 7a6e1c06..7ffcdab4 100644
--- a/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php
@@ -18,6 +18,8 @@ use Symfony\Component\HttpFoundation\Response;
  * MemoryDataCollector.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -28,8 +30,10 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         $this->updateMemoryUsage();
     }
@@ -89,7 +93,10 @@ class MemoryDataCollector extends DataCollector implements LateDataCollectorInte
         return 'memory';
     }
 
-    private function convertToBytes($memoryLimit)
+    /**
+     * @return int|float
+     */
+    private function convertToBytes(string $memoryLimit)
     {
         if ('-1' === $memoryLimit) {
             return -1;
diff --git a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
index 32624c96..ba68c6b9 100644
--- a/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php
@@ -22,6 +22,8 @@ use Symfony\Component\HttpKernel\KernelEvents;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class RequestDataCollector extends DataCollector implements EventSubscriberInterface, LateDataCollectorInterface
 {
@@ -34,8 +36,10 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         // attributes are serialized and as they can be anything, they need to be converted to strings.
         $attributes = [];
@@ -49,7 +53,6 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
             }
         }
 
-        $content = null;
         try {
             $content = $request->getContent();
         } catch (\LogicException $e) {
@@ -59,13 +62,12 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
 
         $sessionMetadata = [];
         $sessionAttributes = [];
-        $session = null;
         $flashes = [];
         if ($request->hasSession()) {
             $session = $request->getSession();
             if ($session->isStarted()) {
-                $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated());
-                $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed());
+                $sessionMetadata['Created'] = date(\DATE_RFC822, $session->getMetadataBag()->getCreated());
+                $sessionMetadata['Last used'] = date(\DATE_RFC822, $session->getMetadataBag()->getLastUsed());
                 $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime();
                 $sessionAttributes = $session->all();
                 $flashes = $session->getFlashBag()->peekAll();
@@ -80,9 +82,9 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
         }
 
         $dotenvVars = [];
-        foreach (explode(',', getenv('SYMFONY_DOTENV_VARS')) as $name) {
-            if ('' !== $name && false !== $value = getenv($name)) {
-                $dotenvVars[$name] = $value;
+        foreach (explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? $_ENV['SYMFONY_DOTENV_VARS'] ?? '') as $name) {
+            if ('' !== $name && isset($_ENV[$name])) {
+                $dotenvVars[$name] = $_ENV[$name];
             }
         }
 
@@ -261,7 +263,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
     {
         $decoded = json_decode($this->getContent());
 
-        return JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, JSON_PRETTY_PRINT) : null;
+        return \JSON_ERROR_NONE === json_last_error() ? json_encode($decoded, \JSON_PRETTY_PRINT) : null;
     }
 
     public function getContentType()
diff --git a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
index 65fc90dc..5f123923 100644
--- a/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php
@@ -33,8 +33,12 @@ class RouterDataCollector extends DataCollector
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
+     *
+     * @final since Symfony 4.4
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if ($response instanceof RedirectResponse) {
             $this->data['redirect'] = true;
diff --git a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
index cb490c2b..7c0cdaa9 100644
--- a/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
+++ b/vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php
@@ -19,6 +19,8 @@ use Symfony\Component\Stopwatch\StopwatchEvent;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @final since Symfony 4.4
  */
 class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
 {
@@ -33,8 +35,10 @@ class TimeDataCollector extends DataCollector implements LateDataCollectorInterf
 
     /**
      * {@inheritdoc}
+     *
+     * @param \Throwable|null $exception
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
         if (null !== $this->kernel) {
             $startTime = $this->kernel->getStartTime();
diff --git a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
index 68782589..6d7c1e94 100644
--- a/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
+++ b/vendor/symfony/http-kernel/Debug/FileLinkFormatter.php
@@ -13,7 +13,6 @@ namespace Symfony\Component\HttpKernel\Debug;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\Routing\Exception\ExceptionInterface;
 use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
 
 /**
@@ -38,7 +37,7 @@ class FileLinkFormatter
         $fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format');
         if ($fileLinkFormat && !\is_array($fileLinkFormat)) {
             $i = strpos($f = $fileLinkFormat, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f);
-            $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, PREG_SPLIT_DELIM_CAPTURE);
+            $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE);
         }
 
         $this->fileLinkFormat = $fileLinkFormat;
@@ -80,7 +79,7 @@ class FileLinkFormatter
     {
         try {
             return $router->generate($routeName).$queryString;
-        } catch (ExceptionInterface $e) {
+        } catch (\Throwable $e) {
             return null;
         }
     }
diff --git a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
index 2659d34d..5eb833b5 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php
@@ -12,9 +12,10 @@
 namespace Symfony\Component\HttpKernel\DependencyInjection;
 
 use Composer\Autoload\ClassLoader;
-use Symfony\Component\Debug\DebugClassLoader;
+use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\ErrorHandler\DebugClassLoader;
 use Symfony\Component\HttpKernel\Kernel;
 
 /**
@@ -54,10 +55,8 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
      *
      * @param array $patterns The class patterns to expand
      * @param array $classes  The existing classes to match against the patterns
-     *
-     * @return array A list of classes derived from the patterns
      */
-    private function expandClasses(array $patterns, array $classes)
+    private function expandClasses(array $patterns, array $classes): array
     {
         $expanded = [];
 
@@ -83,7 +82,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return array_unique($expanded);
     }
 
-    private function getClassesInComposerClassMaps()
+    private function getClassesInComposerClassMaps(): array
     {
         $classes = [];
 
@@ -92,7 +91,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
                 continue;
             }
 
-            if ($function[0] instanceof DebugClassLoader) {
+            if ($function[0] instanceof DebugClassLoader || $function[0] instanceof LegacyDebugClassLoader) {
                 $function = $function[0]->getClassLoader();
             }
 
@@ -104,7 +103,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return array_keys($classes);
     }
 
-    private function patternsToRegexps($patterns)
+    private function patternsToRegexps(array $patterns): array
     {
         $regexps = [];
 
@@ -126,12 +125,12 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
         return $regexps;
     }
 
-    private function matchAnyRegexps($class, $regexps)
+    private function matchAnyRegexps(string $class, array $regexps): bool
     {
-        $blacklisted = false !== strpos($class, 'Test');
+        $isTest = false !== strpos($class, 'Test');
 
         foreach ($regexps as $regex) {
-            if ($blacklisted && false === strpos($regex, 'Test')) {
+            if ($isTest && false === strpos($regex, 'Test')) {
                 continue;
             }
 
diff --git a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
index a3f5012e..f214fd12 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
@@ -93,7 +93,7 @@ class RegisterControllerArgumentLocatorsPass implements CompilerPassInterface
                 }
                 foreach (['action', 'argument', 'id'] as $k) {
                     if (!isset($attributes[$k][0])) {
-                        throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "%s" %s for service "%s".', $k, $this->controllerTag, json_encode($attributes, JSON_UNESCAPED_UNICODE), $id));
+                        throw new InvalidArgumentException(sprintf('Missing "%s" attribute on tag "%s" %s for service "%s".', $k, $this->controllerTag, json_encode($attributes, \JSON_UNESCAPED_UNICODE), $id));
                     }
                 }
                 if (!isset($methods[$action = strtolower($attributes['action'])])) {
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
index c1199f63..b5e46106 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
@@ -43,16 +43,21 @@ class ResettableServicePass implements CompilerPassInterface
 
         foreach ($container->findTaggedServiceIds($this->tagName, true) as $id => $tags) {
             $services[$id] = new Reference($id, ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE);
-            $attributes = $tags[0];
 
-            if (!isset($attributes['method'])) {
-                throw new RuntimeException(sprintf('Tag %s requires the "method" attribute to be set.', $this->tagName));
-            }
+            foreach ($tags as $attributes) {
+                if (!isset($attributes['method'])) {
+                    throw new RuntimeException(sprintf('Tag "%s" requires the "method" attribute to be set.', $this->tagName));
+                }
+
+                if (!isset($methods[$id])) {
+                    $methods[$id] = [];
+                }
 
-            $methods[$id] = $attributes['method'];
+                $methods[$id][] = $attributes['method'];
+            }
         }
 
-        if (empty($services)) {
+        if (!$services) {
             $container->removeAlias('services_resetter');
             $container->removeDefinition('services_resetter');
 
diff --git a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
index 734fadbd..d9e0028c 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
@@ -35,7 +35,9 @@ class ServicesResetter implements ResetInterface
     public function reset()
     {
         foreach ($this->resettableServices as $id => $service) {
-            $service->{$this->resetMethods[$id]}();
+            foreach ((array) $this->resetMethods[$id] as $resetMethod) {
+                $service->$resetMethod();
+            }
         }
     }
 }
diff --git a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
index 3dc6ea50..5efb80cf 100644
--- a/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
+++ b/vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php
@@ -22,6 +22,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * controller.
  *
  * @author Christophe Coevoet <stof@notk.org>
+ *
+ * @final since Symfony 4.4
  */
 class ControllerArgumentsEvent extends FilterControllerArgumentsEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ControllerEvent.php b/vendor/symfony/http-kernel/Event/ControllerEvent.php
index 9afb818a..7b642eaa 100644
--- a/vendor/symfony/http-kernel/Event/ControllerEvent.php
+++ b/vendor/symfony/http-kernel/Event/ControllerEvent.php
@@ -21,6 +21,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * Controllers should be callables.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ControllerEvent extends FilterControllerEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ExceptionEvent.php b/vendor/symfony/http-kernel/Event/ExceptionEvent.php
index d3b2d8f6..3dae0d4c 100644
--- a/vendor/symfony/http-kernel/Event/ExceptionEvent.php
+++ b/vendor/symfony/http-kernel/Event/ExceptionEvent.php
@@ -23,6 +23,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * event.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ExceptionEvent extends GetResponseForExceptionEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
index ee724843..9374d2db 100644
--- a/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
+++ b/vendor/symfony/http-kernel/Event/FinishRequestEvent.php
@@ -15,6 +15,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * Triggered whenever a request is fully processed.
  *
  * @author Benjamin Eberlei <kontakt@beberlei.de>
+ *
+ * @final since Symfony 4.4
  */
 class FinishRequestEvent extends KernelEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
index 3476c7e6..bfec654e 100644
--- a/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
+++ b/vendor/symfony/http-kernel/Event/GetResponseForExceptionEvent.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\Event;
 
+use Symfony\Component\Debug\Exception\FatalThrowableError;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 
@@ -19,45 +20,55 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
  */
 class GetResponseForExceptionEvent extends RequestEvent
 {
-    /**
-     * The exception object.
-     *
-     * @var \Exception
-     */
+    private $throwable;
     private $exception;
-
-    /**
-     * @var bool
-     */
     private $allowCustomResponseCode = false;
 
-    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Exception $e)
+    public function __construct(HttpKernelInterface $kernel, Request $request, int $requestType, \Throwable $e)
     {
         parent::__construct($kernel, $request, $requestType);
 
-        $this->setException($e);
+        $this->setThrowable($e);
+    }
+
+    public function getThrowable(): \Throwable
+    {
+        return $this->throwable;
+    }
+
+    /**
+     * Replaces the thrown exception.
+     *
+     * This exception will be thrown if no response is set in the event.
+     */
+    public function setThrowable(\Throwable $exception): void
+    {
+        $this->exception = null;
+        $this->throwable = $exception;
     }
 
     /**
-     * Returns the thrown exception.
+     * @deprecated since Symfony 4.4, use getThrowable instead
      *
      * @return \Exception The thrown exception
      */
     public function getException()
     {
-        return $this->exception;
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "getThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
+
+        return $this->exception ?? $this->exception = $this->throwable instanceof \Exception ? $this->throwable : new FatalThrowableError($this->throwable);
     }
 
     /**
-     * Replaces the thrown exception.
-     *
-     * This exception will be thrown if no response is set in the event.
+     * @deprecated since Symfony 4.4, use setThrowable instead
      *
      * @param \Exception $exception The thrown exception
      */
     public function setException(\Exception $exception)
     {
-        $this->exception = $exception;
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.4, use "setThrowable()" instead.', __METHOD__), \E_USER_DEPRECATED);
+
+        $this->throwable = $this->exception = $exception;
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/Event/KernelEvent.php b/vendor/symfony/http-kernel/Event/KernelEvent.php
index f3db8a60..f6dff06a 100644
--- a/vendor/symfony/http-kernel/Event/KernelEvent.php
+++ b/vendor/symfony/http-kernel/Event/KernelEvent.php
@@ -27,10 +27,8 @@ class KernelEvent extends Event
     private $requestType;
 
     /**
-     * @param HttpKernelInterface $kernel      The kernel in which this event was thrown
-     * @param Request             $request     The request the kernel is currently processing
-     * @param int                 $requestType The request type the kernel is currently processing; one of
-     *                                         HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
+     * @param int $requestType The request type the kernel is currently processing; one of
+     *                         HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
      */
     public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType)
     {
diff --git a/vendor/symfony/http-kernel/Event/ResponseEvent.php b/vendor/symfony/http-kernel/Event/ResponseEvent.php
index 88c1996e..eae8c39c 100644
--- a/vendor/symfony/http-kernel/Event/ResponseEvent.php
+++ b/vendor/symfony/http-kernel/Event/ResponseEvent.php
@@ -19,6 +19,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * browser.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ResponseEvent extends FilterResponseEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/TerminateEvent.php b/vendor/symfony/http-kernel/Event/TerminateEvent.php
index 6ce23e43..6a74445d 100644
--- a/vendor/symfony/http-kernel/Event/TerminateEvent.php
+++ b/vendor/symfony/http-kernel/Event/TerminateEvent.php
@@ -18,6 +18,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * will always return the value of `HttpKernelInterface::MASTER_REQUEST`.
  *
  * @author Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * @final since Symfony 4.4
  */
 class TerminateEvent extends PostResponseEvent
 {
diff --git a/vendor/symfony/http-kernel/Event/ViewEvent.php b/vendor/symfony/http-kernel/Event/ViewEvent.php
index 1cb7e239..da50da82 100644
--- a/vendor/symfony/http-kernel/Event/ViewEvent.php
+++ b/vendor/symfony/http-kernel/Event/ViewEvent.php
@@ -19,6 +19,8 @@ namespace Symfony\Component\HttpKernel\Event;
  * response is set.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @final since Symfony 4.4
  */
 class ViewEvent extends GetResponseForControllerResultEvent
 {
diff --git a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
index 054695e6..86f179ad 100644
--- a/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/AbstractTestSessionListener.php
@@ -46,8 +46,7 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface
         }
 
         // bootstrap the session
-        $session = $this->getSession();
-        if (!$session) {
+        if (!$session = $this->getSession()) {
             return;
         }
 
diff --git a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
index b28ad7b8..f4781ccd 100644
--- a/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
+++ b/vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php
@@ -15,14 +15,12 @@ use Psr\Log\LoggerInterface;
 use Symfony\Component\Console\ConsoleEvents;
 use Symfony\Component\Console\Event\ConsoleEvent;
 use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
+use Symfony\Component\Debug\ErrorHandler as LegacyErrorHandler;
+use Symfony\Component\Debug\Exception\FatalThrowableError;
+use Symfony\Component\ErrorHandler\ErrorHandler;
 use Symfony\Component\EventDispatcher\Event;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\Event\KernelEvent;
 use Symfony\Component\HttpKernel\KernelEvents;
 
@@ -30,6 +28,8 @@ use Symfony\Component\HttpKernel\KernelEvents;
  * Configures errors and exceptions handlers.
  *
  * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @final since Symfony 4.4
  */
 class DebugHandlersListener implements EventSubscriberInterface
 {
@@ -40,29 +40,26 @@ class DebugHandlersListener implements EventSubscriberInterface
     private $scream;
     private $fileLinkFormat;
     private $scope;
-    private $charset;
     private $firstCall = true;
     private $hasTerminatedWithException;
 
     /**
-     * @param callable|null                 $exceptionHandler A handler that will be called on Exception
-     * @param LoggerInterface|null          $logger           A PSR-3 logger
+     * @param callable|null                 $exceptionHandler A handler that must support \Throwable instances that will be called on Exception
      * @param array|int                     $levels           An array map of E_* to LogLevel::* or an integer bit field of E_* constants
      * @param int|null                      $throwAt          Thrown errors in a bit field of E_* constants, or null to keep the current value
      * @param bool                          $scream           Enables/disables screaming mode, where even silenced errors are logged
      * @param string|FileLinkFormatter|null $fileLinkFormat   The format for links to source files
      * @param bool                          $scope            Enables/disables scoping mode
      */
-    public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = E_ALL, ?int $throwAt = E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true, string $charset = null)
+    public function __construct(callable $exceptionHandler = null, LoggerInterface $logger = null, $levels = \E_ALL, ?int $throwAt = \E_ALL, bool $scream = true, $fileLinkFormat = null, bool $scope = true)
     {
         $this->exceptionHandler = $exceptionHandler;
         $this->logger = $logger;
-        $this->levels = null === $levels ? E_ALL : $levels;
-        $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? E_ALL : null));
+        $this->levels = null === $levels ? \E_ALL : $levels;
+        $this->throwAt = \is_int($throwAt) ? $throwAt : (null === $throwAt ? null : ($throwAt ? \E_ALL : null));
         $this->scream = $scream;
         $this->fileLinkFormat = $fileLinkFormat;
         $this->scope = $scope;
-        $this->charset = $charset;
     }
 
     /**
@@ -70,6 +67,9 @@ class DebugHandlersListener implements EventSubscriberInterface
      */
     public function configure(Event $event = null)
     {
+        if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
+            return;
+        }
         if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMasterRequest()) {
             return;
         }
@@ -80,7 +80,7 @@ class DebugHandlersListener implements EventSubscriberInterface
         restore_exception_handler();
 
         if ($this->logger || null !== $this->throwAt) {
-            if ($handler instanceof ErrorHandler) {
+            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
                 if ($this->logger) {
                     $handler->setDefaultLogger($this->logger, $this->levels);
                     if (\is_array($this->levels)) {
@@ -95,7 +95,7 @@ class DebugHandlersListener implements EventSubscriberInterface
                         $handler->screamAt($levels);
                     }
                     if ($this->scope) {
-                        $handler->scopeAt($levels & ~E_USER_DEPRECATED & ~E_DEPRECATED);
+                        $handler->scopeAt($levels & ~\E_USER_DEPRECATED & ~\E_DEPRECATED);
                     } else {
                         $handler->scopeAt(0, true);
                     }
@@ -111,10 +111,11 @@ class DebugHandlersListener implements EventSubscriberInterface
                 if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) {
                     $request = $event->getRequest();
                     $hasRun = &$this->hasTerminatedWithException;
-                    $this->exceptionHandler = static function (\Exception $e) use ($kernel, $request, &$hasRun) {
+                    $this->exceptionHandler = static function (\Throwable $e) use ($kernel, $request, &$hasRun) {
                         if ($hasRun) {
                             throw $e;
                         }
+
                         $hasRun = true;
                         $kernel->terminateWithException($e, $request);
                     };
@@ -124,61 +125,35 @@ class DebugHandlersListener implements EventSubscriberInterface
                 if ($output instanceof ConsoleOutputInterface) {
                     $output = $output->getErrorOutput();
                 }
-                $this->exceptionHandler = function ($e) use ($app, $output) {
-                    $app->renderException($e, $output);
+                $this->exceptionHandler = static function (\Throwable $e) use ($app, $output) {
+                    if (method_exists($app, 'renderThrowable')) {
+                        $app->renderThrowable($e, $output);
+                    } else {
+                        if (!$e instanceof \Exception) {
+                            $e = new FatalThrowableError($e);
+                        }
+
+                        $app->renderException($e, $output);
+                    }
                 };
             }
         }
         if ($this->exceptionHandler) {
-            if ($handler instanceof ErrorHandler) {
-                $h = $handler->setExceptionHandler('var_dump');
-                if (\is_array($h) && $h[0] instanceof ExceptionHandler) {
-                    $handler->setExceptionHandler($h);
-                    $handler = $h[0];
-                } else {
-                    $handler->setExceptionHandler($this->exceptionHandler);
-                }
-            }
-            if ($handler instanceof ExceptionHandler) {
-                $handler->setHandler($this->exceptionHandler);
-                if (null !== $this->fileLinkFormat) {
-                    $handler->setFileLinkFormat($this->fileLinkFormat);
-                }
+            if ($handler instanceof ErrorHandler || $handler instanceof LegacyErrorHandler) {
+                $handler->setExceptionHandler($this->exceptionHandler);
             }
             $this->exceptionHandler = null;
         }
     }
 
-    /**
-     * @internal
-     */
-    public function onKernelException(GetResponseForExceptionEvent $event)
-    {
-        if (!$this->hasTerminatedWithException || !$event->isMasterRequest()) {
-            return;
-        }
-
-        $debug = $this->scream && $this->scope;
-        $controller = function (Request $request) use ($debug) {
-            $e = $request->attributes->get('exception');
-            $handler = new ExceptionHandler($debug, $this->charset, $this->fileLinkFormat);
-
-            return new Response($handler->getHtml($e), $e->getStatusCode(), $e->getHeaders());
-        };
-
-        (new ExceptionListener($controller, $this->logger, $debug))->onKernelException($event);
-    }
-
     public static function getSubscribedEvents()
     {
         $events = [KernelEvents::REQUEST => ['configure', 2048]];
 
-        if ('cli' === \PHP_SAPI && \defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
+        if (\defined('Symfony\Component\Console\ConsoleEvents::COMMAND')) {
             $events[ConsoleEvents::COMMAND] = ['configure', 2048];
         }
 
-        $events[KernelEvents::EXCEPTION] = ['onKernelException', -2048];
-
         return $events;
     }
 }
diff --git a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
index ab5f65cb..ef5a71a3 100644
--- a/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/ExceptionListener.php
@@ -12,21 +12,20 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Log\LoggerInterface;
-use Symfony\Component\Debug\Exception\FlattenException;
+use Symfony\Component\ErrorHandler\Exception\FlattenException;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\KernelEvents;
 use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "ErrorListener" instead.', ExceptionListener::class), \E_USER_DEPRECATED);
+
 /**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @final since Symfony 4.3
+ * @deprecated since Symfony 4.4, use ErrorListener instead
  */
 class ExceptionListener implements EventSubscriberInterface
 {
@@ -43,7 +42,7 @@ class ExceptionListener implements EventSubscriberInterface
 
     public function logKernelException(GetResponseForExceptionEvent $event)
     {
-        $e = FlattenException::create($event->getException());
+        $e = FlattenException::createFromThrowable($event->getException());
 
         $this->logException($event->getException(), sprintf('Uncaught PHP Exception %s: "%s" at %s line %s', $e->getClass(), $e->getMessage(), $e->getFile(), $e->getLine()));
     }
@@ -61,7 +60,7 @@ class ExceptionListener implements EventSubscriberInterface
         try {
             $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false);
         } catch (\Exception $e) {
-            $f = FlattenException::create($e);
+            $f = FlattenException::createFromThrowable($e);
 
             $this->logException($e, sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), $e->getFile(), $e->getLine()));
 
@@ -120,16 +119,13 @@ class ExceptionListener implements EventSubscriberInterface
     /**
      * Clones the request for the exception.
      *
-     * @param \Exception $exception The thrown exception
-     * @param Request    $request   The original request
-     *
      * @return Request The cloned request
      */
     protected function duplicateRequest(\Exception $exception, Request $request)
     {
         $attributes = [
             '_controller' => $this->controller,
-            'exception' => FlattenException::create($exception),
+            'exception' => FlattenException::createFromThrowable($exception),
             'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null,
         ];
         $request = $request->duplicate(null, null, $attributes);
diff --git a/vendor/symfony/http-kernel/EventListener/FragmentListener.php b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
index fc4ba56d..5ae61daa 100644
--- a/vendor/symfony/http-kernel/EventListener/FragmentListener.php
+++ b/vendor/symfony/http-kernel/EventListener/FragmentListener.php
@@ -37,8 +37,7 @@ class FragmentListener implements EventSubscriberInterface
     private $fragmentPath;
 
     /**
-     * @param UriSigner $signer       A UriSigner instance
-     * @param string    $fragmentPath The path that triggers this listener
+     * @param string $fragmentPath The path that triggers this listener
      */
     public function __construct(UriSigner $signer, string $fragmentPath = '/_fragment')
     {
@@ -79,7 +78,7 @@ class FragmentListener implements EventSubscriberInterface
     protected function validateRequest(Request $request)
     {
         // is the Request safe?
-        if (!$request->isMethodSafe(false)) {
+        if (!$request->isMethodSafe()) {
             throw new AccessDeniedHttpException();
         }
 
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
index fb8e67e7..62d03026 100644
--- a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
+++ b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php
@@ -12,7 +12,6 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
 use Symfony\Component\HttpKernel\Event\RequestEvent;
@@ -46,7 +45,9 @@ class LocaleAwareListener implements EventSubscriberInterface
     public function onKernelFinishRequest(FinishRequestEvent $event): void
     {
         if (null === $parentRequest = $this->requestStack->getParentRequest()) {
-            $this->setLocale($event->getRequest()->getDefaultLocale());
+            foreach ($this->localeAwareServices as $service) {
+                $service->setLocale($event->getRequest()->getDefaultLocale());
+            }
 
             return;
         }
@@ -63,7 +64,7 @@ class LocaleAwareListener implements EventSubscriberInterface
         ];
     }
 
-    private function setLocale(string $locale, string $defaultLocale = null): void
+    private function setLocale(string $locale, string $defaultLocale): void
     {
         foreach ($this->localeAwareServices as $service) {
             try {
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
index cb8a194d..b09a6c76 100644
--- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php
+++ b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
@@ -33,11 +33,6 @@ class LocaleListener implements EventSubscriberInterface
     private $defaultLocale;
     private $requestStack;
 
-    /**
-     * @param RequestStack                      $requestStack  A RequestStack instance
-     * @param string                            $defaultLocale The default locale
-     * @param RequestContextAwareInterface|null $router        The router
-     */
     public function __construct(RequestStack $requestStack, string $defaultLocale = 'en', RequestContextAwareInterface $router = null)
     {
         $this->defaultLocale = $defaultLocale;
diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
index 85a0aacb..b8464f16 100644
--- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
+++ b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
@@ -39,11 +39,8 @@ class ProfilerListener implements EventSubscriberInterface
     protected $parents;
 
     /**
-     * @param Profiler                     $profiler           A Profiler instance
-     * @param RequestStack                 $requestStack       A RequestStack instance
-     * @param RequestMatcherInterface|null $matcher            A RequestMatcher instance
-     * @param bool                         $onlyException      True if the profiler only collects data when an exception occurs, false otherwise
-     * @param bool                         $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
+     * @param bool $onlyException      True if the profiler only collects data when an exception occurs, false otherwise
+     * @param bool $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
      */
     public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMasterRequests = false)
     {
@@ -65,7 +62,7 @@ class ProfilerListener implements EventSubscriberInterface
             return;
         }
 
-        $this->exception = $event->getException();
+        $this->exception = $event->getThrowable();
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php
index 2f1735d2..ee88deba 100644
--- a/vendor/symfony/http-kernel/EventListener/RouterListener.php
+++ b/vendor/symfony/http-kernel/EventListener/RouterListener.php
@@ -50,10 +50,8 @@ class RouterListener implements EventSubscriberInterface
     private $debug;
 
     /**
-     * @param UrlMatcherInterface|RequestMatcherInterface $matcher      The Url or Request matcher
-     * @param RequestStack                                $requestStack A RequestStack instance
-     * @param RequestContext|null                         $context      The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
-     * @param LoggerInterface|null                        $logger       The logger
+     * @param UrlMatcherInterface|RequestMatcherInterface $matcher    The Url or Request matcher
+     * @param RequestContext|null                         $context    The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
      * @param string                                      $projectDir
      *
      * @throws \InvalidArgumentException
@@ -145,7 +143,7 @@ class RouterListener implements EventSubscriberInterface
 
     public function onKernelException(GetResponseForExceptionEvent $event)
     {
-        if (!$this->debug || !($e = $event->getException()) instanceof NotFoundHttpException) {
+        if (!$this->debug || !($e = $event->getThrowable()) instanceof NotFoundHttpException) {
             return;
         }
 
@@ -163,14 +161,14 @@ class RouterListener implements EventSubscriberInterface
         ];
     }
 
-    private function createWelcomeResponse()
+    private function createWelcomeResponse(): Response
     {
         $version = Kernel::VERSION;
-        $baseDir = realpath($this->projectDir).\DIRECTORY_SEPARATOR;
+        $projectDir = realpath($this->projectDir).\DIRECTORY_SEPARATOR;
         $docVersion = substr(Kernel::VERSION, 0, 3);
 
         ob_start();
-        include __DIR__.'/../Resources/welcome.html.php';
+        include \dirname(__DIR__).'/Resources/welcome.html.php';
 
         return new Response(ob_get_clean(), Response::HTTP_NOT_FOUND);
     }
diff --git a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
index b14153ad..c3adaf84 100644
--- a/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/SaveSessionListener.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\EventListener;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1, use AbstractSessionListener instead.', SaveSessionListener::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
@@ -30,8 +30,8 @@ class SaveSessionListener implements EventSubscriberInterface
             return;
         }
 
-        $session = $event->getRequest()->getSession();
-        if ($session && $session->isStarted()) {
+        $request = $event->getRequest();
+        if ($request->hasSession() && ($session = $request->getSession())->isStarted()) {
             $session->save();
         }
     }
diff --git a/vendor/symfony/http-kernel/EventListener/SessionListener.php b/vendor/symfony/http-kernel/EventListener/SessionListener.php
index 019ccee4..a53ade79 100644
--- a/vendor/symfony/http-kernel/EventListener/SessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/SessionListener.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
 
 /**
@@ -32,7 +33,7 @@ class SessionListener extends AbstractSessionListener
         $this->container = $container;
     }
 
-    protected function getSession()
+    protected function getSession(): ?SessionInterface
     {
         if (!$this->container->has('session')) {
             return null;
diff --git a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
index a0a52c2a..ff8b4aaa 100644
--- a/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
+++ b/vendor/symfony/http-kernel/EventListener/TestSessionListener.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
 
 /**
  * Sets the session in the request.
@@ -30,7 +31,7 @@ class TestSessionListener extends AbstractTestSessionListener
         parent::__construct($sessionOptions);
     }
 
-    protected function getSession()
+    protected function getSession(): ?SessionInterface
     {
         if (!$this->container->has('session')) {
             return null;
diff --git a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
index d28eee2b..6851c3b9 100644
--- a/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
+++ b/vendor/symfony/http-kernel/EventListener/TranslatorListener.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\EventListener;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3 and will be removed in 5.0, use LocaleAwareListener instead.', TranslatorListener::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\Request;
@@ -40,7 +40,7 @@ class TranslatorListener implements EventSubscriberInterface
     public function __construct($translator, RequestStack $requestStack)
     {
         if (!$translator instanceof TranslatorInterface && !$translator instanceof LocaleAwareInterface) {
-            throw new \TypeError(sprintf('Argument 1 passed to %s() must be an instance of %s, %s given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
+            throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be an instance of "%s", "%s" given.', __METHOD__, LocaleAwareInterface::class, \is_object($translator) ? \get_class($translator) : \gettype($translator)));
         }
         $this->translator = $translator;
         $this->requestStack = $requestStack;
diff --git a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
index 8aa50a9f..735e9c80 100644
--- a/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
+++ b/vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php
@@ -16,7 +16,7 @@ namespace Symfony\Component\HttpKernel\Exception;
  *
  * @author Kris Wallsmith <kris@symfony.com>
  */
-interface HttpExceptionInterface
+interface HttpExceptionInterface extends \Throwable
 {
     /**
      * Returns the status code.
diff --git a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
index 5b76f7a8..f81199d8 100644
--- a/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
@@ -32,9 +32,7 @@ abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRendere
      * The "fallback" strategy when surrogate is not available should always be an
      * instance of InlineFragmentRenderer.
      *
-     * @param SurrogateInterface        $surrogate      An Surrogate instance
      * @param FragmentRendererInterface $inlineStrategy The inline strategy to use when the surrogate is not supported
-     * @param UriSigner                 $signer
      */
     public function __construct(SurrogateInterface $surrogate = null, FragmentRendererInterface $inlineStrategy, UriSigner $signer = null)
     {
@@ -83,7 +81,7 @@ abstract class AbstractSurrogateFragmentRenderer extends RoutableFragmentRendere
         return new Response($tag);
     }
 
-    private function generateSignedFragmentUri($uri, Request $request): string
+    private function generateSignedFragmentUri(ControllerReference $uri, Request $request): string
     {
         if (null === $this->signer) {
             throw new \LogicException('You must use a URI when using the ESI rendering strategy or set a URL signer.');
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
index 1ae550fe..e981291b 100644
--- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
+++ b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
@@ -33,9 +33,8 @@ class FragmentHandler
     private $requestStack;
 
     /**
-     * @param RequestStack                $requestStack The Request stack that controls the lifecycle of requests
-     * @param FragmentRendererInterface[] $renderers    An array of FragmentRendererInterface instances
-     * @param bool                        $debug        Whether the debug mode is enabled or not
+     * @param FragmentRendererInterface[] $renderers An array of FragmentRendererInterface instances
+     * @param bool                        $debug     Whether the debug mode is enabled or not
      */
     public function __construct(RequestStack $requestStack, array $renderers = [], bool $debug = false)
     {
@@ -63,7 +62,6 @@ class FragmentHandler
      *
      * @param string|ControllerReference $uri      A URI as a string or a ControllerReference instance
      * @param string                     $renderer The renderer name
-     * @param array                      $options  An array of options
      *
      * @return string|null The Response content or null when the Response is streamed
      *
@@ -100,7 +98,7 @@ class FragmentHandler
     protected function deliver(Response $response)
     {
         if (!$response->isSuccessful()) {
-            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode()));
+            throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $this->requestStack->getCurrentRequest()->getUri(), $response->getStatusCode()));
         }
 
         if (!$response instanceof StreamedResponse) {
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
index 8e454a01..4f8ac50b 100644
--- a/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
+++ b/vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php
@@ -25,9 +25,7 @@ interface FragmentRendererInterface
     /**
      * Renders a URI and returns the Response content.
      *
-     * @param string|ControllerReference $uri     A URI as a string or a ControllerReference instance
-     * @param Request                    $request A Request instance
-     * @param array                      $options An array of options
+     * @param string|ControllerReference $uri A URI as a string or a ControllerReference instance
      *
      * @return Response A Response instance
      */
diff --git a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
index 5d70c190..cca65334 100644
--- a/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
@@ -35,7 +35,6 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
 
     /**
      * @param EngineInterface|Environment $templating            An EngineInterface or a Twig instance
-     * @param UriSigner                   $signer                A UriSigner instance
      * @param string                      $globalDefaultTemplate The global default content (it can be a template name or the content)
      */
     public function __construct($templating = null, UriSigner $signer = null, string $globalDefaultTemplate = null, string $charset = 'utf-8')
@@ -52,15 +51,17 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
      * @param EngineInterface|Environment|null $templating An EngineInterface or an Environment instance
      *
      * @throws \InvalidArgumentException
+     *
+     * @internal
      */
     public function setTemplating($templating)
     {
         if (null !== $templating && !$templating instanceof EngineInterface && !$templating instanceof Environment) {
-            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface');
+            throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface.');
         }
 
         if ($templating instanceof EngineInterface) {
-            @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), \E_USER_DEPRECATED);
         }
 
         $this->templating = $templating;
@@ -112,7 +113,7 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer
         }
         $renderedAttributes = '';
         if (\count($attributes) > 0) {
-            $flags = ENT_QUOTES | ENT_SUBSTITUTE;
+            $flags = \ENT_QUOTES | \ENT_SUBSTITUTE;
             foreach ($attributes as $attribute => $value) {
                 $renderedAttributes .= sprintf(
                     ' %s="%s"',
diff --git a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
index 0c1b95d4..bd8f85b1 100644
--- a/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
+++ b/vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php
@@ -39,10 +39,8 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
     /**
      * Generates a fragment URI for a given controller.
      *
-     * @param ControllerReference $reference A ControllerReference instance
-     * @param Request             $request   A Request instance
-     * @param bool                $absolute  Whether to generate an absolute URL or not
-     * @param bool                $strict    Whether to allow non-scalar attributes or not
+     * @param bool $absolute Whether to generate an absolute URL or not
+     * @param bool $strict   Whether to allow non-scalar attributes or not
      *
      * @return string A fragment URI
      */
@@ -77,7 +75,7 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
         return $request->getBaseUrl().$path;
     }
 
-    private function checkNonScalar($values)
+    private function checkNonScalar(array $values)
     {
         foreach ($values as $key => $value) {
             if (\is_array($value)) {
diff --git a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
index 9b454179..472d87e4 100644
--- a/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
+++ b/vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php
@@ -96,7 +96,7 @@ abstract class AbstractSurrogate implements SurrogateInterface
             $response = $cache->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
 
             if (!$response->isSuccessful()) {
-                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $subRequest->getUri(), $response->getStatusCode()));
+                throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %d).', $subRequest->getUri(), $response->getStatusCode()));
             }
 
             return $response->getContent();
diff --git a/vendor/symfony/http-kernel/HttpCache/Esi.php b/vendor/symfony/http-kernel/HttpCache/Esi.php
index 96e6ca4b..3d461a7f 100644
--- a/vendor/symfony/http-kernel/HttpCache/Esi.php
+++ b/vendor/symfony/http-kernel/HttpCache/Esi.php
@@ -80,13 +80,13 @@ class Esi extends AbstractSurrogate
         $content = preg_replace('#<esi\:remove>.*?</esi\:remove>#s', '', $content);
         $content = preg_replace('#<esi\:comment[^>]+>#s', '', $content);
 
-        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
+        $chunks = preg_split('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
         $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
 
         $i = 1;
         while (isset($chunks[$i])) {
             $options = [];
-            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
+            preg_match_all('/(src|onerror|alt)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
             foreach ($matches as $set) {
                 $options[$set[1]] = $set[2];
             }
diff --git a/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
index ab178ed4..6c471580 100644
--- a/vendor/symfony/http-kernel/HttpCache/HttpCache.php
+++ b/vendor/symfony/http-kernel/HttpCache/HttpCache.php
@@ -207,7 +207,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
 
         $this->traces[$this->getTraceKey($request)] = [];
 
-        if (!$request->isMethodSafe(false)) {
+        if (!$request->isMethodSafe()) {
             $response = $this->invalidate($request, $catch);
         } elseif ($request->headers->has('expect') || !$request->isMethodCacheable()) {
             $response = $this->pass($request, $catch);
@@ -256,8 +256,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Forwards the Request to the backend without storing the Response in the cache.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -271,8 +270,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Invalidates non-safe methods (like POST, PUT, and DELETE).
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      *
@@ -320,8 +318,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * the backend using conditional GET. When no matching cache entry is found,
      * it triggers "miss" processing.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      *
@@ -353,6 +350,10 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
             return $this->validate($request, $entry, $catch);
         }
 
+        if ($entry->headers->hasCacheControlDirective('no-cache')) {
+            return $this->validate($request, $entry, $catch);
+        }
+
         $this->record($request, 'fresh');
 
         $entry->headers->set('Age', $entry->getAge());
@@ -366,9 +367,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * The original request is used as a template for a conditional
      * GET request with the backend.
      *
-     * @param Request  $request A Request instance
-     * @param Response $entry   A Response instance to validate
-     * @param bool     $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -382,7 +381,9 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
         }
 
         // add our cached last-modified validator
-        $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
+        if ($entry->headers->has('Last-Modified')) {
+            $subRequest->headers->set('if_modified_since', $entry->headers->get('Last-Modified'));
+        }
 
         // Add our cached etag validator to the environment.
         // We keep the etags from the client to handle the case when the client
@@ -429,8 +430,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
      * Unconditionally fetches a fresh response from the backend and
      * stores it in the cache if is cacheable.
      *
-     * @param Request $request A Request instance
-     * @param bool    $catch   Whether to process exceptions
+     * @param bool $catch Whether to process exceptions
      *
      * @return Response A Response instance
      */
@@ -476,13 +476,37 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
         // always a "master" request (as the real master request can be in cache)
         $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch);
 
-        // we don't implement the stale-if-error on Requests, which is nonetheless part of the RFC
-        if (null !== $entry && \in_array($response->getStatusCode(), [500, 502, 503, 504])) {
+        /*
+         * Support stale-if-error given on Responses or as a config option.
+         * RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual
+         * Cache-Control directives) that
+         *
+         *      A cache MUST NOT generate a stale response if it is prohibited by an
+         *      explicit in-protocol directive (e.g., by a "no-store" or "no-cache"
+         *      cache directive, a "must-revalidate" cache-response-directive, or an
+         *      applicable "s-maxage" or "proxy-revalidate" cache-response-directive;
+         *      see Section 5.2.2).
+         *
+         * https://tools.ietf.org/html/rfc7234#section-4.2.4
+         *
+         * We deviate from this in one detail, namely that we *do* serve entries in the
+         * stale-if-error case even if they have a `s-maxage` Cache-Control directive.
+         */
+        if (null !== $entry
+            && \in_array($response->getStatusCode(), [500, 502, 503, 504])
+            && !$entry->headers->hasCacheControlDirective('no-cache')
+            && !$entry->mustRevalidate()
+        ) {
             if (null === $age = $entry->headers->getCacheControlDirective('stale-if-error')) {
                 $age = $this->options['stale_if_error'];
             }
 
-            if (abs($entry->getTtl()) < $age) {
+            /*
+             * stale-if-error gives the (extra) time that the Response may be used *after* it has become stale.
+             * So we compare the time the $entry has been sitting in the cache already with the
+             * time it was fresh plus the allowed grace period.
+             */
+            if ($entry->getAge() <= $entry->getMaxAge() + $age) {
                 $this->record($request, 'stale-if-error');
 
                 return $entry;
@@ -641,10 +665,8 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
     /**
      * Checks if the Request includes authorization or other sensitive information
      * that should cause the Response to be considered private by default.
-     *
-     * @return bool true if the Request is private, false otherwise
      */
-    private function isPrivateRequest(Request $request)
+    private function isPrivateRequest(Request $request): bool
     {
         foreach ($this->options['private_headers'] as $key) {
             $key = strtolower(str_replace('HTTP_', '', $key));
diff --git a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
index 25c071c3..c30fface 100644
--- a/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
+++ b/vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php
@@ -110,8 +110,6 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
         $response->headers->set('Age', $this->age);
 
         if ($this->isNotCacheableResponseEmbedded) {
-            $response->setExpires($response->getDate());
-
             if ($this->flagDirectives['no-store']) {
                 $response->headers->set('Cache-Control', 'no-cache, no-store, must-revalidate');
             } else {
@@ -130,7 +128,6 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
         $response->headers->set('Cache-Control', implode(', ', array_keys($flags)));
 
         $maxAge = null;
-        $sMaxage = null;
 
         if (is_numeric($this->ageDirectives['max-age'])) {
             $maxAge = $this->ageDirectives['max-age'] + $this->age;
@@ -156,10 +153,8 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
      * RFC2616, Section 13.4.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4
-     *
-     * @return bool
      */
-    private function willMakeFinalResponseUncacheable(Response $response)
+    private function willMakeFinalResponseUncacheable(Response $response): bool
     {
         // RFC2616: A response received with a status code of 200, 203, 300, 301 or 410
         // MAY be stored by a cache […] unless a cache-control directive prohibits caching.
@@ -203,12 +198,8 @@ class ResponseCacheStrategy implements ResponseCacheStrategyInterface
      *
      * If the value is lower than the currently stored value, we update the value, to keep a rolling
      * minimal value of each instruction. If the value is NULL, the directive will not be set on the final response.
-     *
-     * @param string   $directive
-     * @param int|null $value
-     * @param int      $age
      */
-    private function storeRelativeAgeDirective($directive, $value, $age)
+    private function storeRelativeAgeDirective(string $directive, ?int $value, int $age)
     {
         if (null === $value) {
             $this->ageDirectives[$directive] = false;
diff --git a/vendor/symfony/http-kernel/HttpCache/Ssi.php b/vendor/symfony/http-kernel/HttpCache/Ssi.php
index 40aac64f..6dba4e11 100644
--- a/vendor/symfony/http-kernel/HttpCache/Ssi.php
+++ b/vendor/symfony/http-kernel/HttpCache/Ssi.php
@@ -65,13 +65,13 @@ class Ssi extends AbstractSurrogate
         // we don't use a proper XML parser here as we can have SSI tags in a plain text response
         $content = $response->getContent();
 
-        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
+        $chunks = preg_split('#<!--\#include\s+(.*?)\s*-->#', $content, -1, \PREG_SPLIT_DELIM_CAPTURE);
         $chunks[0] = str_replace($this->phpEscapeMap[0], $this->phpEscapeMap[1], $chunks[0]);
 
         $i = 1;
         while (isset($chunks[$i])) {
             $options = [];
-            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, PREG_SET_ORDER);
+            preg_match_all('/(virtual)="([^"]*?)"/', $chunks[$i], $matches, \PREG_SET_ORDER);
             foreach ($matches as $set) {
                 $options[$set[1]] = $set[2];
             }
diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php
index 7026ac3c..9536d788 100644
--- a/vendor/symfony/http-kernel/HttpCache/Store.php
+++ b/vendor/symfony/http-kernel/HttpCache/Store.php
@@ -48,7 +48,7 @@ class Store implements StoreInterface
     {
         // unlock everything
         foreach ($this->locks as $lock) {
-            flock($lock, LOCK_UN);
+            flock($lock, \LOCK_UN);
             fclose($lock);
         }
 
@@ -70,7 +70,7 @@ class Store implements StoreInterface
                 return $path;
             }
             $h = fopen($path, 'cb');
-            if (!flock($h, LOCK_EX | LOCK_NB)) {
+            if (!flock($h, \LOCK_EX | \LOCK_NB)) {
                 fclose($h);
 
                 return $path;
@@ -92,7 +92,7 @@ class Store implements StoreInterface
         $key = $this->getCacheKey($request);
 
         if (isset($this->locks[$key])) {
-            flock($this->locks[$key], LOCK_UN);
+            flock($this->locks[$key], \LOCK_UN);
             fclose($this->locks[$key]);
             unset($this->locks[$key]);
 
@@ -115,8 +115,8 @@ class Store implements StoreInterface
         }
 
         $h = fopen($path, 'rb');
-        flock($h, LOCK_EX | LOCK_NB, $wouldBlock);
-        flock($h, LOCK_UN); // release the lock we just acquired
+        flock($h, \LOCK_EX | \LOCK_NB, $wouldBlock);
+        flock($h, \LOCK_UN); // release the lock we just acquired
         fclose($h);
 
         return (bool) $wouldBlock;
@@ -150,8 +150,8 @@ class Store implements StoreInterface
         }
 
         $headers = $match[1];
-        if (file_exists($body = $this->getPath($headers['x-content-digest'][0]))) {
-            return $this->restoreResponse($headers, $body);
+        if (file_exists($path = $this->getPath($headers['x-content-digest'][0]))) {
+            return $this->restoreResponse($headers, $path);
         }
 
         // TODO the metaStore referenced an entity that doesn't exist in
@@ -175,16 +175,25 @@ class Store implements StoreInterface
         $key = $this->getCacheKey($request);
         $storedEnv = $this->persistRequest($request);
 
-        // write the response body to the entity store if this is the original response
-        if (!$response->headers->has('X-Content-Digest')) {
+        if ($response->headers->has('X-Body-File')) {
+            // Assume the response came from disk, but at least perform some safeguard checks
+            if (!$response->headers->has('X-Content-Digest')) {
+                throw new \RuntimeException('A restored response must have the X-Content-Digest header.');
+            }
+
+            $digest = $response->headers->get('X-Content-Digest');
+            if ($this->getPath($digest) !== $response->headers->get('X-Body-File')) {
+                throw new \RuntimeException('X-Body-File and X-Content-Digest do not match.');
+            }
+            // Everything seems ok, omit writing content to disk
+        } else {
             $digest = $this->generateContentDigest($response);
+            $response->headers->set('X-Content-Digest', $digest);
 
-            if (!$this->save($digest, $response->getContent())) {
+            if (!$this->save($digest, $response->getContent(), false)) {
                 throw new \RuntimeException('Unable to store the entity.');
             }
 
-            $response->headers->set('X-Content-Digest', $digest);
-
             if (!$response->headers->has('Transfer-Encoding')) {
                 $response->headers->set('Content-Length', \strlen($response->getContent()));
             }
@@ -259,10 +268,8 @@ class Store implements StoreInterface
      * @param string $vary A Response vary header
      * @param array  $env1 A Request HTTP header array
      * @param array  $env2 A Request HTTP header array
-     *
-     * @return bool true if the two environments match, false otherwise
      */
-    private function requestsMatch($vary, $env1, $env2)
+    private function requestsMatch(?string $vary, array $env1, array $env2): bool
     {
         if (empty($vary)) {
             return true;
@@ -284,12 +291,8 @@ class Store implements StoreInterface
      * Gets all data associated with the given key.
      *
      * Use this method only if you know what you are doing.
-     *
-     * @param string $key The store key
-     *
-     * @return array An array of data associated with the key
      */
-    private function getMetadata($key)
+    private function getMetadata(string $key): array
     {
         if (!$entries = $this->load($key)) {
             return [];
@@ -320,16 +323,12 @@ class Store implements StoreInterface
 
     /**
      * Purges data for the given URL.
-     *
-     * @param string $url A URL
-     *
-     * @return bool true if the URL exists and has been purged, false otherwise
      */
-    private function doPurge($url)
+    private function doPurge(string $url): bool
     {
         $key = $this->getCacheKey(Request::create($url));
         if (isset($this->locks[$key])) {
-            flock($this->locks[$key], LOCK_UN);
+            flock($this->locks[$key], \LOCK_UN);
             fclose($this->locks[$key]);
             unset($this->locks[$key]);
         }
@@ -345,12 +344,8 @@ class Store implements StoreInterface
 
     /**
      * Loads data for the given key.
-     *
-     * @param string $key The store key
-     *
-     * @return string|null The data associated with the key
      */
-    private function load($key)
+    private function load(string $key): ?string
     {
         $path = $this->getPath($key);
 
@@ -359,16 +354,15 @@ class Store implements StoreInterface
 
     /**
      * Save data for the given key.
-     *
-     * @param string $key  The store key
-     * @param string $data The data to store
-     *
-     * @return bool
      */
-    private function save($key, $data)
+    private function save(string $key, string $data, bool $overwrite = true): bool
     {
         $path = $this->getPath($key);
 
+        if (!$overwrite && file_exists($path)) {
+            return true;
+        }
+
         if (isset($this->locks[$key])) {
             $fp = $this->locks[$key];
             @ftruncate($fp, 0);
@@ -435,10 +429,8 @@ class Store implements StoreInterface
 
     /**
      * Returns a cache key for the given Request.
-     *
-     * @return string A key for the given Request
      */
-    private function getCacheKey(Request $request)
+    private function getCacheKey(Request $request): string
     {
         if (isset($this->keyCache[$request])) {
             return $this->keyCache[$request];
@@ -449,20 +441,16 @@ class Store implements StoreInterface
 
     /**
      * Persists the Request HTTP headers.
-     *
-     * @return array An array of HTTP headers
      */
-    private function persistRequest(Request $request)
+    private function persistRequest(Request $request): array
     {
         return $request->headers->all();
     }
 
     /**
      * Persists the Response HTTP headers.
-     *
-     * @return array An array of HTTP headers
      */
-    private function persistResponse(Response $response)
+    private function persistResponse(Response $response): array
     {
         $headers = $response->headers->all();
         $headers['X-Status'] = [$response->getStatusCode()];
@@ -472,21 +460,16 @@ class Store implements StoreInterface
 
     /**
      * Restores a Response from the HTTP headers and body.
-     *
-     * @param array  $headers An array of HTTP headers for the Response
-     * @param string $body    The Response body
-     *
-     * @return Response
      */
-    private function restoreResponse($headers, $body = null)
+    private function restoreResponse(array $headers, string $path = null): Response
     {
         $status = $headers['X-Status'][0];
         unset($headers['X-Status']);
 
-        if (null !== $body) {
-            $headers['X-Body-File'] = [$body];
+        if (null !== $path) {
+            $headers['X-Body-File'] = [$path];
         }
 
-        return new Response($body, $status, $headers);
+        return new Response($path, $status, $headers);
     }
 }
diff --git a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
index 85391f8f..a26698c9 100644
--- a/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
+++ b/vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php
@@ -78,10 +78,9 @@ interface SurrogateInterface
     /**
      * Handles a Surrogate from the cache.
      *
-     * @param HttpCache $cache        An HttpCache instance
-     * @param string    $uri          The main URI
-     * @param string    $alt          An alternative URI
-     * @param bool      $ignoreErrors Whether to ignore errors or not
+     * @param string $uri          The main URI
+     * @param string $alt          An alternative URI
+     * @param bool   $ignoreErrors Whether to ignore errors or not
      *
      * @return string
      *
diff --git a/vendor/symfony/http-kernel/HttpClientKernel.php b/vendor/symfony/http-kernel/HttpClientKernel.php
index f60a84ea..7acb04c8 100644
--- a/vendor/symfony/http-kernel/HttpClientKernel.php
+++ b/vendor/symfony/http-kernel/HttpClientKernel.php
@@ -21,6 +21,9 @@ use Symfony\Component\Mime\Part\Multipart\FormDataPart;
 use Symfony\Component\Mime\Part\TextPart;
 use Symfony\Contracts\HttpClient\HttpClientInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(ResponseHeaderBag::class);
+
 /**
  * An implementation of a Symfony HTTP kernel using a "real" HTTP client.
  *
@@ -32,14 +35,14 @@ final class HttpClientKernel implements HttpKernelInterface
 
     public function __construct(HttpClientInterface $client = null)
     {
-        if (!class_exists(HttpClient::class)) {
+        if (null === $client && !class_exists(HttpClient::class)) {
             throw new \LogicException(sprintf('You cannot use "%s" as the HttpClient component is not installed. Try running "composer require symfony/http-client".', __CLASS__));
         }
 
         $this->client = $client ?? HttpClient::create();
     }
 
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): Response
     {
         $headers = $this->getHeaders($request);
         $body = '';
@@ -50,13 +53,16 @@ final class HttpClientKernel implements HttpKernelInterface
         $response = $this->client->request($request->getMethod(), $request->getUri(), [
             'headers' => $headers,
             'body' => $body,
-            'max_redirects' => 0,
         ] + $request->attributes->get('http_client_options', []));
 
         $response = new Response($response->getContent(!$catch), $response->getStatusCode(), $response->getHeaders(!$catch));
 
+        $response->headers->remove('X-Body-File');
+        $response->headers->remove('X-Body-Eval');
+        $response->headers->remove('X-Content-Digest');
+
         $response->headers = new class($response->headers->all()) extends ResponseHeaderBag {
-            protected function computeCacheControlValue()
+            protected function computeCacheControlValue(): string
             {
                 return $this->getCacheControlHeader(); // preserve the original value
             }
diff --git a/vendor/symfony/http-kernel/HttpKernel.php b/vendor/symfony/http-kernel/HttpKernel.php
index 64e931f2..681e9632 100644
--- a/vendor/symfony/http-kernel/HttpKernel.php
+++ b/vendor/symfony/http-kernel/HttpKernel.php
@@ -33,6 +33,18 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
 
+// Help opcache.preload discover always-needed symbols
+class_exists(LegacyEventDispatcherProxy::class);
+class_exists(ControllerArgumentsEvent::class);
+class_exists(ControllerEvent::class);
+class_exists(ExceptionEvent::class);
+class_exists(FinishRequestEvent::class);
+class_exists(RequestEvent::class);
+class_exists(ResponseEvent::class);
+class_exists(TerminateEvent::class);
+class_exists(ViewEvent::class);
+class_exists(KernelEvents::class);
+
 /**
  * HttpKernel notifies events to convert a Request object to a Response one.
  *
@@ -62,7 +74,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
      */
     public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
     {
-        $request->headers->set('X-Php-Ob-Level', ob_get_level());
+        $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
 
         try {
             return $this->handleRaw($request, $type);
@@ -76,7 +88,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
                 throw $e;
             }
 
-            return $this->handleException($e, $request, $type);
+            return $this->handleThrowable($e, $request, $type);
         }
     }
 
@@ -91,13 +103,13 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     /**
      * @internal
      */
-    public function terminateWithException(\Exception $exception, Request $request = null)
+    public function terminateWithException(\Throwable $exception, Request $request = null)
     {
         if (!$request = $request ?: $this->requestStack->getMasterRequest()) {
             throw $exception;
         }
 
-        $response = $this->handleException($exception, $request, self::MASTER_REQUEST);
+        $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST);
 
         $response->sendHeaders();
         $response->sendContent();
@@ -110,15 +122,10 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
      *
      * Exceptions are not caught.
      *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response A Response instance
-     *
      * @throws \LogicException       If one of the listener does not behave as expected
      * @throws NotFoundHttpException When controller cannot be found
      */
-    private function handleRaw(Request $request, int $type = self::MASTER_REQUEST)
+    private function handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response
     {
         $this->requestStack->push($request);
 
@@ -175,15 +182,9 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     /**
      * Filters a response object.
      *
-     * @param Response $response A Response instance
-     * @param Request  $request  An error message in case the response is not a Response object
-     * @param int      $type     The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     *
-     * @return Response The filtered Response instance
-     *
      * @throws \RuntimeException if the passed object is not a Response instance
      */
-    private function filterResponse(Response $response, Request $request, int $type)
+    private function filterResponse(Response $response, Request $request, int $type): Response
     {
         $event = new ResponseEvent($this, $request, $type, $response);
 
@@ -208,21 +209,17 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     }
 
     /**
-     * Handles an exception by trying to convert it to a Response.
-     *
-     * @param \Exception $e       An \Exception instance
-     * @param Request    $request A Request instance
-     * @param int        $type    The type of the request (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
+     * Handles a throwable by trying to convert it to a Response.
      *
      * @throws \Exception
      */
-    private function handleException(\Exception $e, Request $request, int $type): Response
+    private function handleThrowable(\Throwable $e, Request $request, int $type): Response
     {
         $event = new ExceptionEvent($this, $request, $type, $e);
         $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION);
 
         // a listener might have replaced the exception
-        $e = $event->getException();
+        $e = $event->getThrowable();
 
         if (!$event->hasResponse()) {
             $this->finishRequest($request, $type);
diff --git a/vendor/symfony/http-kernel/HttpKernelInterface.php b/vendor/symfony/http-kernel/HttpKernelInterface.php
index 5050bfcf..7595d29d 100644
--- a/vendor/symfony/http-kernel/HttpKernelInterface.php
+++ b/vendor/symfony/http-kernel/HttpKernelInterface.php
@@ -30,10 +30,9 @@ interface HttpKernelInterface
      * When $catch is true, the implementation must catch all exceptions
      * and do its best to convert them to a Response instance.
      *
-     * @param Request $request A Request instance
-     * @param int     $type    The type of the request
-     *                         (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
-     * @param bool    $catch   Whether to catch exceptions or not
+     * @param int  $type  The type of the request
+     *                    (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
+     * @param bool $catch Whether to catch exceptions or not
      *
      * @return Response A Response instance
      *
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
index 7d18d221..c21108b0 100644
--- a/vendor/symfony/http-kernel/Kernel.php
+++ b/vendor/symfony/http-kernel/Kernel.php
@@ -16,7 +16,7 @@ use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
 use Symfony\Component\Config\ConfigCache;
 use Symfony\Component\Config\Loader\DelegatingLoader;
 use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Debug\DebugClassLoader;
+use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader;
 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
 use Symfony\Component\DependencyInjection\Compiler\PassConfig;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -29,6 +29,7 @@ use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
 use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
 use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\ErrorHandler\DebugClassLoader;
 use Symfony\Component\Filesystem\Filesystem;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -73,15 +74,17 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     private $requestStackSize = 0;
     private $resetServices = false;
 
-    const VERSION = '4.3.5';
-    const VERSION_ID = 40305;
+    private static $freshCache = [];
+
+    const VERSION = '4.4.16';
+    const VERSION_ID = 40416;
     const MAJOR_VERSION = 4;
-    const MINOR_VERSION = 3;
-    const RELEASE_VERSION = 5;
+    const MINOR_VERSION = 4;
+    const RELEASE_VERSION = 16;
     const EXTRA_VERSION = '';
 
-    const END_OF_MAINTENANCE = '01/2020';
-    const END_OF_LIFE = '07/2020';
+    const END_OF_MAINTENANCE = '11/2022';
+    const END_OF_LIFE = '11/2023';
 
     public function __construct(string $environment, bool $debug)
     {
@@ -225,10 +228,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getBundle($name)
     {
         if (!isset($this->bundles[$name])) {
-            $class = \get_class($this);
-            $class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
-
-            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your %s.php file?', $name, $class));
+            throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this)));
         }
 
         return $this->bundles[$name];
@@ -236,11 +236,21 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
     /**
      * {@inheritdoc}
-     *
-     * @throws \RuntimeException if a custom resource is hidden by a resource in a derived bundle
      */
-    public function locateResource($name, $dir = null, $first = true)
+    public function locateResource($name/*, $dir = null, $first = true, $triggerDeprecation = true*/)
     {
+        if (2 <= \func_num_args()) {
+            $dir = func_get_arg(1);
+            $first = 3 <= \func_num_args() ? func_get_arg(2) : true;
+
+            if (4 !== \func_num_args() || func_get_arg(3)) {
+                @trigger_error(sprintf('Passing more than one argument to %s is deprecated since Symfony 4.4 and will be removed in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+            }
+        } else {
+            $dir = null;
+            $first = true;
+        }
+
         if ('@' !== $name[0]) {
             throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
         }
@@ -262,6 +272,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
         if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
             $files[] = $file;
+
+            // see https://symfony.com/doc/current/bundles/override.html on how to overwrite parts of a bundle
+            @trigger_error(sprintf('Overwriting the resource "%s" with "%s" is deprecated since Symfony 4.4 and will be removed in 5.0.', $name, $file), \E_USER_DEPRECATED);
         }
 
         if (file_exists($file = $bundle->getPath().'/'.$path)) {
@@ -286,7 +299,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getName(/* $triggerDeprecation = true */)
     {
         if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         if (null === $this->name) {
@@ -323,7 +336,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function getRootDir(/* $triggerDeprecation = true */)
     {
         if (0 === \func_num_args() || func_get_arg(0)) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2, use getProjectDir() instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         if (null === $this->rootDir) {
@@ -366,6 +379,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function getContainer()
     {
+        if (!$this->container) {
+            @trigger_error('Getting the container from a non-booted kernel is deprecated since Symfony 4.4.', \E_USER_DEPRECATED);
+        }
+
         return $this->container;
     }
 
@@ -382,7 +399,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function getStartTime()
     {
-        return $this->debug && null !== $this->startTime ? $this->startTime : -INF;
+        return $this->debug && null !== $this->startTime ? $this->startTime : -\INF;
     }
 
     /**
@@ -429,7 +446,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         foreach ($this->registerBundles() as $bundle) {
             $name = $bundle->getName();
             if (isset($this->bundles[$name])) {
-                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
+                throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s".', $name));
             }
             $this->bundles[$name] = $bundle;
         }
@@ -453,8 +470,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     protected function getContainerClass()
     {
-        $class = \get_class($this);
-        $class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
+        $class = static::class;
+        $class = false !== strpos($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
         $class = $this->name.str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container';
 
         if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) {
@@ -487,31 +504,54 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         $class = $this->getContainerClass();
         $cacheDir = $this->warmupDir ?: $this->getCacheDir();
         $cache = new ConfigCache($cacheDir.'/'.$class.'.php', $this->debug);
-        $oldContainer = null;
-        if ($fresh = $cache->isFresh()) {
-            // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
-            $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
-            $fresh = $oldContainer = false;
-            try {
-                if (file_exists($cache->getPath()) && \is_object($this->container = include $cache->getPath())) {
-                    $this->container->set('kernel', $this);
-                    $oldContainer = $this->container;
-                    $fresh = true;
-                }
-            } catch (\Throwable $e) {
-            } finally {
+        $cachePath = $cache->getPath();
+
+        // Silence E_WARNING to ignore "include" failures - don't use "@" to prevent silencing fatal errors
+        $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
+
+        try {
+            if (file_exists($cachePath) && \is_object($this->container = include $cachePath)
+                && (!$this->debug || (self::$freshCache[$cachePath] ?? $cache->isFresh()))
+            ) {
+                self::$freshCache[$cachePath] = true;
+                $this->container->set('kernel', $this);
                 error_reporting($errorLevel);
+
+                return;
             }
+        } catch (\Throwable $e) {
         }
 
-        if ($fresh) {
-            return;
+        $oldContainer = \is_object($this->container) ? new \ReflectionClass($this->container) : $this->container = null;
+
+        try {
+            is_dir($cacheDir) ?: mkdir($cacheDir, 0777, true);
+
+            if ($lock = fopen($cachePath.'.lock', 'w')) {
+                flock($lock, \LOCK_EX | \LOCK_NB, $wouldBlock);
+
+                if (!flock($lock, $wouldBlock ? \LOCK_SH : \LOCK_EX)) {
+                    fclose($lock);
+                    $lock = null;
+                } elseif (!\is_object($this->container = include $cachePath)) {
+                    $this->container = null;
+                } elseif (!$oldContainer || \get_class($this->container) !== $oldContainer->name) {
+                    flock($lock, \LOCK_UN);
+                    fclose($lock);
+                    $this->container->set('kernel', $this);
+
+                    return;
+                }
+            }
+        } catch (\Throwable $e) {
+        } finally {
+            error_reporting($errorLevel);
         }
 
         if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
             $collectedLogs = [];
             $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
-                if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) {
+                if (\E_USER_DEPRECATED !== $type && \E_DEPRECATED !== $type) {
                     return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
                 }
 
@@ -521,7 +561,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
                     return null;
                 }
 
-                $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
+                $backtrace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5);
                 // Clean the trace by removing first frames added by the error handler itself.
                 for ($i = 0; isset($backtrace[$i]); ++$i) {
                     if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) {
@@ -531,7 +571,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
                 }
                 // Remove frames added by DebugClassLoader.
                 for ($i = \count($backtrace) - 2; 0 < $i; --$i) {
-                    if (DebugClassLoader::class === ($backtrace[$i]['class'] ?? null)) {
+                    if (\in_array($backtrace[$i]['class'] ?? null, [DebugClassLoader::class, LegacyDebugClassLoader::class], true)) {
                         $backtrace = [$backtrace[$i + 1]];
                         break;
                     }
@@ -563,19 +603,14 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             }
         }
 
-        if (null === $oldContainer && file_exists($cache->getPath())) {
-            $errorLevel = error_reporting(\E_ALL ^ \E_WARNING);
-            try {
-                $oldContainer = include $cache->getPath();
-            } catch (\Throwable $e) {
-            } finally {
-                error_reporting($errorLevel);
-            }
+        $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
+
+        if ($lock) {
+            flock($lock, \LOCK_UN);
+            fclose($lock);
         }
-        $oldContainer = \is_object($oldContainer) ? new \ReflectionClass($oldContainer) : false;
 
-        $this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
-        $this->container = require $cache->getPath();
+        $this->container = require $cachePath;
         $this->container->set('kernel', $this);
 
         if ($oldContainer && \get_class($this->container) !== $oldContainer->name) {
@@ -585,7 +620,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             static $legacyContainers = [];
             $oldContainerDir = \dirname($oldContainer->getFileName());
             $legacyContainers[$oldContainerDir.'.legacy'] = true;
-            foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', GLOB_NOSORT) as $legacyContainer) {
+            foreach (glob(\dirname($oldContainerDir).\DIRECTORY_SEPARATOR.'*.legacy', \GLOB_NOSORT) as $legacyContainer) {
                 if (!isset($legacyContainers[$legacyContainer]) && @unlink($legacyContainer)) {
                     (new Filesystem())->remove(substr($legacyContainer, 0, -7));
                 }
@@ -650,10 +685,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
         foreach (['cache' => $this->warmupDir ?: $this->getCacheDir(), 'logs' => $this->getLogDir()] as $name => $dir) {
             if (!is_dir($dir)) {
                 if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
-                    throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir));
+                    throw new \RuntimeException(sprintf('Unable to create the "%s" directory (%s).', $name, $dir));
                 }
             } elseif (!is_writable($dir)) {
-                throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir));
+                throw new \RuntimeException(sprintf('Unable to write in the "%s" directory (%s).', $name, $dir));
             }
         }
 
@@ -723,10 +758,8 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     /**
      * Dumps the service container to PHP code in the cache.
      *
-     * @param ConfigCache      $cache     The config cache
-     * @param ContainerBuilder $container The service container
-     * @param string           $class     The name of the class to generate
-     * @param string           $baseClass The name of the container's base class
+     * @param string $class     The name of the class to generate
+     * @param string $baseClass The name of the container's base class
      */
     protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
     {
@@ -744,6 +777,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             'as_files' => true,
             'debug' => $this->debug,
             'build_time' => $container->hasParameter('kernel.container_build_time') ? $container->getParameter('kernel.container_build_time') : time(),
+            'preload_classes' => array_map('get_class', $this->bundles),
         ]);
 
         $rootCode = array_pop($content);
@@ -754,7 +788,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             $fs->dumpFile($dir.$file, $code);
             @chmod($dir.$file, 0666 & ~umask());
         }
-        $legacyFile = \dirname($dir.$file).'.legacy';
+        $legacyFile = \dirname($dir.key($content)).'.legacy';
         if (file_exists($legacyFile)) {
             @unlink($legacyFile);
         }
@@ -807,14 +841,14 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
             $token = $tokens[$i];
             if (!isset($token[1]) || 'b"' === $token) {
                 $rawChunk .= $token;
-            } elseif (T_START_HEREDOC === $token[0]) {
+            } elseif (\T_START_HEREDOC === $token[0]) {
                 $output .= $rawChunk.$token[1];
                 do {
                     $token = $tokens[++$i];
                     $output .= isset($token[1]) && 'b"' !== $token ? $token[1] : $token;
-                } while (T_END_HEREDOC !== $token[0]);
+                } while (\T_END_HEREDOC !== $token[0]);
                 $rawChunk = '';
-            } elseif (T_WHITESPACE === $token[0]) {
+            } elseif (\T_WHITESPACE === $token[0]) {
                 if ($ignoreSpace) {
                     $ignoreSpace = false;
 
@@ -823,13 +857,13 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
 
                 // replace multiple new lines with a single newline
                 $rawChunk .= preg_replace(['/\n{2,}/S'], "\n", $token[1]);
-            } elseif (\in_array($token[0], [T_COMMENT, T_DOC_COMMENT])) {
+            } elseif (\in_array($token[0], [\T_COMMENT, \T_DOC_COMMENT])) {
                 $ignoreSpace = true;
             } else {
                 $rawChunk .= $token[1];
 
                 // The PHP-open tag already has a new-line
-                if (T_OPEN_TAG === $token[0]) {
+                if (\T_OPEN_TAG === $token[0]) {
                     $ignoreSpace = true;
                 }
             }
@@ -848,7 +882,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function serialize()
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
 
         return serialize([$this->environment, $this->debug]);
     }
@@ -858,16 +892,19 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
      */
     public function unserialize($data)
     {
-        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s" method is deprecated since Symfony 4.3.', __METHOD__), \E_USER_DEPRECATED);
         list($environment, $debug) = unserialize($data, ['allowed_classes' => false]);
 
         $this->__construct($environment, $debug);
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
             $this->serialized = $this->serialize();
 
             return ['serialized'];
@@ -879,7 +916,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
     public function __wakeup()
     {
         if (__CLASS__ !== $c = (new \ReflectionMethod($this, 'serialize'))->getDeclaringClass()->name) {
-            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Implementing the "%s::serialize()" method is deprecated since Symfony 4.3.', $c), \E_USER_DEPRECATED);
             $this->unserialize($this->serialized);
             unset($this->serialized);
 
diff --git a/vendor/symfony/http-kernel/KernelInterface.php b/vendor/symfony/http-kernel/KernelInterface.php
index f9089dc6..00a1aec8 100644
--- a/vendor/symfony/http-kernel/KernelInterface.php
+++ b/vendor/symfony/http-kernel/KernelInterface.php
@@ -80,23 +80,14 @@ interface KernelInterface extends HttpKernelInterface
      * where BundleName is the name of the bundle
      * and the remaining part is the relative path in the bundle.
      *
-     * If $dir is passed, and the first segment of the path is "Resources",
-     * this method will look for a file named:
+     * @param string $name A resource name to locate
      *
-     *     $dir/<BundleName>/path/without/Resources
-     *
-     * before looking in the bundle resource folder.
-     *
-     * @param string $name  A resource name to locate
-     * @param string $dir   A directory where to look for the resource first
-     * @param bool   $first Whether to return the first path or paths for all matching bundles
-     *
-     * @return string|array The absolute path of the resource or an array if $first is false
+     * @return string|array The absolute path of the resource or an array if $first is false (array return value is deprecated)
      *
      * @throws \InvalidArgumentException if the file cannot be found or the name is not valid
      * @throws \RuntimeException         if the name contains invalid/unsafe characters
      */
-    public function locateResource($name, $dir = null, $first = true);
+    public function locateResource($name/*, $dir = null, $first = true*/);
 
     /**
      * Gets the name of the kernel.
@@ -133,7 +124,7 @@ interface KernelInterface extends HttpKernelInterface
     /**
      * Gets the current container.
      *
-     * @return ContainerInterface|null A ContainerInterface instance or null when the Kernel is shutdown
+     * @return ContainerInterface
      */
     public function getContainer();
 
diff --git a/vendor/symfony/http-kernel/LICENSE b/vendor/symfony/http-kernel/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/http-kernel/LICENSE
+++ b/vendor/symfony/http-kernel/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/http-kernel/Log/Logger.php b/vendor/symfony/http-kernel/Log/Logger.php
index 3969487b..c97673dd 100644
--- a/vendor/symfony/http-kernel/Log/Logger.php
+++ b/vendor/symfony/http-kernel/Log/Logger.php
@@ -37,10 +37,10 @@ class Logger extends AbstractLogger
     private $formatter;
     private $handle;
 
-    public function __construct(string $minLevel = null, $output = 'php://stderr', callable $formatter = null)
+    public function __construct(string $minLevel = null, $output = null, callable $formatter = null)
     {
         if (null === $minLevel) {
-            $minLevel = 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::CRITICAL : LogLevel::WARNING;
+            $minLevel = null === $output || 'php://stdout' === $output || 'php://stderr' === $output ? LogLevel::ERROR : LogLevel::WARNING;
 
             if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) {
                 switch ((int) (isset($_ENV['SHELL_VERBOSITY']) ? $_ENV['SHELL_VERBOSITY'] : $_SERVER['SHELL_VERBOSITY'])) {
@@ -58,13 +58,15 @@ class Logger extends AbstractLogger
 
         $this->minLevelIndex = self::$levels[$minLevel];
         $this->formatter = $formatter ?: [$this, 'format'];
-        if (false === $this->handle = \is_resource($output) ? $output : @fopen($output, 'a')) {
+        if ($output && false === $this->handle = \is_resource($output) ? $output : @fopen($output, 'a')) {
             throw new InvalidArgumentException(sprintf('Unable to open "%s".', $output));
         }
     }
 
     /**
      * {@inheritdoc}
+     *
+     * @return void
      */
     public function log($level, $message, array $context = [])
     {
@@ -77,10 +79,14 @@ class Logger extends AbstractLogger
         }
 
         $formatter = $this->formatter;
-        fwrite($this->handle, $formatter($level, $message, $context));
+        if ($this->handle) {
+            @fwrite($this->handle, $formatter($level, $message, $context));
+        } else {
+            error_log($formatter($level, $message, $context, false));
+        }
     }
 
-    private function format(string $level, string $message, array $context): string
+    private function format(string $level, string $message, array $context, bool $prefixDate = true): string
     {
         if (false !== strpos($message, '{')) {
             $replacements = [];
@@ -99,6 +105,11 @@ class Logger extends AbstractLogger
             $message = strtr($message, $replacements);
         }
 
-        return sprintf('%s [%s] %s', date(\DateTime::RFC3339), $level, $message).\PHP_EOL;
+        $log = sprintf('[%s] %s', $level, $message).\PHP_EOL;
+        if ($prefixDate) {
+            $log = date(\DateTime::RFC3339).' '.$log;
+        }
+
+        return $log;
     }
 }
diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
index 541187cf..5f23e5e0 100644
--- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
@@ -47,7 +47,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
     /**
      * {@inheritdoc}
      */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null)
+    public function find($ip, $url, $limit, $method, $start = null, $end = null, $statusCode = null): array
     {
         $file = $this->getIndexFilename();
 
@@ -56,7 +56,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
         }
 
         $file = fopen($file, 'r');
-        fseek($file, 0, SEEK_END);
+        fseek($file, 0, \SEEK_END);
 
         $result = [];
         while (\count($result) < $limit && $line = $this->readLineFromFile($file)) {
@@ -113,12 +113,16 @@ class FileProfilerStorage implements ProfilerStorageInterface
     /**
      * {@inheritdoc}
      */
-    public function read($token)
+    public function read($token): ?Profile
     {
         if (!$token || !file_exists($file = $this->getFilename($token))) {
             return null;
         }
 
+        if (\function_exists('gzcompress')) {
+            $file = 'compress.zlib://'.$file;
+        }
+
         return $this->createProfileFromData($token, unserialize(file_get_contents($file)));
     }
 
@@ -127,7 +131,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
      *
      * @throws \RuntimeException
      */
-    public function write(Profile $profile)
+    public function write(Profile $profile): bool
     {
         $file = $this->getFilename($profile->getToken());
 
@@ -161,7 +165,14 @@ class FileProfilerStorage implements ProfilerStorageInterface
             'status_code' => $profile->getStatusCode(),
         ];
 
-        if (false === file_put_contents($file, serialize($data))) {
+        $context = stream_context_create();
+
+        if (\function_exists('gzcompress')) {
+            $file = 'compress.zlib://'.$file;
+            stream_context_set_option($context, 'zlib', 'level', 3);
+        }
+
+        if (false === file_put_contents($file, serialize($data), 0, $context)) {
             return false;
         }
 
@@ -249,7 +260,7 @@ class FileProfilerStorage implements ProfilerStorageInterface
 
             $position += $upTo;
             $line = substr($buffer, $upTo + 1).$line;
-            fseek($file, max(0, $position), SEEK_SET);
+            fseek($file, max(0, $position), \SEEK_SET);
 
             if ('' !== $line) {
                 break;
@@ -282,6 +293,10 @@ class FileProfilerStorage implements ProfilerStorageInterface
                 continue;
             }
 
+            if (\function_exists('gzcompress')) {
+                $file = 'compress.zlib://'.$file;
+            }
+
             $profile->addChild($this->createProfileFromData($token, unserialize(file_get_contents($file)), $profile));
         }
 
diff --git a/vendor/symfony/http-kernel/Profiler/Profile.php b/vendor/symfony/http-kernel/Profiler/Profile.php
index 01cdc894..ac5b5044 100644
--- a/vendor/symfony/http-kernel/Profiler/Profile.php
+++ b/vendor/symfony/http-kernel/Profiler/Profile.php
@@ -291,6 +291,9 @@ class Profile
         return isset($this->collectors[$name]);
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         return ['token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode'];
diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php
index 87a49963..60a62368 100644
--- a/vendor/symfony/http-kernel/Profiler/Profiler.php
+++ b/vendor/symfony/http-kernel/Profiler/Profiler.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\HttpKernel\Profiler;
 
 use Psr\Log\LoggerInterface;
+use Symfony\Component\Debug\Exception\FatalThrowableError;
 use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -138,10 +139,14 @@ class Profiler implements ResetInterface
     /**
      * Collects data for the given Response.
      *
+     * @param \Throwable|null $exception
+     *
      * @return Profile|null A Profile instance or null if the profiler is disabled
      */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
+    public function collect(Request $request, Response $response/*, \Throwable $exception = null*/)
     {
+        $exception = 2 < \func_num_args() ? func_get_arg(2) : null;
+
         if (false === $this->enabled) {
             return null;
         }
@@ -163,9 +168,14 @@ class Profiler implements ResetInterface
 
         $response->headers->set('X-Debug-Token', $profile->getToken());
 
+        $wrappedException = null;
         foreach ($this->collectors as $collector) {
-            $collector->collect($request, $response, $exception);
+            if (($e = $exception) instanceof \Error) {
+                $r = new \ReflectionMethod($collector, 'collect');
+                $e = 2 >= $r->getNumberOfParameters() || !($p = $r->getParameters()[2])->hasType() || \Exception::class !== $p->getType()->getName() ? $e : ($wrappedException ?? $wrappedException = new FatalThrowableError($e));
+            }
 
+            $collector->collect($request, $response, $e);
             // we need to clone for sub-requests
             $profile->addCollector(clone $collector);
         }
diff --git a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
index c97e640b..d13ee232 100644
--- a/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
+++ b/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
@@ -38,7 +38,7 @@ interface ProfilerStorageInterface
      *
      * @return array An array of tokens
      */
-    public function find($ip, $url, $limit, $method, $start = null, $end = null);
+    public function find($ip, $url, $limit, $method, $start = null, $end = null): array;
 
     /**
      * Reads data associated with the given token.
@@ -49,14 +49,14 @@ interface ProfilerStorageInterface
      *
      * @return Profile|null The profile associated with token
      */
-    public function read($token);
+    public function read($token): ?Profile;
 
     /**
      * Saves a Profile.
      *
      * @return bool Write operation successful
      */
-    public function write(Profile $profile);
+    public function write(Profile $profile): bool;
 
     /**
      * Purges all data from the database.
diff --git a/vendor/symfony/http-kernel/README.md b/vendor/symfony/http-kernel/README.md
index cc5e74b6..abdaf513 100644
--- a/vendor/symfony/http-kernel/README.md
+++ b/vendor/symfony/http-kernel/README.md
@@ -9,7 +9,7 @@ an advanced CMS system (Drupal).
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/http_kernel/index.html)
+  * [Documentation](https://symfony.com/doc/current/components/http_kernel.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/http-kernel/Resources/welcome.html.php b/vendor/symfony/http-kernel/Resources/welcome.html.php
index 8fdc0050..b8337dc7 100644
--- a/vendor/symfony/http-kernel/Resources/welcome.html.php
+++ b/vendor/symfony/http-kernel/Resources/welcome.html.php
@@ -1,70 +1,119 @@
 <!DOCTYPE html>
-<html>
+<html dir="ltr" lang="en">
 <head>
     <meta charset="UTF-8" />
-    <title>Welcome!</title>
+    <meta name="robots" content="noindex,nofollow,noarchive,nosnippet,noodp,notranslate,noimageindex" />
+    <title>Welcome to Symfony!</title>
     <style>
-        body { background: #F5F5F5; font: 18px/1.5 sans-serif; }
+        <?php $hue = random_int(0, 360); ?>
+        <?php $darkColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 45%, $alpha)"; }; ?>
+        <?php $lightColor = static function (float $alpha = 1) use ($hue) { return "hsla($hue, 20%, 95%, $alpha)"; }; ?>
+        body { background: <?= $lightColor(); ?>; color: <?= $darkColor(); ?>; display: flex; font: 16px/1.5 sans-serif; justify-content: center; margin: 0; }
         h1, h2 { line-height: 1.2; margin: 0 0 .5em; }
         h1 { font-size: 36px; }
         h2 { font-size: 21px; margin-bottom: 1em; }
-        p { margin: 0 0 1em 0; }
-        a { color: #0000F0; }
+        a { color: <?= $darkColor(0.75); ?> }
         a:hover { text-decoration: none; }
-        code { background: #F5F5F5; max-width: 100px; padding: 2px 6px; word-wrap: break-word; }
-        #wrapper { background: #FFF; margin: 1em auto; max-width: 800px; width: 95%; }
-        #container { padding: 2em; }
-        #welcome, #status { margin-bottom: 2em; }
-        #welcome h1 span { display: block; font-size: 75%; }
-        #comment { font-size: 14px; text-align: center; color: #777777; background: #FEFFEA; padding: 10px; }
-        #comment p { margin-bottom: 0; }
-        #icon-status, #icon-book { float: left; height: 64px; margin-right: 1em; margin-top: -4px; width: 64px; }
-        #icon-book { display: none; }
+        code { border-radius: 25px; background: <?= $lightColor(); ?>; box-shadow: 0 0 45px -15px hsl(<?= $hue; ?>, 20%, 2%); color: <?= $darkColor(); ?>; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; align-items: center; padding-right: 20px; position: relative; word-wrap: break-word; z-index: 1; }
+        svg { overflow: hidden; vertical-align: text-bottom; }
+        .wrapper { text-align: center; width: 100%; }
+        .container { position: relative; background: radial-gradient(ellipse at bottom, <?= $darkColor(); ?> 0%, hsl(<?= $hue; ?>, 20%, 13%) 100%); background-attachment: fixed; color: <?= $lightColor(); ?>; }
+        .container:after { content: ""; position: absolute; height: 2px; width: 2px; top: -2px; left: 0; background: white; box-shadow: 778px 1019px 0 0 rgba(255, 255, 255, 0.826) , 1075px 1688px 0 0 rgba(255,255,255, 0.275) , 388px 1021px 0 0 rgba(255,255,255, 0.259) , 1238px 626px 0 0 rgba(255,255,255, 0.469) , 997px 904px 0 0 rgba(255,255,255, 0.925) , 921px 1345px 0 0 rgba(255,255,255, 0.698) , 337px 1236px 0 0 rgba(255,255,255, 0.838) , 460px 569px 0 0 rgba(255,255,255, 0.01) , 690px 1488px 0 0 rgba(255,255,255, 0.154) , 859px 926px 0 0 rgba(255,255,255, 0.515) , 1272px 791px 0 0 rgba(255,255,255, 1) , 238px 1256px 0 0 rgba(255,255,255, 0.633) , 1486px 897px 0 0 rgba(255,255,255, 0.88) , 667px 6px 0 0 rgba(255,255,255, 0.508) , 853px 504px 0 0 rgba(255,255,255, 0.248) , 1329px 1778px 0 0 rgba(255,255,255, 0.217) , 768px 1340px 0 0 rgba(255,255,255, 0.792) , 631px 1383px 0 0 rgba(255,255,255, 0.698) , 991px 1603px 0 0 rgba(255,255,255, 0.939) , 1778px 1767px 0 0 rgba(255,255,255, 0.784) , 285px 546px 0 0 rgba(255,255,255, 0.8) , 1224px 1333px 0 0 rgba(255,255,255, 0.676) , 1154px 397px 0 0 rgba(255,255,255, 0.974) , 1210px 1004px 0 0 rgba(255,255,255, 0.894) , 1632px 953px 0 0 rgba(255,255,255, 0.281) , 449px 1144px 0 0 rgba(255,255,255, 0.706) , 1426px 771px 0 0 rgba(255,255,255, 0.737) , 1438px 1634px 0 0 rgba(255,255,255, 0.984) , 806px 168px 0 0 rgba(255,255,255, 0.807) , 731px 1067px 0 0 rgba(255,255,255, 0.734) , 1731px 1785px 0 0 rgba(255,255,255, 0.528) , 23px 975px 0 0 rgba(255,255,255, 0.068) , 575px 1088px 0 0 rgba(255,255,255, 0.876) , 1205px 1668px 0 0 rgba(255,255,255, 0.601) , 18px 1457px 0 0 rgba(255,255,255, 0.176) , 252px 1163px 0 0 rgba(255,255,255, 0.416) , 1752px 1px 0 0 rgba(255,255,255, 0.374) , 382px 767px 0 0 rgba(255,255,255, 0.073) , 133px 1462px 0 0 rgba(255,255,255, 0.706) , 851px 1166px 0 0 rgba(255,255,255, 0.535) , 374px 921px 0 0 rgba(255,255,255, 0.548) , 554px 1598px 0 0 rgba(255,255,255, 0.062) , 314px 685px 0 0 rgba(255,255,255, 0.187) , 1443px 209px 0 0 rgba(255,255,255, 0.097) , 1774px 1625px 0 0 rgba(255,255,255, 0.32) , 58px 278px 0 0 rgba(255,255,255, 0.684) , 986px 338px 0 0 rgba(255,255,255, 0.272) , 718px 1357px 0 0 rgba(255,255,255, 0.317) , 722px 983px 0 0 rgba(255,255,255, 0.568) , 1124px 992px 0 0 rgba(255,255,255, 0.199) , 581px 619px 0 0 rgba(255,255,255, 0.44) , 1120px 285px 0 0 rgba(255,255,255, 0.425) , 702px 138px 0 0 rgba(255,255,255, 0.816) , 262px 767px 0 0 rgba(255,255,255, 0.92) , 1204px 38px 0 0 rgba(255,255,255, 0.197) , 1196px 410px 0 0 rgba(255,255,255, 0.453) , 707px 699px 0 0 rgba(255,255,255, 0.481) , 1590px 1488px 0 0 rgba(255,255,255, 0.559) , 879px 1763px 0 0 rgba(255,255,255, 0.241) , 106px 686px 0 0 rgba(255,255,255, 0.175) , 158px 569px 0 0 rgba(255,255,255, 0.549) , 711px 1219px 0 0 rgba(255,255,255, 0.476) , 1339px 53px 0 0 rgba(255,255,255, 0.275) , 1410px 172px 0 0 rgba(255,255,255, 0.449) , 1601px 1484px 0 0 rgba(255,255,255, 0.988) , 1328px 1752px 0 0 rgba(255,255,255, 0.827) , 1733px 1475px 0 0 rgba(255,255,255, 0.567) , 559px 742px 0 0 rgba(255,255,255, 0.423) , 772px 844px 0 0 rgba(255,255,255, 0.039) , 602px 520px 0 0 rgba(255,255,255, 0.284) , 1158px 1067px 0 0 rgba(255,255,255, 0.066) , 1562px 730px 0 0 rgba(255,255,255, 0.086) , 1792px 615px 0 0 rgba(255,255,255, 0.438) , 1085px 1191px 0 0 rgba(255,255,255, 0.157) , 1402px 1087px 0 0 rgba(255,255,255, 0.797) , 569px 1685px 0 0 rgba(255,255,255, 0.992) , 1608px 52px 0 0 rgba(255,255,255, 0.302) , 1697px 1246px 0 0 rgba(255,255,255, 0.295) , 899px 1490px 0 0 rgba(255,255,255, 0.73) , 993px 901px 0 0 rgba(255,255,255, 0.961) , 1193px 1023px 0 0 rgba(255,255,255, 0.671) , 1224px 176px 0 0 rgba(255,255,255, 0.786) , 721px 1308px 0 0 rgba(255,255,255, 0.691) , 1702px 730px 0 0 rgba(255,255,255, 0.841) , 1480px 1498px 0 0 rgba(255,255,255, 0.655) , 181px 1612px 0 0 rgba(255,255,255, 0.588) , 1776px 679px 0 0 rgba(255,255,255, 0.821) , 892px 706px 0 0 rgba(255,255,255, 0.056) , 859px 267px 0 0 rgba(255,255,255, 0.565) , 784px 1285px 0 0 rgba(255,255,255, 0.029) , 1561px 1198px 0 0 rgba(255,255,255, 0.315) , 205px 421px 0 0 rgba(255,255,255, 0.584) , 236px 406px 0 0 rgba(255,255,255, 0.166) , 1259px 689px 0 0 rgba(255,255,255, 0.321) , 448px 317px 0 0 rgba(255,255,255, 0.495) , 1318px 466px 0 0 rgba(255,255,255, 0.275) , 1053px 297px 0 0 rgba(255,255,255, 0.035) , 716px 538px 0 0 rgba(255,255,255, 0.764) , 381px 207px 0 0 rgba(255,255,255, 0.692) , 871px 1140px 0 0 rgba(255,255,255, 0.342) , 361px 53px 0 0 rgba(255,255,255, 0.984) , 1565px 1593px 0 0 rgba(255,255,255, 0.102) , 145px 277px 0 0 rgba(255,255,255, 0.866) , 220px 1503px 0 0 rgba(255,255,255, 0.936) , 1068px 1475px 0 0 rgba(255,255,255, 0.156) , 1548px 483px 0 0 rgba(255,255,255, 0.768) , 710px 103px 0 0 rgba(255,255,255, 0.809) , 1660px 921px 0 0 rgba(255,255,255, 0.952) , 462px 1252px 0 0 rgba(255,255,255, 0.825) , 1123px 1628px 0 0 rgba(255,255,255, 0.409) , 1274px 729px 0 0 rgba(255,255,255, 0.26) , 1739px 679px 0 0 rgba(255,255,255, 0.83) , 1550px 1518px 0 0 rgba(255,255,255, 0.25) , 1624px 346px 0 0 rgba(255,255,255, 0.557) , 1023px 579px 0 0 rgba(255,255,255, 0.854) , 217px 661px 0 0 rgba(255,255,255, 0.731) , 1504px 549px 0 0 rgba(255,255,255, 0.705) , 939px 5px 0 0 rgba(255,255,255, 0.389) , 284px 735px 0 0 rgba(255,255,255, 0.355) , 13px 1679px 0 0 rgba(255,255,255, 0.712) , 137px 1592px 0 0 rgba(255,255,255, 0.619) , 1113px 505px 0 0 rgba(255,255,255, 0.651) , 1584px 510px 0 0 rgba(255,255,255, 0.41) , 346px 913px 0 0 rgba(255,255,255, 0.09) , 198px 1490px 0 0 rgba(255,255,255, 0.103) , 447px 1128px 0 0 rgba(255,255,255, 0.314) , 1356px 324px 0 0 rgba(255,255,255, 0.324) , 648px 667px 0 0 rgba(255,255,255, 0.155) , 442px 260px 0 0 rgba(255,255,255, 0.22) , 210px 401px 0 0 rgba(255,255,255, 0.682) , 422px 1772px 0 0 rgba(255,255,255, 0.671) , 276px 349px 0 0 rgba(255,255,255, 0.683) , 131px 539px 0 0 rgba(255,255,255, 0.977) , 892px 94px 0 0 rgba(255,255,255, 0.081) , 1295px 222px 0 0 rgba(255,255,255, 0.961) , 5px 1727px 0 0 rgba(255,255,255, 0.311) , 714px 1148px 0 0 rgba(255,255,255, 0.846) , 1455px 1182px 0 0 rgba(255,255,255, 0.313) , 1370px 708px 0 0 rgba(255,255,255, 0.824) , 812px 433px 0 0 rgba(255,255,255, 0.75) , 1110px 558px 0 0 rgba(255,255,255, 0.709) , 1132px 1543px 0 0 rgba(255,255,255, 0.868) , 644px 610px 0 0 rgba(255,255,255, 0.166) , 269px 1481px 0 0 rgba(255,255,255, 0.889) , 1712px 590px 0 0 rgba(255,255,255, 0.139) , 1159px 599px 0 0 rgba(255,255,255, 0.992) , 1551px 209px 0 0 rgba(255,255,255, 0.033) , 1020px 1721px 0 0 rgba(255,255,255, 0.028) , 216px 373px 0 0 rgba(255,255,255, 0.665) , 877px 532px 0 0 rgba(255,255,255, 0.686) , 1326px 885px 0 0 rgba(255,255,255, 0.517) , 972px 1704px 0 0 rgba(255,255,255, 0.499) , 749px 181px 0 0 rgba(255,255,255, 0.712) , 1511px 1650px 0 0 rgba(255,255,255, 0.101) , 1432px 183px 0 0 rgba(255,255,255, 0.545) , 1541px 1338px 0 0 rgba(255,255,255, 0.71) , 513px 1406px 0 0 rgba(255,255,255, 0.17) , 1314px 1197px 0 0 rgba(255,255,255, 0.789) , 824px 1659px 0 0 rgba(255,255,255, 0.597) , 308px 298px 0 0 rgba(255,255,255, 0.917) , 1225px 659px 0 0 rgba(255,255,255, 0.229) , 1253px 257px 0 0 rgba(255,255,255, 0.631) , 1653px 185px 0 0 rgba(255,255,255, 0.113) , 336px 614px 0 0 rgba(255,255,255, 0.045) , 1093px 898px 0 0 rgba(255,255,255, 0.617) , 730px 5px 0 0 rgba(255,255,255, 0.11) , 785px 645px 0 0 rgba(255,255,255, 0.516) , 989px 678px 0 0 rgba(255,255,255, 0.917) , 1511px 1614px 0 0 rgba(255,255,255, 0.938) , 584px 1117px 0 0 rgba(255,255,255, 0.631) , 534px 1012px 0 0 rgba(255,255,255, 0.668) , 1325px 1778px 0 0 rgba(255,255,255, 0.293) , 1632px 754px 0 0 rgba(255,255,255, 0.26) , 78px 1258px 0 0 rgba(255,255,255, 0.52) , 779px 1691px 0 0 rgba(255,255,255, 0.878) , 253px 1706px 0 0 rgba(255,255,255, 0.75) , 1358px 245px 0 0 rgba(255,255,255, 0.027) , 361px 1629px 0 0 rgba(255,255,255, 0.238) , 1134px 232px 0 0 rgba(255,255,255, 0.387) , 1685px 777px 0 0 rgba(255,255,255, 0.156) , 515px 724px 0 0 rgba(255,255,255, 0.863) , 588px 1728px 0 0 rgba(255,255,255, 0.159) , 1132px 47px 0 0 rgba(255,255,255, 0.691) , 315px 1446px 0 0 rgba(255,255,255, 0.782) , 79px 233px 0 0 rgba(255,255,255, 0.317) , 1498px 1050px 0 0 rgba(255,255,255, 0.358) , 30px 1073px 0 0 rgba(255,255,255, 0.939) , 1637px 620px 0 0 rgba(255,255,255, 0.141) , 1736px 1683px 0 0 rgba(255,255,255, 0.682) , 1298px 1505px 0 0 rgba(255,255,255, 0.863) , 972px 85px 0 0 rgba(255,255,255, 0.941) , 349px 1356px 0 0 rgba(255,255,255, 0.672) , 1545px 1429px 0 0 rgba(255,255,255, 0.859) , 1076px 467px 0 0 rgba(255,255,255, 0.024) , 189px 1647px 0 0 rgba(255,255,255, 0.838) , 423px 1722px 0 0 rgba(255,255,255, 0.771) , 1691px 1719px 0 0 rgba(255,255,255, 0.676) , 1747px 658px 0 0 rgba(255,255,255, 0.255) , 149px 1492px 0 0 rgba(255,255,255, 0.911) , 1203px 1138px 0 0 rgba(255,255,255, 0.964) , 781px 1584px 0 0 rgba(255,255,255, 0.465) , 1609px 1595px 0 0 rgba(255,255,255, 0.688) , 447px 1655px 0 0 rgba(255,255,255, 0.166) , 914px 1153px 0 0 rgba(255,255,255, 0.085) , 600px 1058px 0 0 rgba(255,255,255, 0.821) , 804px 505px 0 0 rgba(255,255,255, 0.608) , 1506px 584px 0 0 rgba(255,255,255, 0.618) , 587px 1290px 0 0 rgba(255,255,255, 0.071) , 258px 600px 0 0 rgba(255,255,255, 0.243) , 328px 395px 0 0 rgba(255,255,255, 0.065) , 846px 783px 0 0 rgba(255,255,255, 0.995) , 1138px 1294px 0 0 rgba(255,255,255, 0.703) , 1668px 633px 0 0 rgba(255,255,255, 0.27) , 337px 103px 0 0 rgba(255,255,255, 0.202) , 132px 986px 0 0 rgba(255,255,255, 0.726) , 414px 757px 0 0 rgba(255,255,255, 0.752) , 8px 1311px 0 0 rgba(255,255,255, 0.307) , 1791px 910px 0 0 rgba(255,255,255, 0.346) , 844px 216px 0 0 rgba(255,255,255, 0.156) , 1547px 1723px 0 0 rgba(255,255,255, 0.73) , 1187px 398px 0 0 rgba(255,255,255, 0.698) , 1550px 1520px 0 0 rgba(255,255,255, 0.462) , 1346px 655px 0 0 rgba(255,255,255, 0.58) , 668px 770px 0 0 rgba(255,255,255, 0.422) , 1774px 1435px 0 0 rgba(255,255,255, 0.089) , 693px 1061px 0 0 rgba(255,255,255, 0.893) , 132px 1689px 0 0 rgba(255,255,255, 0.937) , 894px 1561px 0 0 rgba(255,255,255, 0.88) , 906px 1706px 0 0 rgba(255,255,255, 0.567) , 1140px 297px 0 0 rgba(255,255,255, 0.358) , 13px 1288px 0 0 rgba(255,255,255, 0.464) , 1744px 423px 0 0 rgba(255,255,255, 0.845) , 119px 1548px 0 0 rgba(255,255,255, 0.769) , 1249px 1321px 0 0 rgba(255,255,255, 0.29) , 123px 795px 0 0 rgba(255,255,255, 0.597) , 390px 1542px 0 0 rgba(255,255,255, 0.47) , 825px 667px 0 0 rgba(255,255,255, 0.049) , 1071px 875px 0 0 rgba(255,255,255, 0.06) , 1428px 1786px 0 0 rgba(255,255,255, 0.222) , 993px 696px 0 0 rgba(255,255,255, 0.399) , 1585px 247px 0 0 rgba(255,255,255, 0.094) , 1340px 1312px 0 0 rgba(255,255,255, 0.603) , 1640px 725px 0 0 rgba(255,255,255, 0.026) , 1161px 1397px 0 0 rgba(255,255,255, 0.222) , 966px 1132px 0 0 rgba(255,255,255, 0.69) , 1782px 1275px 0 0 rgba(255,255,255, 0.606) , 1117px 1533px 0 0 rgba(255,255,255, 0.248) , 1027px 959px 0 0 rgba(255,255,255, 0.46) , 459px 839px 0 0 rgba(255,255,255, 0.98) , 1192px 265px 0 0 rgba(255,255,255, 0.523) , 175px 501px 0 0 rgba(255,255,255, 0.371) , 626px 19px 0 0 rgba(255,255,255, 0.246) , 46px 1173px 0 0 rgba(255,255,255, 0.124) , 573px 925px 0 0 rgba(255,255,255, 0.621) , 1px 283px 0 0 rgba(255,255,255, 0.943) , 778px 1213px 0 0 rgba(255,255,255, 0.128) , 435px 593px 0 0 rgba(255,255,255, 0.378) , 32px 394px 0 0 rgba(255,255,255, 0.451) , 1019px 1055px 0 0 rgba(255,255,255, 0.685) , 1423px 1233px 0 0 rgba(255,255,255, 0.354) , 494px 841px 0 0 rgba(255,255,255, 0.322) , 667px 194px 0 0 rgba(255,255,255, 0.655) , 1671px 195px 0 0 rgba(255,255,255, 0.502) , 403px 1710px 0 0 rgba(255,255,255, 0.623) , 665px 1597px 0 0 rgba(255,255,255, 0.839) , 61px 1742px 0 0 rgba(255,255,255, 0.566) , 1490px 1654px 0 0 rgba(255,255,255, 0.646) , 1361px 1604px 0 0 rgba(255,255,255, 0.101) , 1191px 1023px 0 0 rgba(255,255,255, 0.881) , 550px 378px 0 0 rgba(255,255,255, 0.573) , 1332px 1234px 0 0 rgba(255,255,255, 0.922) , 760px 1205px 0 0 rgba(255,255,255, 0.992) , 1506px 1328px 0 0 rgba(255,255,255, 0.723) , 1126px 813px 0 0 rgba(255,255,255, 0.549) , 67px 240px 0 0 rgba(255,255,255, 0.901) , 125px 1301px 0 0 rgba(255,255,255, 0.464) , 643px 391px 0 0 rgba(255,255,255, 0.589) , 1114px 1756px 0 0 rgba(255,255,255, 0.321) , 1602px 699px 0 0 rgba(255,255,255, 0.274) , 510px 393px 0 0 rgba(255,255,255, 0.185) , 171px 1217px 0 0 rgba(255,255,255, 0.932) , 1202px 1362px 0 0 rgba(255,255,255, 0.726) , 1160px 1324px 0 0 rgba(255,255,255, 0.867) , 121px 319px 0 0 rgba(255,255,255, 0.992) , 1474px 835px 0 0 rgba(255,255,255, 0.89) , 357px 1213px 0 0 rgba(255,255,255, 0.91) , 783px 976px 0 0 rgba(255,255,255, 0.941) , 750px 1599px 0 0 rgba(255,255,255, 0.515) , 323px 450px 0 0 rgba(255,255,255, 0.966) , 1078px 282px 0 0 rgba(255,255,255, 0.947) , 1164px 46px 0 0 rgba(255,255,255, 0.296) , 1792px 705px 0 0 rgba(255,255,255, 0.485) , 880px 1287px 0 0 rgba(255,255,255, 0.894) , 60px 1402px 0 0 rgba(255,255,255, 0.816) , 752px 894px 0 0 rgba(255,255,255, 0.803) , 285px 1535px 0 0 rgba(255,255,255, 0.93) , 1528px 401px 0 0 rgba(255,255,255, 0.727) , 651px 1767px 0 0 rgba(255,255,255, 0.146) , 1498px 1190px 0 0 rgba(255,255,255, 0.042) , 394px 1786px 0 0 rgba(255,255,255, 0.159) , 1318px 9px 0 0 rgba(255,255,255, 0.575) , 1699px 1675px 0 0 rgba(255,255,255, 0.511) , 82px 986px 0 0 rgba(255,255,255, 0.906) , 940px 970px 0 0 rgba(255,255,255, 0.562) , 1624px 259px 0 0 rgba(255,255,255, 0.537) , 1782px 222px 0 0 rgba(255,255,255, 0.259) , 1572px 1725px 0 0 rgba(255,255,255, 0.716) , 1080px 1557px 0 0 rgba(255,255,255, 0.245) , 1727px 648px 0 0 rgba(255,255,255, 0.471) , 899px 231px 0 0 rgba(255,255,255, 0.445) , 1061px 1074px 0 0 rgba(255,255,255, 0.079) , 556px 478px 0 0 rgba(255,255,255, 0.524) , 343px 359px 0 0 rgba(255,255,255, 0.162) , 711px 1254px 0 0 rgba(255,255,255, 0.323) , 1335px 242px 0 0 rgba(255,255,255, 0.936) , 933px 39px 0 0 rgba(255,255,255, 0.784) , 1629px 908px 0 0 rgba(255,255,255, 0.289) , 1800px 229px 0 0 rgba(255,255,255, 0.399) , 1589px 926px 0 0 rgba(255,255,255, 0.709) , 976px 694px 0 0 rgba(255,255,255, 0.855) , 1163px 1240px 0 0 rgba(255,255,255, 0.754) , 1662px 1784px 0 0 rgba(255,255,255, 0.088) , 656px 1388px 0 0 rgba(255,255,255, 0.688) , 1190px 1100px 0 0 rgba(255,255,255, 0.769) , 33px 392px 0 0 rgba(255,255,255, 0.301) , 56px 1405px 0 0 rgba(255,255,255, 0.969) , 1491px 118px 0 0 rgba(255,255,255, 0.991) , 1216px 997px 0 0 rgba(255,255,255, 0.727) , 1617px 712px 0 0 rgba(255,255,255, 0.45) , 163px 553px 0 0 rgba(255,255,255, 0.977) , 103px 140px 0 0 rgba(255,255,255, 0.916) , 1099px 1404px 0 0 rgba(255,255,255, 0.167) , 1423px 587px 0 0 rgba(255,255,255, 0.792) , 1797px 309px 0 0 rgba(255,255,255, 0.526) , 381px 141px 0 0 rgba(255,255,255, 0.005) , 1214px 802px 0 0 rgba(255,255,255, 0.887) , 211px 829px 0 0 rgba(255,255,255, 0.72) , 1103px 1507px 0 0 rgba(255,255,255, 0.642) , 244px 1231px 0 0 rgba(255,255,255, 0.184) , 118px 1747px 0 0 rgba(255,255,255, 0.475) , 183px 1293px 0 0 rgba(255,255,255, 0.148) , 911px 1362px 0 0 rgba(255,255,255, 0.073) , 817px 457px 0 0 rgba(255,255,255, 0.459) , 756px 18px 0 0 rgba(255,255,255, 0.544) , 481px 1118px 0 0 rgba(255,255,255, 0.878) , 380px 138px 0 0 rgba(255,255,255, 0.132) , 320px 646px 0 0 rgba(255,255,255, 0.04) , 1724px 1716px 0 0 rgba(255,255,255, 0.381) , 978px 1269px 0 0 rgba(255,255,255, 0.431) , 1530px 255px 0 0 rgba(255,255,255, 0.31) , 664px 204px 0 0 rgba(255,255,255, 0.913) , 474px 703px 0 0 rgba(255,255,255, 0.832) , 1722px 1204px 0 0 rgba(255,255,255, 0.356) , 1453px 821px 0 0 rgba(255,255,255, 0.195) , 730px 1468px 0 0 rgba(255,255,255, 0.696) , 928px 1610px 0 0 rgba(255,255,255, 0.894) , 1036px 304px 0 0 rgba(255,255,255, 0.696) , 1590px 172px 0 0 rgba(255,255,255, 0.729) , 249px 1590px 0 0 rgba(255,255,255, 0.277) , 357px 81px 0 0 rgba(255,255,255, 0.526) , 726px 1261px 0 0 rgba(255,255,255, 0.149) , 643px 946px 0 0 rgba(255,255,255, 0.005) , 1263px 995px 0 0 rgba(255,255,255, 0.124) , 1564px 1107px 0 0 rgba(255,255,255, 0.789) , 388px 83px 0 0 rgba(255,255,255, 0.498) , 715px 681px 0 0 rgba(255,255,255, 0.655) , 1618px 1624px 0 0 rgba(255,255,255, 0.63) , 1423px 1576px 0 0 rgba(255,255,255, 0.52) , 564px 1786px 0 0 rgba(255,255,255, 0.482) , 1066px 735px 0 0 rgba(255,255,255, 0.276) , 714px 1179px 0 0 rgba(255,255,255, 0.395) , 967px 1006px 0 0 rgba(255,255,255, 0.923) , 1136px 1790px 0 0 rgba(255,255,255, 0.801) , 215px 1690px 0 0 rgba(255,255,255, 0.957) , 1500px 1338px 0 0 rgba(255,255,255, 0.541) , 1679px 1065px 0 0 rgba(255,255,255, 0.925) , 426px 1489px 0 0 rgba(255,255,255, 0.193) , 1273px 853px 0 0 rgba(255,255,255, 0.317) , 665px 1189px 0 0 rgba(255,255,255, 0.512) , 520px 552px 0 0 rgba(255,255,255, 0.925) , 253px 438px 0 0 rgba(255,255,255, 0.588) , 369px 1354px 0 0 rgba(255,255,255, 0.889) , 749px 205px 0 0 rgba(255,255,255, 0.243) , 820px 145px 0 0 rgba(255,255,255, 0.207) , 1739px 228px 0 0 rgba(255,255,255, 0.267) , 392px 495px 0 0 rgba(255,255,255, 0.504) , 721px 1044px 0 0 rgba(255,255,255, 0.823) , 833px 912px 0 0 rgba(255,255,255, 0.222) , 865px 1499px 0 0 rgba(255,255,255, 0.003) , 313px 756px 0 0 rgba(255,255,255, 0.727) , 439px 1187px 0 0 rgba(255,255,255, 0.572) , 6px 1238px 0 0 rgba(255,255,255, 0.676) , 1567px 11px 0 0 rgba(255,255,255, 0.701) , 1216px 757px 0 0 rgba(255,255,255, 0.87) , 916px 588px 0 0 rgba(255,255,255, 0.565) , 831px 215px 0 0 rgba(255,255,255, 0.597) , 1289px 697px 0 0 rgba(255,255,255, 0.964) , 307px 34px 0 0 rgba(255,255,255, 0.462) , 3px 1685px 0 0 rgba(255,255,255, 0.464) , 1115px 1421px 0 0 rgba(255,255,255, 0.303) , 1451px 473px 0 0 rgba(255,255,255, 0.142) , 1374px 1205px 0 0 rgba(255,255,255, 0.086) , 1564px 317px 0 0 rgba(255,255,255, 0.773) , 304px 1127px 0 0 rgba(255,255,255, 0.653) , 446px 214px 0 0 rgba(255,255,255, 0.135) , 1541px 459px 0 0 rgba(255,255,255, 0.725) , 1387px 880px 0 0 rgba(255,255,255, 0.157) , 1172px 224px 0 0 rgba(255,255,255, 0.088) , 1420px 637px 0 0 rgba(255,255,255, 0.916) , 1385px 932px 0 0 rgba(255,255,255, 0.225) , 174px 1472px 0 0 rgba(255,255,255, 0.649) , 252px 750px 0 0 rgba(255,255,255, 0.277) , 825px 1042px 0 0 rgba(255,255,255, 0.707) , 840px 703px 0 0 rgba(255,255,255, 0.948) , 1478px 1800px 0 0 rgba(255,255,255, 0.151) , 95px 1303px 0 0 rgba(255,255,255, 0.332) , 1198px 740px 0 0 rgba(255,255,255, 0.443) , 141px 312px 0 0 rgba(255,255,255, 0.04) , 291px 729px 0 0 rgba(255,255,255, 0.284) , 1209px 1506px 0 0 rgba(255,255,255, 0.741) , 1188px 307px 0 0 rgba(255,255,255, 0.141) , 958px 41px 0 0 rgba(255,255,255, 0.858) , 1311px 1484px 0 0 rgba(255,255,255, 0.097) , 846px 1153px 0 0 rgba(255,255,255, 0.862) , 1238px 1376px 0 0 rgba(255,255,255, 0.071) , 1499px 342px 0 0 rgba(255,255,255, 0.719) , 640px 833px 0 0 rgba(255,255,255, 0.966) , 712px 545px 0 0 rgba(255,255,255, 0.194) , 1655px 1542px 0 0 rgba(255,255,255, 0.82) , 616px 353px 0 0 rgba(255,255,255, 0.871) , 1591px 1631px 0 0 rgba(255,255,255, 0.61) , 1664px 591px 0 0 rgba(255,255,255, 0.35) , 934px 454px 0 0 rgba(255,255,255, 0.58) , 1175px 477px 0 0 rgba(255,255,255, 0.966) , 299px 914px 0 0 rgba(255,255,255, 0.839) , 534px 243px 0 0 rgba(255,255,255, 0.194) , 773px 1135px 0 0 rgba(255,255,255, 0.42) , 1696px 1472px 0 0 rgba(255,255,255, 0.552) , 125px 523px 0 0 rgba(255,255,255, 0.591) , 1195px 382px 0 0 rgba(255,255,255, 0.904) , 1609px 1374px 0 0 rgba(255,255,255, 0.579) , 843px 82px 0 0 rgba(255,255,255, 0.072) , 1604px 451px 0 0 rgba(255,255,255, 0.545) , 1322px 190px 0 0 rgba(255,255,255, 0.034) , 528px 228px 0 0 rgba(255,255,255, 0.146) , 1470px 1169px 0 0 rgba(255,255,255, 0.912) , 502px 1350px 0 0 rgba(255,255,255, 0.594) , 1031px 298px 0 0 rgba(255,255,255, 0.368) , 1100px 1427px 0 0 rgba(255,255,255, 0.79) , 979px 1105px 0 0 rgba(255,255,255, 0.973) , 643px 1184px 0 0 rgba(255,255,255, 0.813) , 1636px 1701px 0 0 rgba(255,255,255, 0.013) , 1004px 245px 0 0 rgba(255,255,255, 0.412) , 680px 740px 0 0 rgba(255,255,255, 0.967) , 1599px 562px 0 0 rgba(255,255,255, 0.66) , 256px 1617px 0 0 rgba(255,255,255, 0.463) , 314px 1092px 0 0 rgba(255,255,255, 0.734) , 870px 900px 0 0 rgba(255,255,255, 0.512) , 530px 60px 0 0 rgba(255,255,255, 0.198) , 1786px 896px 0 0 rgba(255,255,255, 0.392) , 636px 212px 0 0 rgba(255,255,255, 0.997) , 672px 540px 0 0 rgba(255,255,255, 0.632) , 1118px 1649px 0 0 rgba(255,255,255, 0.377) , 433px 647px 0 0 rgba(255,255,255, 0.902) , 1200px 1737px 0 0 rgba(255,255,255, 0.262) , 1258px 143px 0 0 rgba(255,255,255, 0.729) , 1603px 1364px 0 0 rgba(255,255,255, 0.192) , 66px 1756px 0 0 rgba(255,255,255, 0.681) , 946px 263px 0 0 rgba(255,255,255, 0.105) , 1216px 1082px 0 0 rgba(255,255,255, 0.287) , 6px 1143px 0 0 rgba(255,255,255, 0.017) , 1631px 126px 0 0 rgba(255,255,255, 0.449) , 357px 1565px 0 0 rgba(255,255,255, 0.163) , 1752px 261px 0 0 rgba(255,255,255, 0.423) , 1247px 1631px 0 0 rgba(255,255,255, 0.312) , 320px 671px 0 0 rgba(255,255,255, 0.695) , 1375px 596px 0 0 rgba(255,255,255, 0.856) , 1456px 1340px 0 0 rgba(255,255,255, 0.564) , 447px 1044px 0 0 rgba(255,255,255, 0.623) , 1732px 447px 0 0 rgba(255,255,255, 0.216) , 174px 1509px 0 0 rgba(255,255,255, 0.398) , 16px 861px 0 0 rgba(255,255,255, 0.904) , 878px 1296px 0 0 rgba(255,255,255, 0.205) , 1725px 1483px 0 0 rgba(255,255,255, 0.704) , 255px 48px 0 0 rgba(255,255,255, 0.7) , 610px 1669px 0 0 rgba(255,255,255, 0.865) , 1044px 1251px 0 0 rgba(255,255,255, 0.98) , 884px 862px 0 0 rgba(255,255,255, 0.198) , 986px 545px 0 0 rgba(255,255,255, 0.379) , 1620px 217px 0 0 rgba(255,255,255, 0.159) , 383px 1763px 0 0 rgba(255,255,255, 0.518) , 595px 974px 0 0 rgba(255,255,255, 0.347) , 359px 14px 0 0 rgba(255,255,255, 0.863) , 95px 1385px 0 0 rgba(255,255,255, 0.011) , 411px 1030px 0 0 rgba(255,255,255, 0.038) , 345px 789px 0 0 rgba(255,255,255, 0.771) , 421px 460px 0 0 rgba(255,255,255, 0.133) , 972px 1160px 0 0 rgba(255,255,255, 0.342) , 597px 1061px 0 0 rgba(255,255,255, 0.781) , 1017px 1092px 0 0 rgba(255,255,255, 0.437); }
+        .warning { background: <?= $lightColor(); ?>; display: flex; align-content: center; padding: 10px; text-align: left; justify-content: center; }
+        .warning svg { height: 48px; width: 48px; margin-right: 10px; }
+        .container svg.wave { position: absolute; bottom: -2px; left: 0; z-index: 1; }
+        .container .logo { margin-bottom: 1em; }
+        .container .logo svg { fill: hsl(<?= $hue; ?>, 20%, 26%); }
+        .welcome { padding-top: 4em; margin-bottom: 3em; }
+        .welcome small { display: block; font-size: 85%; }
+        .status { padding-bottom: 2em; }
+        .status code, .status .status-ready { display: none; }
+        .version { font-size: 34px; }
+        .check { background: <?= $darkColor(); ?>; border-radius: 20px; width: 50px; display: flex; align-items: center; justify-content: center; height: 37px; margin: 6px 8px 6px 6px; }
+        .check svg { fill: <?= $lightColor(); ?>; }
+        .status-ready { margin: 28px 0 0; }
+        .resources { margin: 0 auto; max-width: 1366px; padding: 2.5em 0 3.5em; }
+        .resources .row { margin-left: 30px; margin-right: 30px; display: flex; justify-content: space-evenly; }
+        .resource { padding: 0 10px; position: relative; }
+        .resource svg { height: 48px; width: 48px; fill: <?= $darkColor(); ?>; margin-bottom: 5px; }
+        .resource h2 { font-size: 18px; font-weight: normal; margin-bottom: 5px; }
+        .resource p { margin-top: 5px; }
+        .resource a { display: block; font-size: 14px; }
 
         @media (min-width: 768px) {
-            #wrapper { width: 80%; margin: 2em auto; }
-            #icon-book { display: inline-block; }
-            #status a, #next a { display: block; }
-
             @-webkit-keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
             @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } }
-            .sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards;}
+            .sf-toolbar { opacity: 0; -webkit-animation: fade-in 1s .2s forwards; animation: fade-in 1s .2s forwards; z-index: 99999; }
+
+            body { font-size: 20px; }
+            .warning { text-align: center; }
+            .warning svg { height: 32px; width: 32px; }
+            .resources .row { margin-left: 50px; margin-right: 50px; }
+            .resource { padding: 0 30px; }
+
+            .status { padding-bottom: 4em; }
+            .status code { display: inline-flex; }
+            .status .status-ready { display: block; }
+
+            .resource svg { height: 64px; width: 64px; }
+            .resource h2 { font-size: 22px; }
+            .resource a { font-size: 16px; margin-top: 0; }
         }
     </style>
 </head>
 <body>
-<div id="wrapper">
-    <div id="container">
-        <div id="welcome">
-            <h1><span>Welcome to</span> Symfony <?php echo $version; ?></h1>
-        </div>
+<div class="wrapper">
+    <div class="warning">
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="32"><path fill="currentColor" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z" class=""></path></svg>
+        You're seeing this page because you haven't configured any homepage URL and <a href="https://symfony.com/doc/<?= $docVersion; ?>/debug-mode" style="padding: 0 7px">debug mode</a> is enabled.
+    </div>
 
-        <div id="status">
-            <p>
-                <svg id="icon-status" width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z" fill="#759E1A"/></svg>
+    <div class="container">
+        <div class="welcome">
+            <div class="logo">
+                <svg xmlns="http://www.w3.org/2000/svg" width="112.165" height="112.166"><path d="M112.165 56.079c0 30.976-25.109 56.087-56.084 56.087C25.108 112.166 0 87.055 0 56.079 0 25.108 25.107 0 56.081 0c30.975 0 56.084 25.108 56.084 56.079z" style="fill: <?= $lightColor(); ?>;"/><path d="M80.603 20.75c-5.697.195-10.67 3.34-14.373 7.68-4.1 4.765-6.824 10.411-8.791 16.18-3.514-2.882-6.223-6.611-11.864-8.233-4.359-1.253-8.936-.737-13.146 2.399-1.992 1.489-3.367 3.738-4.02 5.859-1.692 5.498 1.778 10.396 3.354 12.151l3.447 3.691c.709.725 2.422 2.613 1.584 5.319-.9 2.947-4.451 4.85-8.092 3.731-1.627-.499-3.963-1.71-3.439-3.413.215-.699.715-1.225.984-1.821.244-.521.363-.907.438-1.14.665-2.169-.245-4.994-2.57-5.713-2.171-.666-4.391-.138-5.252 2.655-.977 3.174.543 8.935 8.681 11.441 9.535 2.935 17.597-2.259 18.742-9.026.721-4.239-1.195-7.392-4.701-11.441l-2.859-3.163c-1.73-1.729-2.324-4.677-.533-6.942 1.512-1.912 3.664-2.726 7.191-1.768 5.15 1.396 7.443 4.969 11.271 7.851-1.578 5.187-2.613 10.392-3.547 15.059l-.574 3.481c-2.736 14.352-4.826 22.235-10.256 26.76-1.094.779-2.658 1.943-5.014 2.027-1.238.037-1.637-.814-1.654-1.186-.027-.865.703-1.264 1.188-1.652.727-.396 1.824-1.053 1.748-3.156-.078-2.484-2.137-4.639-5.111-4.541-2.229.075-5.625 2.171-5.497 6.011.131 3.967 3.827 6.938 9.401 6.75 2.979-.102 9.633-1.312 16.188-9.105 7.631-8.935 9.766-19.175 11.372-26.671l1.793-9.897c.992.119 2.059.2 3.217.228 9.504.201 14.256-4.72 14.328-8.302.049-2.167-1.42-4.302-3.479-4.251-1.471.041-3.32 1.022-3.762 3.057-.436 1.995 3.023 3.798.32 5.553-1.92 1.242-5.361 2.116-10.209 1.407l.881-4.872c1.799-9.238 4.018-20.6 12.436-20.878.615-.029 2.857.026 2.91 1.512.014.493-.109.623-.689 1.757-.592.884-.814 1.64-.785 2.504.08 2.356 1.873 3.908 4.471 3.818 3.473-.116 4.469-3.496 4.412-5.233-.146-4.085-4.449-6.665-10.14-6.477z"/></svg>
+            </div>
+            <h1><small>Welcome to</small> Symfony <span class="version"><?= $version; ?></span></h1>
+        </div>
 
-                Your application is now ready. You can start working on it at:<br>
-                <code><?php echo $baseDir; ?></code>
-            </p>
+        <div class="status">
+            <code>
+                <span class="check">
+                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
+                </span>
+                <span><?= $projectDir; ?></span>
+            </code>
+            <p class="status-ready">Your application is now ready and you can start working on it.</p>
         </div>
 
-        <div id="next">
-            <h2>What's next?</h2>
-            <p>
-                <svg id="icon-book" xmlns="http://www.w3.org/2000/svg" viewBox="-12.5 9 64 64"><path fill="#AAA" d="M6.8 40.8c2.4.8 4.5-.7 4.9-2.5.2-1.2-.3-2.1-1.3-3.2l-.8-.8c-.4-.5-.6-1.3-.2-1.9.4-.5.9-.8 1.8-.5 1.3.4 1.9 1.3 2.9 2.2-.4 1.4-.7 2.9-.9 4.2l-.2 1c-.7 4-1.3 6.2-2.7 7.5-.3.3-.7.5-1.3.6-.3 0-.4-.3-.4-.3 0-.3.2-.3.3-.4.2-.1.5-.3.4-.8 0-.7-.6-1.3-1.3-1.3-.6 0-1.4.6-1.4 1.7s1 1.9 2.4 1.8c.8 0 2.5-.3 4.2-2.5 2-2.5 2.5-5.4 2.9-7.4l.5-2.8c.3 0 .5.1.8.1 2.4.1 3.7-1.3 3.7-2.3 0-.6-.3-1.2-.9-1.2-.4 0-.8.3-1 .8-.1.6.8 1.1.1 1.5-.5.3-1.4.6-2.7.4l.3-1.3c.5-2.6 1-5.7 3.2-5.8.2 0 .8 0 .8.4 0 .2 0 .2-.2.5s-.3.4-.2.7c0 .7.5 1.1 1.2 1.1.9 0 1.2-1 1.2-1.4 0-1.2-1.2-1.8-2.6-1.8-1.5.1-2.8.9-3.7 2.1-1.1 1.3-1.8 2.9-2.3 4.5-.9-.8-1.6-1.8-3.1-2.3-1.1-.7-2.3-.5-3.4.3-.5.4-.8 1-1 1.6-.4 1.5.4 2.9.8 3.4l.9 1c.2.2.6.8.4 1.5-.3.8-1.2 1.3-2.1 1-.4-.2-1-.5-.9-.9.1-.2.2-.3.3-.5s.1-.3.1-.3c.2-.6-.1-1.4-.7-1.6-.6-.2-1.2 0-1.3.8 0 .7.4 2.3 2.5 3.1zm39.3-19.9c0-4.2-3.2-7.5-7.1-7.5h-3.8c-.4-2.6-2.5-4.4-5-4.4l-32.5.1c-2.8.1-4.9 2.4-4.9 5.4l.2 44.1c0 4.8 8.1 13.9 11.6 14.1l34.7-.1c3.9 0 7-3.4 7-7.6l-.2-44.1zM-.3 36.4c0-8.6 6.5-15.6 14.5-15.6s14.5 7 14.5 15.6S22.1 52 14.2 52C6.1 52-.3 45-.3 36.4zm42.4 28.7c0 1.8-1.5 3.1-3.1 3.1H4.6c-.7 0-3-1.8-4.5-4.4h30.4c2.8 0 5-2.4 5-5.4V17.9h3.7c1.6 0 2.9 1.4 2.9 3.1v44.1z"/></svg>
+        <svg style="pointer-events: none" class="wave" width="100%" height="50px" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 75"><defs><style>.a{fill:none}.b{clip-path:url(#a)}.c,.d {fill: <?= $lightColor(); ?>}.d{opacity:0.5;isolation:isolate;}</style><clipPath id="a"><rect class="a" width="1920" height="75"></rect></clipPath></defs><g class="b"><path class="c" d="M1963,327H-105V65A2647.49,2647.49,0,0,1,431,19c217.7,3.5,239.6,30.8,470,36,297.3,6.7,367.5-36.2,642-28a2511.41,2511.41,0,0,1,420,48"></path></g><g class="b"><path class="d" d="M-127,404H1963V44c-140.1-28-343.3-46.7-566,22-75.5,23.3-118.5,45.9-162,64-48.6,20.2-404.7,128-784,0C355.2,97.7,341.6,78.3,235,50,86.6,10.6-41.8,6.9-127,10"></path></g><g class="b"><path class="d" d="M1979,462-155,446V106C251.8,20.2,576.6,15.9,805,30c167.4,10.3,322.3,32.9,680,56,207,13.4,378,20.3,494,24"></path></g><g class="b"><path class="d" d="M1998,484H-243V100c445.8,26.8,794.2-4.1,1035-39,141-20.4,231.1-40.1,378-45,349.6-11.6,636.7,73.8,828,150"></path></g></svg>
+    </div>
 
-                Read the documentation to learn
-                <a href="https://symfony.com/doc/<?php echo $docVersion; ?>/page_creation.html">
-                    How to create your first page in Symfony
+    <div class="resources">
+        <div class="row">
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 11.55C9.64 9.35 6.48 8 3 8v11c3.48 0 6.64 1.35 9 3.55 2.36-2.19 5.52-3.55 9-3.55V8c-3.48 0-6.64 1.35-9 3.55zM12 8c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z"/></svg>
+                <h2>Documentation</h2>
+                <a href="https://symfony.com/doc/<?= $docVersion; ?>/index.html">
+                    Guides, components, references
+                </a>
+            </div>
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>
+                <h2>Tutorials</h2>
+                <a href="https://symfony.com/doc/<?= $docVersion; ?>/page_creation.html">
+                    Create your first page
                 </a>
-            </p>
+            </div>
+            <div class="resource">
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>
+                <h2>Community</h2>
+                <a href="https://symfony.com/community">
+                    Connect, get help, or contribute
+                </a>
+            </div>
         </div>
     </div>
-    <div id="comment">
-        <p>
-            You're seeing this page because debug mode is enabled and you haven't configured any homepage URL.
-        </p>
-    </div>
 </div>
 </body>
 </html>
diff --git a/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php b/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
deleted file mode 100644
index 46dcee21..00000000
--- a/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Bundle;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle\ExtensionNotValidBundle;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\ExtensionPresentBundle;
-
-class BundleTest extends TestCase
-{
-    public function testGetContainerExtension()
-    {
-        $bundle = new ExtensionPresentBundle();
-
-        $this->assertInstanceOf(
-            'Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\DependencyInjection\ExtensionPresentExtension',
-            $bundle->getContainerExtension()
-        );
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetContainerExtensionWithInvalidClass()
-    {
-        $this->expectException('LogicException');
-        $this->expectExceptionMessage('must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface');
-        $bundle = new ExtensionNotValidBundle();
-        $bundle->getContainerExtension();
-    }
-
-    public function testBundleNameIsGuessedFromClass()
-    {
-        $bundle = new GuessedNameBundle();
-
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Bundle', $bundle->getNamespace());
-        $this->assertSame('GuessedNameBundle', $bundle->getName());
-    }
-
-    public function testBundleNameCanBeExplicitlyProvided()
-    {
-        $bundle = new NamedBundle();
-
-        $this->assertSame('ExplicitlyNamedBundle', $bundle->getName());
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Bundle', $bundle->getNamespace());
-        $this->assertSame('ExplicitlyNamedBundle', $bundle->getName());
-    }
-}
-
-class NamedBundle extends Bundle
-{
-    public function __construct()
-    {
-        $this->name = 'ExplicitlyNamedBundle';
-    }
-}
-
-class GuessedNameBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php b/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
deleted file mode 100644
index b97559e3..00000000
--- a/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheClearer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer;
-
-class ChainCacheClearerTest extends TestCase
-{
-    protected static $cacheDir;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheDir = tempnam(sys_get_temp_dir(), 'sf_cache_clearer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheDir);
-    }
-
-    public function testInjectClearersInConstructor()
-    {
-        $clearer = $this->getMockClearer();
-        $clearer
-            ->expects($this->once())
-            ->method('clear');
-
-        $chainClearer = new ChainCacheClearer([$clearer]);
-        $chainClearer->clear(self::$cacheDir);
-    }
-
-    protected function getMockClearer()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface')->getMock();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php b/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php
deleted file mode 100644
index cdf4a97d..00000000
--- a/vendor/symfony/http-kernel/Tests/CacheClearer/Psr6CacheClearerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheClearer;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Cache\CacheItemPoolInterface;
-use Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer;
-
-class Psr6CacheClearerTest extends TestCase
-{
-    public function testClearPoolsInjectedInConstructor()
-    {
-        $pool = $this->getMockBuilder(CacheItemPoolInterface::class)->getMock();
-        $pool
-            ->expects($this->once())
-            ->method('clear');
-
-        (new Psr6CacheClearer(['pool' => $pool]))->clear('');
-    }
-
-    public function testClearPool()
-    {
-        $pool = $this->getMockBuilder(CacheItemPoolInterface::class)->getMock();
-        $pool
-            ->expects($this->once())
-            ->method('clear');
-
-        (new Psr6CacheClearer(['pool' => $pool]))->clearPool('pool');
-    }
-
-    public function testClearPoolThrowsExceptionOnUnreferencedPool()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Cache pool not found: unknown');
-        (new Psr6CacheClearer())->clearPool('unknown');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php b/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php
deleted file mode 100644
index 4266c0a1..00000000
--- a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerAggregateTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheWarmer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate;
-
-class CacheWarmerAggregateTest extends TestCase
-{
-    protected static $cacheDir;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheDir = tempnam(sys_get_temp_dir(), 'sf_cache_warmer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheDir);
-    }
-
-    public function testInjectWarmersUsingConstructor()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->once())
-            ->method('warmUp');
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    public function testWarmupDoesCallWarmupOnOptionalWarmersWhenEnableOptionalWarmersIsEnabled()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->never())
-            ->method('isOptional');
-        $warmer
-            ->expects($this->once())
-            ->method('warmUp');
-
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->enableOptionalWarmers();
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    public function testWarmupDoesNotCallWarmupOnOptionalWarmersWhenEnableOptionalWarmersIsNotEnabled()
-    {
-        $warmer = $this->getCacheWarmerMock();
-        $warmer
-            ->expects($this->once())
-            ->method('isOptional')
-            ->willReturn(true);
-        $warmer
-            ->expects($this->never())
-            ->method('warmUp');
-
-        $aggregate = new CacheWarmerAggregate([$warmer]);
-        $aggregate->warmUp(self::$cacheDir);
-    }
-
-    protected function getCacheWarmerMock()
-    {
-        $warmer = $this->getMockBuilder('Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        return $warmer;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php b/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
deleted file mode 100644
index b5acb126..00000000
--- a/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\CacheWarmer;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmer;
-
-class CacheWarmerTest extends TestCase
-{
-    protected static $cacheFile;
-
-    public static function setUpBeforeClass(): void
-    {
-        self::$cacheFile = tempnam(sys_get_temp_dir(), 'sf_cache_warmer_dir');
-    }
-
-    public static function tearDownAfterClass(): void
-    {
-        @unlink(self::$cacheFile);
-    }
-
-    public function testWriteCacheFileCreatesTheFile()
-    {
-        $warmer = new TestCacheWarmer(self::$cacheFile);
-        $warmer->warmUp(\dirname(self::$cacheFile));
-
-        $this->assertFileExists(self::$cacheFile);
-    }
-
-    public function testWriteNonWritableCacheFileThrowsARuntimeException()
-    {
-        $this->expectException('RuntimeException');
-        $nonWritableFile = '/this/file/is/very/probably/not/writable';
-        $warmer = new TestCacheWarmer($nonWritableFile);
-        $warmer->warmUp(\dirname($nonWritableFile));
-    }
-}
-
-class TestCacheWarmer extends CacheWarmer
-{
-    protected $file;
-
-    public function __construct($file)
-    {
-        $this->file = $file;
-    }
-
-    public function warmUp($cacheDir)
-    {
-        $this->writeCacheFile($this->file, 'content');
-    }
-
-    public function isOptional()
-    {
-        return false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php b/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
deleted file mode 100644
index 72b38c67..00000000
--- a/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Config;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Config\FileLocator;
-
-class FileLocatorTest extends TestCase
-{
-    public function testLocate()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel
-            ->expects($this->atLeastOnce())
-            ->method('locateResource')
-            ->with('@BundleName/some/path', null, true)
-            ->willReturn('/bundle-name/some/path');
-        $locator = new FileLocator($kernel);
-        $this->assertEquals('/bundle-name/some/path', $locator->locate('@BundleName/some/path'));
-
-        $kernel
-            ->expects($this->never())
-            ->method('locateResource');
-        $this->expectException('LogicException');
-        $locator->locate('/some/path');
-    }
-
-    public function testLocateWithGlobalResourcePath()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel
-            ->expects($this->atLeastOnce())
-            ->method('locateResource')
-            ->with('@BundleName/some/path', '/global/resource/path', false);
-
-        $locator = new FileLocator($kernel, '/global/resource/path');
-        $locator->locate('@BundleName/some/path', null, false);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php
deleted file mode 100644
index 4f85b0f3..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/NotTaggedControllerValueResolverTest.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\NotTaggedControllerValueResolver;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-class NotTaggedControllerValueResolverTest extends TestCase
-{
-    public function testDoSupportWhenControllerDoNotExists()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'my_controller']);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-    }
-
-    public function testDoNotSupportWhenControllerExists()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new \stdClass();
-                    },
-                ]);
-            },
-        ]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testDoNotSupportEmptyController()
-    {
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => '']);
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testController()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerWithATrailingBackSlash()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => '\\App\\Controller\\Mine::method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerWithMethodNameStartUppercase()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::Method']);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    public function testControllerNameIsAnArray()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Could not resolve argument $dummy of "App\Controller\Mine::method()", maybe you forgot to register the controller as a service or missed tagging it with the "controller.service_arguments"?');
-        $resolver = new NotTaggedControllerValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', \stdClass::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => ['App\\Controller\\Mine', 'method']]);
-        $this->assertTrue($resolver->supports($request, $argument));
-        $resolver->resolve($request, $argument);
-    }
-
-    private function requestWithAttributes(array $attributes)
-    {
-        $request = Request::create('/');
-        foreach ($attributes as $name => $value) {
-            $request->attributes->set($name, $value);
-        }
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
deleted file mode 100644
index 4036727b..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-
-class ServiceValueResolverTest extends TestCase
-{
-    public function testDoNotSupportWhenControllerDoNotExists()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([]));
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-        $request = $this->requestWithAttributes(['_controller' => 'my_controller']);
-
-        $this->assertFalse($resolver->supports($request, $argument));
-    }
-
-    public function testExistingController()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testExistingControllerWithATrailingBackSlash()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => '\\App\\Controller\\Mine::method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testExistingControllerWithMethodNameStartUppercase()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-        $request = $this->requestWithAttributes(['_controller' => 'App\\Controller\\Mine::Method']);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testControllerNameIsAnArray()
-    {
-        $resolver = new ServiceValueResolver(new ServiceLocator([
-            'App\\Controller\\Mine::method' => function () {
-                return new ServiceLocator([
-                    'dummy' => function () {
-                        return new DummyService();
-                    },
-                ]);
-            },
-        ]));
-
-        $request = $this->requestWithAttributes(['_controller' => ['App\\Controller\\Mine', 'method']]);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-
-        $this->assertTrue($resolver->supports($request, $argument));
-        $this->assertYieldEquals([new DummyService()], $resolver->resolve($request, $argument));
-    }
-
-    public function testErrorIsTruncated()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Cannot autowire argument $dummy of "Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DummyController::index()": it references class "Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DummyService" but no such service exists.');
-        $container = new ContainerBuilder();
-        $container->addCompilerPass(new RegisterControllerArgumentLocatorsPass());
-
-        $container->register('argument_resolver.service', ServiceValueResolver::class)->addArgument(null)->setPublic(true);
-        $container->register(DummyController::class)->addTag('controller.service_arguments')->setPublic(true);
-
-        $container->compile();
-
-        $request = $this->requestWithAttributes(['_controller' => [DummyController::class, 'index']]);
-        $argument = new ArgumentMetadata('dummy', DummyService::class, false, false, null);
-        $container->get('argument_resolver.service')->resolve($request, $argument)->current();
-    }
-
-    private function requestWithAttributes(array $attributes)
-    {
-        $request = Request::create('/');
-
-        foreach ($attributes as $name => $value) {
-            $request->attributes->set($name, $value);
-        }
-
-        return $request;
-    }
-
-    private function assertYieldEquals(array $expected, \Generator $generator)
-    {
-        $args = [];
-        foreach ($generator as $arg) {
-            $args[] = $arg;
-        }
-
-        $this->assertEquals($expected, $args);
-    }
-}
-
-class DummyService
-{
-}
-
-class DummyController
-{
-    public function index(DummyService $dummy)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php
deleted file mode 100644
index 3c2cc3f7..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/TraceableValueResolverTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\TraceableValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class TraceableValueResolverTest extends TestCase
-{
-    public function testTimingsInSupports()
-    {
-        $stopwatch = new Stopwatch();
-        $resolver = new TraceableValueResolver(new ResolverStub(), $stopwatch);
-        $argument = new ArgumentMetadata('dummy', 'string', false, false, null);
-        $request = new Request();
-
-        $this->assertTrue($resolver->supports($request, $argument));
-
-        $event = $stopwatch->getEvent(ResolverStub::class.'::supports');
-        $this->assertCount(1, $event->getPeriods());
-    }
-
-    public function testTimingsInResolve()
-    {
-        $stopwatch = new Stopwatch();
-        $resolver = new TraceableValueResolver(new ResolverStub(), $stopwatch);
-        $argument = new ArgumentMetadata('dummy', 'string', false, false, null);
-        $request = new Request();
-
-        $iterable = $resolver->resolve($request, $argument);
-
-        foreach ($iterable as $index => $resolved) {
-            $event = $stopwatch->getEvent(ResolverStub::class.'::resolve');
-            $this->assertTrue($event->isStarted());
-            $this->assertEmpty($event->getPeriods());
-            switch ($index) {
-                case 0:
-                    $this->assertEquals('first', $resolved);
-                    break;
-                case 1:
-                    $this->assertEquals('second', $resolved);
-                    break;
-            }
-        }
-
-        $event = $stopwatch->getEvent(ResolverStub::class.'::resolve');
-        $this->assertCount(1, $event->getPeriods());
-    }
-}
-
-class ResolverStub implements ArgumentValueResolverInterface
-{
-    public function supports(Request $request, ArgumentMetadata $argument)
-    {
-        return true;
-    }
-
-    public function resolve(Request $request, ArgumentMetadata $argument)
-    {
-        yield 'first';
-        yield 'second';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
deleted file mode 100644
index 8ee9108b..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingRequest;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingSession;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\NullableController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\VariadicController;
-
-class ArgumentResolverTest extends TestCase
-{
-    /** @var ArgumentResolver */
-    private static $resolver;
-
-    public static function setUpBeforeClass(): void
-    {
-        $factory = new ArgumentMetadataFactory();
-
-        self::$resolver = new ArgumentResolver($factory);
-    }
-
-    public function testDefaultState()
-    {
-        $this->assertEquals(self::$resolver, new ArgumentResolver());
-        $this->assertNotEquals(self::$resolver, new ArgumentResolver(null, [new RequestAttributeValueResolver()]));
-    }
-
-    public function testGetArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = [new self(), 'controllerWithFoo'];
-
-        $this->assertEquals(['foo'], self::$resolver->getArguments($request, $controller), '->getArguments() returns an array of arguments for the controller method');
-    }
-
-    public function testGetArgumentsReturnsEmptyArrayWhenNoArguments()
-    {
-        $request = Request::create('/');
-        $controller = [new self(), 'controllerWithoutArguments'];
-
-        $this->assertEquals([], self::$resolver->getArguments($request, $controller), '->getArguments() returns an empty array if the method takes no arguments');
-    }
-
-    public function testGetArgumentsUsesDefaultValue()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = [new self(), 'controllerWithFooAndDefaultBar'];
-
-        $this->assertEquals(['foo', null], self::$resolver->getArguments($request, $controller), '->getArguments() uses default values if present');
-    }
-
-    public function testGetArgumentsOverrideDefaultValueByRequestAttribute()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'bar');
-        $controller = [new self(), 'controllerWithFooAndDefaultBar'];
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller), '->getArguments() overrides default values if provided in the request attributes');
-    }
-
-    public function testGetArgumentsFromClosure()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = function ($foo) {};
-
-        $this->assertEquals(['foo'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsUsesDefaultValueFromClosure()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = function ($foo, $bar = 'bar') {};
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFromInvokableObject()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $controller = new self();
-
-        $this->assertEquals(['foo', null], self::$resolver->getArguments($request, $controller));
-
-        // Test default bar overridden by request attribute
-        $request->attributes->set('bar', 'bar');
-
-        $this->assertEquals(['foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFromFunctionName()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('foobar', 'foobar');
-        $controller = __NAMESPACE__.'\controller_function';
-
-        $this->assertEquals(['foo', 'foobar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetArgumentsFailsOnUnresolvedValue()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('foobar', 'foobar');
-        $controller = [new self(), 'controllerWithFooBarFoobar'];
-
-        try {
-            self::$resolver->getArguments($request, $controller);
-            $this->fail('->getArguments() throws a \RuntimeException exception if it cannot determine the argument value');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('\RuntimeException', $e, '->getArguments() throws a \RuntimeException exception if it cannot determine the argument value');
-        }
-    }
-
-    public function testGetArgumentsInjectsRequest()
-    {
-        $request = Request::create('/');
-        $controller = [new self(), 'controllerWithRequest'];
-
-        $this->assertEquals([$request], self::$resolver->getArguments($request, $controller), '->getArguments() injects the request');
-    }
-
-    public function testGetArgumentsInjectsExtendingRequest()
-    {
-        $request = ExtendingRequest::create('/');
-        $controller = [new self(), 'controllerWithExtendingRequest'];
-
-        $this->assertEquals([$request], self::$resolver->getArguments($request, $controller), '->getArguments() injects the request when extended');
-    }
-
-    public function testGetVariadicArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', ['foo', 'bar']);
-        $controller = [new VariadicController(), 'action'];
-
-        $this->assertEquals(['foo', 'foo', 'bar'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetVariadicArgumentsWithoutArrayInRequest()
-    {
-        $this->expectException('InvalidArgumentException');
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'foo');
-        $controller = [new VariadicController(), 'action'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetArgumentWithoutArray()
-    {
-        $this->expectException('InvalidArgumentException');
-        $factory = new ArgumentMetadataFactory();
-        $valueResolver = $this->getMockBuilder(ArgumentValueResolverInterface::class)->getMock();
-        $resolver = new ArgumentResolver($factory, [$valueResolver]);
-
-        $valueResolver->expects($this->any())->method('supports')->willReturn(true);
-        $valueResolver->expects($this->any())->method('resolve')->willReturn('foo');
-
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', 'foo');
-        $controller = [$this, 'controllerWithFooAndDefaultBar'];
-        $resolver->getArguments($request, $controller);
-    }
-
-    public function testIfExceptionIsThrownWhenMissingAnArgument()
-    {
-        $this->expectException('RuntimeException');
-        $request = Request::create('/');
-        $controller = [$this, 'controllerWithFoo'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetNullableArguments()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('foo', 'foo');
-        $request->attributes->set('bar', new \stdClass());
-        $request->attributes->set('mandatory', 'mandatory');
-        $controller = [new NullableController(), 'action'];
-
-        $this->assertEquals(['foo', new \stdClass(), 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetNullableArgumentsWithDefaults()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('mandatory', 'mandatory');
-        $controller = [new NullableController(), 'action'];
-
-        $this->assertEquals([null, null, 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArguments()
-    {
-        $session = new Session(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithSession'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArgumentsWithExtendedSession()
-    {
-        $session = new ExtendingSession(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionArgumentsWithInterface()
-    {
-        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithSessionInterface'];
-
-        $this->assertEquals([$session], self::$resolver->getArguments($request, $controller));
-    }
-
-    public function testGetSessionMissMatchWithInterface()
-    {
-        $this->expectException('RuntimeException');
-        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetSessionMissMatchWithImplementation()
-    {
-        $this->expectException('RuntimeException');
-        $session = new Session(new MockArraySessionStorage());
-        $request = Request::create('/');
-        $request->setSession($session);
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function testGetSessionMissMatchOnNull()
-    {
-        $this->expectException('RuntimeException');
-        $request = Request::create('/');
-        $controller = [$this, 'controllerWithExtendingSession'];
-
-        self::$resolver->getArguments($request, $controller);
-    }
-
-    public function __invoke($foo, $bar = null)
-    {
-    }
-
-    public function controllerWithFoo($foo)
-    {
-    }
-
-    public function controllerWithoutArguments()
-    {
-    }
-
-    protected function controllerWithFooAndDefaultBar($foo, $bar = null)
-    {
-    }
-
-    protected function controllerWithFooBarFoobar($foo, $bar, $foobar)
-    {
-    }
-
-    protected function controllerWithRequest(Request $request)
-    {
-    }
-
-    protected function controllerWithExtendingRequest(ExtendingRequest $request)
-    {
-    }
-
-    protected function controllerWithSession(Session $session)
-    {
-    }
-
-    protected function controllerWithSessionInterface(SessionInterface $session)
-    {
-    }
-
-    protected function controllerWithExtendingSession(ExtendingSession $session)
-    {
-    }
-}
-
-function controller_function($foo, $foobar)
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
deleted file mode 100644
index 956adb96..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
+++ /dev/null
@@ -1,259 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use Psr\Container\ContainerInterface;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ContainerControllerResolver;
-
-class ContainerControllerResolverTest extends ControllerResolverTest
-{
-    public function testGetControllerServiceWithSingleColon()
-    {
-        $service = new ControllerTestService('foo');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true);
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo:action');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function testGetControllerService()
-    {
-        $service = new ControllerTestService('foo');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true);
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo::action');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function testGetControllerInvokableService()
-    {
-        $service = new InvokableControllerService('bar');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('foo')
-            ->willReturn(true)
-        ;
-        $container->expects($this->once())
-            ->method('get')
-            ->with('foo')
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'foo');
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller);
-    }
-
-    public function testGetControllerInvokableServiceWithClassNameAsName()
-    {
-        $service = new InvokableControllerService('bar');
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())
-            ->method('has')
-            ->with(InvokableControllerService::class)
-            ->willReturn(true)
-        ;
-        $container->expects($this->once())
-            ->method('get')
-            ->with(InvokableControllerService::class)
-            ->willReturn($service)
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', InvokableControllerService::class);
-
-        $controller = $resolver->getController($request);
-
-        $this->assertSame($service, $controller);
-    }
-
-    /**
-     * @dataProvider getControllers
-     */
-    public function testInstantiateControllerWhenControllerStartsWithABackslash($controller)
-    {
-        $service = new ControllerTestService('foo');
-        $class = ControllerTestService::class;
-
-        $container = $this->createMockContainer();
-        $container->expects($this->once())->method('has')->with($class)->willReturn(true);
-        $container->expects($this->once())->method('get')->with($class)->willReturn($service);
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $controller);
-
-        $controller = $resolver->getController($request);
-
-        $this->assertInstanceOf(ControllerTestService::class, $controller[0]);
-        $this->assertSame('action', $controller[1]);
-    }
-
-    public function getControllers()
-    {
-        return [
-            ['\\'.ControllerTestService::class.'::action'],
-            ['\\'.ControllerTestService::class.':action'],
-        ];
-    }
-
-    public function testExceptionWhenUsingRemovedControllerServiceWithClassNameAsName()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?');
-        $container = $this->getMockBuilder(Container::class)->getMock();
-        $container->expects($this->once())
-            ->method('has')
-            ->with(ControllerTestService::class)
-            ->willReturn(false)
-        ;
-
-        $container->expects($this->atLeastOnce())
-            ->method('getRemovedIds')
-            ->with()
-            ->willReturn([ControllerTestService::class => true])
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [ControllerTestService::class, 'action']);
-
-        $resolver->getController($request);
-    }
-
-    public function testExceptionWhenUsingRemovedControllerService()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Controller "app.my_controller" cannot be fetched from the container because it is private. Did you forget to tag the service with "controller.service_arguments"?');
-        $container = $this->getMockBuilder(Container::class)->getMock();
-        $container->expects($this->once())
-            ->method('has')
-            ->with('app.my_controller')
-            ->willReturn(false)
-        ;
-
-        $container->expects($this->atLeastOnce())
-            ->method('getRemovedIds')
-            ->with()
-            ->willReturn(['app.my_controller' => true])
-        ;
-
-        $resolver = $this->createControllerResolver(null, $container);
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'app.my_controller');
-        $resolver->getController($request);
-    }
-
-    public function getUndefinedControllers()
-    {
-        $tests = parent::getUndefinedControllers();
-        $tests[0] = ['foo', \InvalidArgumentException::class, 'Controller "foo" does neither exist as service nor as class'];
-        $tests[1] = ['oof::bar', \InvalidArgumentException::class, 'Controller "oof" does neither exist as service nor as class'];
-        $tests[2] = [['oof', 'bar'], \InvalidArgumentException::class, 'Controller "oof" does neither exist as service nor as class'];
-        $tests[] = [
-            [ControllerTestService::class, 'action'],
-            \InvalidArgumentException::class,
-            'Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-        $tests[] = [
-            ControllerTestService::class.'::action',
-            \InvalidArgumentException::class, 'Controller "Symfony\Component\HttpKernel\Tests\Controller\ControllerTestService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-        $tests[] = [
-            InvokableControllerService::class,
-            \InvalidArgumentException::class,
-            'Controller "Symfony\Component\HttpKernel\Tests\Controller\InvokableControllerService" has required constructor arguments and does not exist in the container. Did you forget to define such a service?',
-        ];
-
-        return $tests;
-    }
-
-    protected function createControllerResolver(LoggerInterface $logger = null, ContainerInterface $container = null)
-    {
-        if (!$container) {
-            $container = $this->createMockContainer();
-        }
-
-        return new ContainerControllerResolver($container, $logger);
-    }
-
-    protected function createMockContainer()
-    {
-        return $this->getMockBuilder(ContainerInterface::class)->getMock();
-    }
-}
-
-class InvokableControllerService
-{
-    public function __construct($bar) // mandatory argument to prevent automatic instantiation
-    {
-    }
-
-    public function __invoke()
-    {
-    }
-}
-
-class ControllerTestService
-{
-    public function __construct($foo)
-    {
-    }
-
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php b/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
deleted file mode 100644
index 77ce524f..00000000
--- a/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Controller;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-
-class ControllerResolverTest extends TestCase
-{
-    public function testGetControllerWithoutControllerParameter()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())->method('warning')->with('Unable to look for the controller as the "_controller" parameter is missing.');
-        $resolver = $this->createControllerResolver($logger);
-
-        $request = Request::create('/');
-        $this->assertFalse($resolver->getController($request), '->getController() returns false when the request has no _controller attribute');
-    }
-
-    public function testGetControllerWithLambda()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $lambda = function () {});
-        $controller = $resolver->getController($request);
-        $this->assertSame($lambda, $controller);
-    }
-
-    public function testGetControllerWithObjectAndInvokeMethod()
-    {
-        $resolver = $this->createControllerResolver();
-        $object = new InvokableController();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $object);
-        $controller = $resolver->getController($request);
-        $this->assertSame($object, $controller);
-    }
-
-    public function testGetControllerWithObjectAndMethod()
-    {
-        $resolver = $this->createControllerResolver();
-        $object = new ControllerTest();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [$object, 'publicAction']);
-        $controller = $resolver->getController($request);
-        $this->assertSame([$object, 'publicAction'], $controller);
-    }
-
-    public function testGetControllerWithClassAndMethodAsArray()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', [ControllerTest::class, 'publicAction']);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(ControllerTest::class, $controller[0]);
-        $this->assertSame('publicAction', $controller[1]);
-    }
-
-    public function testGetControllerWithClassAndMethodAsString()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', ControllerTest::class.'::publicAction');
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(ControllerTest::class, $controller[0]);
-        $this->assertSame('publicAction', $controller[1]);
-    }
-
-    public function testGetControllerWithInvokableClass()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', InvokableController::class);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(InvokableController::class, $controller);
-    }
-
-    public function testGetControllerOnObjectWithoutInvokeMethod()
-    {
-        $this->expectException('InvalidArgumentException');
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', new \stdClass());
-        $resolver->getController($request);
-    }
-
-    public function testGetControllerWithFunction()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', 'Symfony\Component\HttpKernel\Tests\Controller\some_controller_function');
-        $controller = $resolver->getController($request);
-        $this->assertSame('Symfony\Component\HttpKernel\Tests\Controller\some_controller_function', $controller);
-    }
-
-    public function testGetControllerWithClosure()
-    {
-        $resolver = $this->createControllerResolver();
-
-        $closure = function () {
-            return 'test';
-        };
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $closure);
-        $controller = $resolver->getController($request);
-        $this->assertInstanceOf(\Closure::class, $controller);
-        $this->assertSame('test', $controller());
-    }
-
-    /**
-     * @dataProvider getStaticControllers
-     */
-    public function testGetControllerWithStaticController($staticController, $returnValue)
-    {
-        $resolver = $this->createControllerResolver();
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $staticController);
-        $controller = $resolver->getController($request);
-        $this->assertSame($staticController, $controller);
-        $this->assertSame($returnValue, $controller());
-    }
-
-    public function getStaticControllers()
-    {
-        return [
-            [TestAbstractController::class.'::staticAction', 'foo'],
-            [[TestAbstractController::class, 'staticAction'], 'foo'],
-            [PrivateConstructorController::class.'::staticAction', 'bar'],
-            [[PrivateConstructorController::class, 'staticAction'], 'bar'],
-        ];
-    }
-
-    /**
-     * @dataProvider getUndefinedControllers
-     */
-    public function testGetControllerWithUndefinedController($controller, $exceptionName = null, $exceptionMessage = null)
-    {
-        $resolver = $this->createControllerResolver();
-        $this->expectException($exceptionName);
-        $this->expectExceptionMessage($exceptionMessage);
-
-        $request = Request::create('/');
-        $request->attributes->set('_controller', $controller);
-        $resolver->getController($request);
-    }
-
-    public function getUndefinedControllers()
-    {
-        $controller = new ControllerTest();
-
-        return [
-            ['foo', \Error::class, 'Class \'foo\' not found'],
-            ['oof::bar', \Error::class, 'Class \'oof\' not found'],
-            [['oof', 'bar'], \Error::class, 'Class \'oof\' not found'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::staticsAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "staticsAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest", did you mean "staticAction"?'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::privateAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "privateAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::protectedAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "protectedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest::undefinedAction', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "undefinedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest". Available methods: "publicAction", "staticAction"'],
-            ['Symfony\Component\HttpKernel\Tests\Controller\ControllerTest', \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Controller class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" cannot be called without a method name. You need to implement "__invoke" or use one of the available methods: "publicAction", "staticAction".'],
-            [[$controller, 'staticsAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "staticsAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest", did you mean "staticAction"?'],
-            [[$controller, 'privateAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "privateAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            [[$controller, 'protectedAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Method "protectedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" should be public and non-abstract'],
-            [[$controller, 'undefinedAction'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Expected method "undefinedAction" on class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest". Available methods: "publicAction", "staticAction"'],
-            [$controller, \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Controller class "Symfony\Component\HttpKernel\Tests\Controller\ControllerTest" cannot be called without a method name. You need to implement "__invoke" or use one of the available methods: "publicAction", "staticAction".'],
-            [['a' => 'foo', 'b' => 'bar'], \InvalidArgumentException::class, 'The controller for URI "/" is not callable. Invalid array callable, expected [controller, method].'],
-        ];
-    }
-
-    protected function createControllerResolver(LoggerInterface $logger = null)
-    {
-        return new ControllerResolver($logger);
-    }
-}
-
-function some_controller_function($foo, $foobar)
-{
-}
-
-class ControllerTest
-{
-    public function __construct()
-    {
-    }
-
-    public function __toString()
-    {
-        return '';
-    }
-
-    public function publicAction()
-    {
-    }
-
-    private function privateAction()
-    {
-    }
-
-    protected function protectedAction()
-    {
-    }
-
-    public static function staticAction()
-    {
-    }
-}
-
-class InvokableController
-{
-    public function __invoke($foo, $bar = null)
-    {
-    }
-}
-
-abstract class TestAbstractController
-{
-    public static function staticAction()
-    {
-        return 'foo';
-    }
-}
-
-class PrivateConstructorController
-{
-    private function __construct()
-    {
-    }
-
-    public static function staticAction()
-    {
-        return 'bar';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php b/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
deleted file mode 100644
index f77b6759..00000000
--- a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\ControllerMetadata;
-
-use Fake\ImportedAndFake;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\BasicTypesController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\NullableController;
-use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\VariadicController;
-
-class ArgumentMetadataFactoryTest extends TestCase
-{
-    /**
-     * @var ArgumentMetadataFactory
-     */
-    private $factory;
-
-    protected function setUp(): void
-    {
-        $this->factory = new ArgumentMetadataFactory();
-    }
-
-    public function testSignature1()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature1']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', self::class, false, false, null),
-            new ArgumentMetadata('bar', 'array', false, false, null),
-            new ArgumentMetadata('baz', 'callable', false, false, null),
-        ], $arguments);
-    }
-
-    public function testSignature2()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature2']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', self::class, false, true, null, true),
-            new ArgumentMetadata('bar', __NAMESPACE__.'\FakeClassThatDoesNotExist', false, true, null, true),
-            new ArgumentMetadata('baz', 'Fake\ImportedAndFake', false, true, null, true),
-        ], $arguments);
-    }
-
-    public function testSignature3()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature3']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('bar', __NAMESPACE__.'\FakeClassThatDoesNotExist', false, false, null),
-            new ArgumentMetadata('baz', 'Fake\ImportedAndFake', false, false, null),
-        ], $arguments);
-    }
-
-    public function testSignature4()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature4']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', null, false, true, 'default'),
-            new ArgumentMetadata('bar', null, false, true, 500),
-            new ArgumentMetadata('baz', null, false, true, []),
-        ], $arguments);
-    }
-
-    public function testSignature5()
-    {
-        $arguments = $this->factory->createArgumentMetadata([$this, 'signature5']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'array', false, true, null, true),
-            new ArgumentMetadata('bar', null, false, false, null),
-        ], $arguments);
-    }
-
-    public function testVariadicSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new VariadicController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', null, false, false, null),
-            new ArgumentMetadata('bar', null, true, false, null),
-        ], $arguments);
-    }
-
-    public function testBasicTypesSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new BasicTypesController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'string', false, false, null),
-            new ArgumentMetadata('bar', 'int', false, false, null),
-            new ArgumentMetadata('baz', 'float', false, false, null),
-        ], $arguments);
-    }
-
-    public function testNullableTypesSignature()
-    {
-        $arguments = $this->factory->createArgumentMetadata([new NullableController(), 'action']);
-
-        $this->assertEquals([
-            new ArgumentMetadata('foo', 'string', false, false, null, true),
-            new ArgumentMetadata('bar', \stdClass::class, false, false, null, true),
-            new ArgumentMetadata('baz', 'string', false, true, 'value', true),
-            new ArgumentMetadata('mandatory', null, false, false, null, true),
-        ], $arguments);
-    }
-
-    private function signature1(self $foo, array $bar, callable $baz)
-    {
-    }
-
-    private function signature2(self $foo = null, FakeClassThatDoesNotExist $bar = null, ImportedAndFake $baz = null)
-    {
-    }
-
-    private function signature3(FakeClassThatDoesNotExist $bar, ImportedAndFake $baz)
-    {
-    }
-
-    private function signature4($foo = 'default', $bar = 500, $baz = [])
-    {
-    }
-
-    private function signature5(array $foo = null, $bar)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php b/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
deleted file mode 100644
index 5ce4b1f7..00000000
--- a/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\ControllerMetadata;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
-
-class ArgumentMetadataTest extends TestCase
-{
-    public function testWithBcLayerWithDefault()
-    {
-        $argument = new ArgumentMetadata('foo', 'string', false, true, 'default value');
-
-        $this->assertFalse($argument->isNullable());
-    }
-
-    public function testDefaultValueAvailable()
-    {
-        $argument = new ArgumentMetadata('foo', 'string', false, true, 'default value', true);
-
-        $this->assertTrue($argument->isNullable());
-        $this->assertTrue($argument->hasDefaultValue());
-        $this->assertSame('default value', $argument->getDefaultValue());
-    }
-
-    public function testDefaultValueUnavailable()
-    {
-        $this->expectException('LogicException');
-        $argument = new ArgumentMetadata('foo', 'string', false, false, null, false);
-
-        $this->assertFalse($argument->isNullable());
-        $this->assertFalse($argument->hasDefaultValue());
-        $argument->getDefaultValue();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log b/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
deleted file mode 100644
index 88b6840e..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
+++ /dev/null
@@ -1,4 +0,0 @@
-Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "Psr\Container\ContainerInterface"; reason: private alias.
-Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "Symfony\Component\DependencyInjection\ContainerInterface"; reason: private alias.
-Some custom logging message
-With ending :
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
deleted file mode 100644
index add100d4..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector;
-use Symfony\Component\HttpKernel\Kernel;
-
-class ConfigDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $kernel = new KernelForTest('test', true);
-        $c = new ConfigDataCollector();
-        $c->setKernel($kernel);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame('test', $c->getEnv());
-        $this->assertTrue($c->isDebug());
-        $this->assertSame('config', $c->getName());
-        $this->assertRegExp('~^'.preg_quote($c->getPhpVersion(), '~').'~', PHP_VERSION);
-        $this->assertRegExp('~'.preg_quote((string) $c->getPhpVersionExtra(), '~').'$~', PHP_VERSION);
-        $this->assertSame(PHP_INT_SIZE * 8, $c->getPhpArchitecture());
-        $this->assertSame(class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a', $c->getPhpIntlLocale());
-        $this->assertSame(date_default_timezone_get(), $c->getPhpTimezone());
-        $this->assertSame(Kernel::VERSION, $c->getSymfonyVersion());
-        $this->assertNull($c->getToken());
-        $this->assertSame(\extension_loaded('xdebug'), $c->hasXDebug());
-        $this->assertSame(\extension_loaded('Zend OPcache') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN), $c->hasZendOpcache());
-        $this->assertSame(\extension_loaded('apcu') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN), $c->hasApcu());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation The "$name" argument in method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::__construct()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The "$version" argument in method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::__construct()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::getApplicationName()" is deprecated since Symfony 4.2.
-     * @expectedDeprecation The method "Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector::getApplicationVersion()" is deprecated since Symfony 4.2.
-     */
-    public function testLegacy()
-    {
-        $c = new ConfigDataCollector('name', null);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame('name', $c->getApplicationName());
-        $this->assertNull($c->getApplicationVersion());
-    }
-}
-
-class KernelForTest extends Kernel
-{
-    public function registerBundles()
-    {
-    }
-
-    public function getBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
deleted file mode 100644
index ae79a3c9..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Tests\Fixtures\DataCollector\CloneVarDataCollector;
-use Symfony\Component\VarDumper\Cloner\VarCloner;
-
-class DataCollectorTest extends TestCase
-{
-    public function testCloneVarStringWithScheme()
-    {
-        $c = new CloneVarDataCollector('scheme://foo');
-        $c->collect(new Request(), new Response());
-        $cloner = new VarCloner();
-
-        $this->assertEquals($cloner->cloneVar('scheme://foo'), $c->getData());
-    }
-
-    public function testCloneVarExistingFilePath()
-    {
-        $c = new CloneVarDataCollector([$filePath = tempnam(sys_get_temp_dir(), 'clone_var_data_collector_')]);
-        $c->collect(new Request(), new Response());
-
-        $this->assertSame($filePath, $c->getData()[0]);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
deleted file mode 100644
index a40a4822..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\CliDumper;
-use Symfony\Component\VarDumper\Server\Connection;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpDataCollectorTest extends TestCase
-{
-    public function testDump()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector();
-
-        $this->assertSame('dump', $collector->getName());
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $this->assertSame(1, $collector->getDumpsCount());
-
-        $dump = $collector->getDumps('html');
-        $this->assertArrayHasKey('data', $dump[0]);
-        $dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
-        $dump[0]['data'] = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump[0]['data']);
-
-        $xDump = [
-            [
-                'data' => "<pre class=sf-dump id=sf-dump data-indent-pad=\"  \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
-                'name' => 'DumpDataCollectorTest.php',
-                'file' => __FILE__,
-                'line' => $line,
-                'fileExcerpt' => false,
-            ],
-        ];
-        $this->assertEquals($xDump, $dump);
-
-        $this->assertStringMatchesFormat('%a;a:%d:{i:0;a:5:{s:4:"data";%c:39:"Symfony\Component\VarDumper\Cloner\Data":%a', serialize($collector));
-        $this->assertSame(0, $collector->getDumpsCount());
-        $this->assertSame("O:60:\"Symfony\Component\HttpKernel\DataCollector\DumpDataCollector\":1:{s:7:\"\0*\0data\";a:2:{i:0;b:0;i:1;s:5:\"UTF-8\";}}", serialize($collector));
-    }
-
-    public function testDumpWithServerConnection()
-    {
-        $data = new Data([[123]]);
-
-        // Server is up, server dumper is used
-        $serverDumper = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock();
-        $serverDumper->expects($this->once())->method('write')->willReturn(true);
-
-        $collector = new DumpDataCollector(null, null, null, null, $serverDumper);
-        $collector->dump($data);
-
-        // Collect doesn't re-trigger dump
-        ob_start();
-        $collector->collect(new Request(), new Response());
-        $this->assertEmpty(ob_get_clean());
-        $this->assertStringMatchesFormat('%a;a:%d:{i:0;a:5:{s:4:"data";%c:39:"Symfony\Component\VarDumper\Cloner\Data":%a', serialize($collector));
-    }
-
-    public function testCollectDefault()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector();
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-
-        ob_start();
-        $collector->collect(new Request(), new Response());
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n123\n", $output);
-        $this->assertSame(1, $collector->getDumpsCount());
-        serialize($collector);
-    }
-
-    public function testCollectHtml()
-    {
-        $data = new Data([[123]]);
-
-        $collector = new DumpDataCollector(null, 'test://%f:%l');
-
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $file = __FILE__;
-        $xOutput = <<<EOTXT
-<pre class=sf-dump id=sf-dump data-indent-pad="  "><a href="test://{$file}:{$line}" title="{$file}"><span class=sf-dump-meta>DumpDataCollectorTest.php</span></a> on line <span class=sf-dump-meta>{$line}</span>:
-<span class=sf-dump-num>123</span>
-</pre>
-EOTXT;
-
-        ob_start();
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/html');
-        $collector->collect(new Request(), $response);
-        $output = ob_get_clean();
-        $output = preg_replace('#<(script|style).*?</\1>#s', '', $output);
-        $output = preg_replace('/sf-dump-\d+/', 'sf-dump', $output);
-
-        $this->assertSame($xOutput, trim($output));
-        $this->assertSame(1, $collector->getDumpsCount());
-        serialize($collector);
-    }
-
-    public function testFlush()
-    {
-        $data = new Data([[456]]);
-        $collector = new DumpDataCollector();
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-
-        ob_start();
-        $collector->__destruct();
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
-    }
-
-    public function testFlushNothingWhenDataDumperIsProvided()
-    {
-        $data = new Data([[456]]);
-        $dumper = new CliDumper('php://output');
-        $collector = new DumpDataCollector(null, null, null, null, $dumper);
-
-        ob_start();
-        $collector->dump($data);
-        $line = __LINE__ - 1;
-        $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
-
-        $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
-
-        ob_start();
-        $collector->__destruct();
-        $this->assertEmpty(ob_get_clean());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php
deleted file mode 100644
index 1e8d186c..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/ExceptionDataCollectorTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\FlattenException;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector;
-
-class ExceptionDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $e = new \Exception('foo', 500);
-        $c = new ExceptionDataCollector();
-        $flattened = FlattenException::create($e);
-        $trace = $flattened->getTrace();
-
-        $this->assertFalse($c->hasException());
-
-        $c->collect(new Request(), new Response(), $e);
-
-        $this->assertTrue($c->hasException());
-        $this->assertEquals($flattened, $c->getException());
-        $this->assertSame('foo', $c->getMessage());
-        $this->assertSame(500, $c->getCode());
-        $this->assertSame('exception', $c->getName());
-        $this->assertSame($trace, $c->getTrace());
-    }
-
-    public function testCollectWithoutException()
-    {
-        $c = new ExceptionDataCollector();
-        $c->collect(new Request(), new Response());
-
-        $this->assertFalse($c->hasException());
-    }
-
-    public function testReset()
-    {
-        $c = new ExceptionDataCollector();
-
-        $c->collect(new Request(), new Response(), new \Exception());
-        $c->reset();
-        $c->collect(new Request(), new Response());
-
-        $this->assertFalse($c->hasException());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php
deleted file mode 100644
index faa2c7ef..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/LoggerDataCollectorTest.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Debug\Exception\SilencedErrorContext;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-
-class LoggerDataCollectorTest extends TestCase
-{
-    public function testCollectWithUnexpectedFormat()
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->willReturn(123);
-        $logger->expects($this->exactly(2))->method('getLogs')->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/');
-        $c->lateCollect();
-        $compilerLogs = $c->getCompilerLogs()->getValue('message');
-
-        $this->assertSame([
-            ['message' => 'Removed service "Psr\Container\ContainerInterface"; reason: private alias.'],
-            ['message' => 'Removed service "Symfony\Component\DependencyInjection\ContainerInterface"; reason: private alias.'],
-        ], $compilerLogs['Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass']);
-
-        $this->assertSame([
-            ['message' => 'Some custom logging message'],
-            ['message' => 'With ending :'],
-        ], $compilerLogs['Unknown Compiler Pass']);
-    }
-
-    public function testWithMasterRequest()
-    {
-        $masterRequest = new Request();
-        $stack = new RequestStack();
-        $stack->push($masterRequest);
-
-        $logger = $this
-            ->getMockBuilder(DebugLoggerInterface::class)
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->with(null);
-        $logger->expects($this->exactly(2))->method('getLogs')->with(null)->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
-
-        $c->collect($masterRequest, new Response());
-        $c->lateCollect();
-    }
-
-    public function testWithSubRequest()
-    {
-        $masterRequest = new Request();
-        $subRequest = new Request();
-        $stack = new RequestStack();
-        $stack->push($masterRequest);
-        $stack->push($subRequest);
-
-        $logger = $this
-            ->getMockBuilder(DebugLoggerInterface::class)
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->with($subRequest);
-        $logger->expects($this->exactly(2))->method('getLogs')->with($subRequest)->willReturn([]);
-
-        $c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
-
-        $c->collect($subRequest, new Response());
-        $c->lateCollect();
-    }
-
-    /**
-     * @dataProvider getCollectTestData
-     */
-    public function testCollect($nb, $logs, $expectedLogs, $expectedDeprecationCount, $expectedScreamCount, $expectedPriorities = null)
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('countErrors')->willReturn($nb);
-        $logger->expects($this->exactly(2))->method('getLogs')->willReturn($logs);
-
-        $c = new LoggerDataCollector($logger);
-        $c->lateCollect();
-
-        $this->assertEquals('logger', $c->getName());
-        $this->assertEquals($nb, $c->countErrors());
-
-        $logs = array_map(function ($v) {
-            if (isset($v['context']['exception'])) {
-                $e = &$v['context']['exception'];
-                $e = isset($e["\0*\0message"]) ? [$e["\0*\0message"], $e["\0*\0severity"]] : [$e["\0Symfony\Component\Debug\Exception\SilencedErrorContext\0severity"]];
-            }
-
-            return $v;
-        }, $c->getLogs()->getValue(true));
-        $this->assertEquals($expectedLogs, $logs);
-        $this->assertEquals($expectedDeprecationCount, $c->countDeprecations());
-        $this->assertEquals($expectedScreamCount, $c->countScreams());
-
-        if (isset($expectedPriorities)) {
-            $this->assertSame($expectedPriorities, $c->getPriorities()->getValue(true));
-        }
-    }
-
-    public function testReset()
-    {
-        $logger = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Log\DebugLoggerInterface')
-            ->setMethods(['countErrors', 'getLogs', 'clear'])
-            ->getMock();
-        $logger->expects($this->once())->method('clear');
-
-        $c = new LoggerDataCollector($logger);
-        $c->reset();
-    }
-
-    public function getCollectTestData()
-    {
-        yield 'simple log' => [
-            1,
-            [['message' => 'foo', 'context' => [], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            [['message' => 'foo', 'context' => [], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            0,
-            0,
-        ];
-
-        yield 'log with a context' => [
-            1,
-            [['message' => 'foo', 'context' => ['foo' => 'bar'], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            [['message' => 'foo', 'context' => ['foo' => 'bar'], 'priority' => 100, 'priorityName' => 'DEBUG']],
-            0,
-            0,
-        ];
-
-        if (!class_exists(SilencedErrorContext::class)) {
-            return;
-        }
-
-        yield 'logs with some deprecations' => [
-            1,
-            [
-                ['message' => 'foo3', 'context' => ['exception' => new \ErrorException('warning', 0, E_USER_WARNING)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo', 'context' => ['exception' => new \ErrorException('deprecated', 0, E_DEPRECATED)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo2', 'context' => ['exception' => new \ErrorException('deprecated', 0, E_USER_DEPRECATED)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-            ],
-            [
-                ['message' => 'foo3', 'context' => ['exception' => ['warning', E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo', 'context' => ['exception' => ['deprecated', E_DEPRECATED]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => false],
-                ['message' => 'foo2', 'context' => ['exception' => ['deprecated', E_USER_DEPRECATED]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => false],
-            ],
-            2,
-            0,
-            [100 => ['count' => 3, 'name' => 'DEBUG']],
-        ];
-
-        yield 'logs with some silent errors' => [
-            1,
-            [
-                ['message' => 'foo3', 'context' => ['exception' => new \ErrorException('warning', 0, E_USER_WARNING)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo3', 'context' => ['exception' => new SilencedErrorContext(E_USER_WARNING, __FILE__, __LINE__)], 'priority' => 100, 'priorityName' => 'DEBUG'],
-            ],
-            [
-                ['message' => 'foo3', 'context' => ['exception' => ['warning', E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG'],
-                ['message' => 'foo3', 'context' => ['exception' => [E_USER_WARNING]], 'priority' => 100, 'priorityName' => 'DEBUG', 'errorCount' => 1, 'scream' => true],
-            ],
-            0,
-            1,
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php
deleted file mode 100644
index 63dd62ce..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/MemoryDataCollectorTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector;
-
-class MemoryDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $collector = new MemoryDataCollector();
-        $collector->collect(new Request(), new Response());
-
-        $this->assertIsInt($collector->getMemory());
-        $this->assertIsInt($collector->getMemoryLimit());
-        $this->assertSame('memory', $collector->getName());
-    }
-
-    /** @dataProvider getBytesConversionTestData */
-    public function testBytesConversion($limit, $bytes)
-    {
-        $collector = new MemoryDataCollector();
-        $method = new \ReflectionMethod($collector, 'convertToBytes');
-        $method->setAccessible(true);
-        $this->assertEquals($bytes, $method->invoke($collector, $limit));
-    }
-
-    public function getBytesConversionTestData()
-    {
-        return [
-            ['2k', 2048],
-            ['2 k', 2048],
-            ['8m', 8 * 1024 * 1024],
-            ['+2 k', 2048],
-            ['+2???k', 2048],
-            ['0x10', 16],
-            ['0xf', 15],
-            ['010', 8],
-            ['+0x10 k', 16 * 1024],
-            ['1g', 1024 * 1024 * 1024],
-            ['1G', 1024 * 1024 * 1024],
-            ['-1', -1],
-            ['0', 0],
-            ['2mk', 2048], // the unit must be the last char, so in this case 'k', not 'm'
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php
deleted file mode 100644
index 42215ea0..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/RequestDataCollectorTest.php
+++ /dev/null
@@ -1,390 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\ParameterBag;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
-use Symfony\Component\HttpKernel\Event\ControllerEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class RequestDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $c = new RequestDataCollector();
-
-        $c->collect($request = $this->createRequest(), $this->createResponse());
-        $c->lateCollect();
-
-        $attributes = $c->getRequestAttributes();
-
-        $this->assertSame('request', $c->getName());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestHeaders());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestServer());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestCookies());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $attributes);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestRequest());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getRequestQuery());
-        $this->assertInstanceOf(ParameterBag::class, $c->getResponseCookies());
-        $this->assertSame('html', $c->getFormat());
-        $this->assertEquals('foobar', $c->getRoute());
-        $this->assertEquals(['name' => 'foo'], $c->getRouteParams());
-        $this->assertSame([], $c->getSessionAttributes());
-        $this->assertSame('en', $c->getLocale());
-        $this->assertContains(__FILE__, $attributes->get('resource'));
-        $this->assertSame('stdClass', $attributes->get('object')->getType());
-
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\ParameterBag', $c->getResponseHeaders());
-        $this->assertSame('OK', $c->getStatusText());
-        $this->assertSame(200, $c->getStatusCode());
-        $this->assertSame('application/json', $c->getContentType());
-    }
-
-    public function testCollectWithoutRouteParams()
-    {
-        $request = $this->createRequest([]);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $this->createResponse());
-        $c->lateCollect();
-
-        $this->assertEquals([], $c->getRouteParams());
-    }
-
-    /**
-     * @dataProvider provideControllerCallables
-     */
-    public function testControllerInspection($name, $callable, $expected)
-    {
-        $c = new RequestDataCollector();
-        $request = $this->createRequest();
-        $response = $this->createResponse();
-        $this->injectController($c, $callable, $request);
-        $c->collect($request, $response);
-        $c->lateCollect();
-
-        $this->assertSame($expected, $c->getController()->getValue(true), sprintf('Testing: %s', $name));
-    }
-
-    public function provideControllerCallables()
-    {
-        // make sure we always match the line number
-        $r1 = new \ReflectionMethod($this, 'testControllerInspection');
-        $r2 = new \ReflectionMethod($this, 'staticControllerMethod');
-        $r3 = new \ReflectionClass($this);
-
-        // test name, callable, expected
-        return [
-            [
-                '"Regular" callable',
-                [$this, 'testControllerInspection'],
-                [
-                    'class' => __NAMESPACE__.'\RequestDataCollectorTest',
-                    'method' => 'testControllerInspection',
-                    'file' => __FILE__,
-                    'line' => $r1->getStartLine(),
-                ],
-            ],
-
-            [
-                'Closure',
-                function () { return 'foo'; },
-                [
-                    'class' => __NAMESPACE__.'\{closure}',
-                    'method' => null,
-                    'file' => __FILE__,
-                    'line' => __LINE__ - 5,
-                ],
-            ],
-
-            [
-                'Static callback as string',
-                __NAMESPACE__.'\RequestDataCollectorTest::staticControllerMethod',
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Static callable with instance',
-                [$this, 'staticControllerMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Static callable with class name',
-                ['Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest', 'staticControllerMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'staticControllerMethod',
-                    'file' => __FILE__,
-                    'line' => $r2->getStartLine(),
-                ],
-            ],
-
-            [
-                'Callable with instance depending on __call()',
-                [$this, 'magicMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'magicMethod',
-                    'file' => 'n/a',
-                    'line' => 'n/a',
-                ],
-            ],
-
-            [
-                'Callable with class name depending on __callStatic()',
-                ['Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest', 'magicMethod'],
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => 'magicMethod',
-                    'file' => 'n/a',
-                    'line' => 'n/a',
-                ],
-            ],
-
-            [
-                'Invokable controller',
-                $this,
-                [
-                    'class' => 'Symfony\Component\HttpKernel\Tests\DataCollector\RequestDataCollectorTest',
-                    'method' => null,
-                    'file' => __FILE__,
-                    'line' => $r3->getStartLine(),
-                ],
-            ],
-        ];
-    }
-
-    public function testItIgnoresInvalidCallables()
-    {
-        $request = $this->createRequestWithSession();
-        $response = new RedirectResponse('/');
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame('n/a', $c->getController());
-    }
-
-    public function testItAddsRedirectedAttributesWhenRequestContainsSpecificCookie()
-    {
-        $request = $this->createRequest();
-        $request->cookies->add([
-            'sf_redirect' => '{}',
-        ]);
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-
-        $c = new RequestDataCollector();
-        $c->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $this->createResponse()));
-
-        $this->assertTrue($request->attributes->get('_redirected'));
-    }
-
-    public function testItSetsARedirectCookieIfTheResponseIsARedirection()
-    {
-        $c = new RequestDataCollector();
-
-        $response = $this->createResponse();
-        $response->setStatusCode(302);
-        $response->headers->set('Location', '/somewhere-else');
-
-        $c->collect($request = $this->createRequest(), $response);
-        $c->lateCollect();
-
-        $cookie = $this->getCookieByName($response, 'sf_redirect');
-
-        $this->assertNotEmpty($cookie->getValue());
-        $this->assertSame('lax', $cookie->getSameSite());
-        $this->assertFalse($cookie->isSecure());
-    }
-
-    public function testItCollectsTheRedirectionAndClearTheCookie()
-    {
-        $c = new RequestDataCollector();
-
-        $request = $this->createRequest();
-        $request->attributes->set('_redirected', true);
-        $request->cookies->add([
-            'sf_redirect' => '{"method": "POST"}',
-        ]);
-
-        $c->collect($request, $response = $this->createResponse());
-        $c->lateCollect();
-
-        $this->assertEquals('POST', $c->getRedirect()['method']);
-
-        $cookie = $this->getCookieByName($response, 'sf_redirect');
-        $this->assertNull($cookie->getValue());
-    }
-
-    protected function createRequest($routeParams = ['name' => 'foo'])
-    {
-        $request = Request::create('http://test.com/foo?bar=baz');
-        $request->attributes->set('foo', 'bar');
-        $request->attributes->set('_route', 'foobar');
-        $request->attributes->set('_route_params', $routeParams);
-        $request->attributes->set('resource', fopen(__FILE__, 'r'));
-        $request->attributes->set('object', new \stdClass());
-
-        return $request;
-    }
-
-    private function createRequestWithSession()
-    {
-        $request = $this->createRequest();
-        $request->attributes->set('_controller', 'Foo::bar');
-        $request->setSession(new Session(new MockArraySessionStorage()));
-        $request->getSession()->start();
-
-        return $request;
-    }
-
-    protected function createResponse()
-    {
-        $response = new Response();
-        $response->setStatusCode(200);
-        $response->headers->set('Content-Type', 'application/json');
-        $response->headers->set('X-Foo-Bar', null);
-        $response->headers->setCookie(new Cookie('foo', 'bar', 1, '/foo', 'localhost', true, true, false, null));
-        $response->headers->setCookie(new Cookie('bar', 'foo', new \DateTime('@946684800'), '/', null, false, true, false, null));
-        $response->headers->setCookie(new Cookie('bazz', 'foo', '2000-12-12', '/', null, false, true, false, null));
-
-        return $response;
-    }
-
-    /**
-     * Inject the given controller callable into the data collector.
-     */
-    protected function injectController($collector, $controller, $request)
-    {
-        $resolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface')->getMock();
-        $httpKernel = new HttpKernel(new EventDispatcher(), $resolver, null, $this->getMockBuilder(ArgumentResolverInterface::class)->getMock());
-        $event = new ControllerEvent($httpKernel, $controller, $request, HttpKernelInterface::MASTER_REQUEST);
-        $collector->onKernelController($event);
-    }
-
-    /**
-     * Dummy method used as controller callable.
-     */
-    public static function staticControllerMethod()
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    /**
-     * Magic method to allow non existing methods to be called and delegated.
-     */
-    public function __call($method, $args)
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    /**
-     * Magic method to allow non existing methods to be called and delegated.
-     */
-    public static function __callStatic($method, $args)
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    public function __invoke()
-    {
-        throw new \LogicException('Unexpected method call');
-    }
-
-    private function getCookieByName(Response $response, $name)
-    {
-        foreach ($response->headers->getCookies() as $cookie) {
-            if ($cookie->getName() == $name) {
-                return $cookie;
-            }
-        }
-
-        throw new \InvalidArgumentException(sprintf('Cookie named "%s" is not in response', $name));
-    }
-
-    /**
-     * @dataProvider provideJsonContentTypes
-     */
-    public function testIsJson($contentType, $expected)
-    {
-        $response = $this->createResponse();
-        $request = $this->createRequest();
-        $request->headers->set('Content-Type', $contentType);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame($expected, $c->isJsonRequest());
-    }
-
-    public function provideJsonContentTypes()
-    {
-        return [
-            ['text/csv', false],
-            ['application/json', true],
-            ['application/JSON', true],
-            ['application/hal+json', true],
-            ['application/xml+json', true],
-            ['application/xml', false],
-            ['', false],
-        ];
-    }
-
-    /**
-     * @dataProvider providePrettyJson
-     */
-    public function testGetPrettyJsonValidity($content, $expected)
-    {
-        $response = $this->createResponse();
-        $request = Request::create('/', 'POST', [], [], [], [], $content);
-
-        $c = new RequestDataCollector();
-        $c->collect($request, $response);
-
-        $this->assertSame($expected, $c->getPrettyJson());
-    }
-
-    public function providePrettyJson()
-    {
-        return [
-            ['null', 'null'],
-            ['{ "foo": "bar" }', '{
-    "foo": "bar"
-}'],
-            ['{ "abc" }', null],
-            ['', null],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php b/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php
deleted file mode 100644
index 9de9eb59..00000000
--- a/vendor/symfony/http-kernel/Tests/DataCollector/TimeDataCollectorTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DataCollector;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\TimeDataCollector;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-/**
- * @group time-sensitive
- */
-class TimeDataCollectorTest extends TestCase
-{
-    public function testCollect()
-    {
-        $c = new TimeDataCollector();
-
-        $request = new Request();
-        $request->server->set('REQUEST_TIME', 1);
-
-        $c->collect($request, new Response());
-
-        $this->assertEquals(0, $c->getStartTime());
-
-        $request->server->set('REQUEST_TIME_FLOAT', 2);
-
-        $c->collect($request, new Response());
-
-        $this->assertEquals(2000, $c->getStartTime());
-
-        $request = new Request();
-        $c->collect($request, new Response());
-        $this->assertEquals(0, $c->getStartTime());
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock();
-        $kernel->expects($this->once())->method('getStartTime')->willReturn(123456.0);
-
-        $c = new TimeDataCollector($kernel);
-        $request = new Request();
-        $request->server->set('REQUEST_TIME', 1);
-
-        $c->collect($request, new Response());
-        $this->assertEquals(123456000, $c->getStartTime());
-        $this->assertSame(class_exists(Stopwatch::class, false), $c->isStopwatchInstalled());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php b/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php
deleted file mode 100644
index 1f4d298b..00000000
--- a/vendor/symfony/http-kernel/Tests/Debug/FileLinkFormatterTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
-
-class FileLinkFormatterTest extends TestCase
-{
-    public function testWhenNoFileLinkFormatAndNoRequest()
-    {
-        $sut = new FileLinkFormatter();
-
-        $this->assertFalse($sut->format('/kernel/root/src/my/very/best/file.php', 3));
-    }
-
-    public function testWhenFileLinkFormatAndNoRequest()
-    {
-        $file = __DIR__.\DIRECTORY_SEPARATOR.'file.php';
-
-        $sut = new FileLinkFormatter('debug://open?url=file://%f&line=%l', new RequestStack());
-
-        $this->assertSame("debug://open?url=file://$file&line=3", $sut->format($file, 3));
-    }
-
-    public function testWhenNoFileLinkFormatAndRequest()
-    {
-        $file = __DIR__.\DIRECTORY_SEPARATOR.'file.php';
-        $requestStack = new RequestStack();
-        $request = new Request();
-        $requestStack->push($request);
-
-        $request->server->set('SERVER_NAME', 'www.example.org');
-        $request->server->set('SERVER_PORT', 80);
-        $request->server->set('SCRIPT_NAME', '/index.php');
-        $request->server->set('SCRIPT_FILENAME', '/public/index.php');
-        $request->server->set('REQUEST_URI', '/index.php/example');
-
-        $sut = new FileLinkFormatter(null, $requestStack, __DIR__, '/_profiler/open?file=%f&line=%l#line%l');
-
-        $this->assertSame('http://www.example.org/_profiler/open?file=file.php&line=3#line3', $sut->format($file, 3));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php
deleted file mode 100644
index cf8a3b8a..00000000
--- a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Debug;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class TraceableEventDispatcherTest extends TestCase
-{
-    public function testStopwatchSections()
-    {
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch = new Stopwatch());
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response('', 200, ['X-Debug-Token' => '292e1e']); });
-        $request = Request::create('/');
-        $response = $kernel->handle($request);
-        $kernel->terminate($request, $response);
-
-        $events = $stopwatch->getSectionEvents($response->headers->get('X-Debug-Token'));
-        $this->assertEquals([
-            '__section__',
-            'kernel.request',
-            'kernel.controller',
-            'kernel.controller_arguments',
-            'controller',
-            'kernel.response',
-            'kernel.terminate',
-        ], array_keys($events));
-    }
-
-    public function testStopwatchCheckControllerOnRequestEvent()
-    {
-        $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')
-            ->setMethods(['isStarted'])
-            ->getMock();
-        $stopwatch->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(false);
-
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch);
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response(); });
-        $request = Request::create('/');
-        $kernel->handle($request);
-    }
-
-    public function testStopwatchStopControllerOnRequestEvent()
-    {
-        $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')
-            ->setMethods(['isStarted', 'stop'])
-            ->getMock();
-        $stopwatch->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(true);
-        $stopwatch->expects($this->once())
-            ->method('stop');
-
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch);
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return new Response(); });
-        $request = Request::create('/');
-        $kernel->handle($request);
-    }
-
-    public function testAddListenerNested()
-    {
-        $called1 = false;
-        $called2 = false;
-        $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $dispatcher->addListener('my-event', function () use ($dispatcher, &$called1, &$called2) {
-            $called1 = true;
-            $dispatcher->addListener('my-event', function () use (&$called2) {
-                $called2 = true;
-            });
-        });
-        $dispatcher->dispatch(new Event(), 'my-event');
-        $this->assertTrue($called1);
-        $this->assertFalse($called2);
-        $dispatcher->dispatch(new Event(), 'my-event');
-        $this->assertTrue($called2);
-    }
-
-    public function testListenerCanRemoveItselfWhenExecuted()
-    {
-        $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
-        $listener1 = function () use ($eventDispatcher, &$listener1) {
-            $eventDispatcher->removeListener('foo', $listener1);
-        };
-        $eventDispatcher->addListener('foo', $listener1);
-        $eventDispatcher->addListener('foo', function () {});
-        $eventDispatcher->dispatch(new Event(), 'foo');
-
-        $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
-    }
-
-    protected function getHttpKernel($dispatcher, $controller)
-    {
-        $controllerResolver = $this->getMockBuilder('Symfony\Component\HttpKernel\Controller\ControllerResolverInterface')->getMock();
-        $controllerResolver->expects($this->once())->method('getController')->willReturn($controller);
-        $argumentResolver = $this->getMockBuilder('Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface')->getMock();
-        $argumentResolver->expects($this->once())->method('getArguments')->willReturn([]);
-
-        return new HttpKernel($dispatcher, $controllerResolver, new RequestStack(), $argumentResolver);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php
deleted file mode 100644
index 914b1dd8..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClassesToCachePassTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass;
-
-class AddAnnotatedClassesToCachePassTest extends TestCase
-{
-    public function testExpandClasses()
-    {
-        $r = new \ReflectionClass(AddAnnotatedClassesToCachePass::class);
-        $pass = $r->newInstanceWithoutConstructor();
-        $r = new \ReflectionMethod(AddAnnotatedClassesToCachePass::class, 'expandClasses');
-        $r->setAccessible(true);
-        $expand = $r->getClosure($pass);
-
-        $this->assertSame('Foo', $expand(['Foo'], [])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], [])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['\\Foo'])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['Foo'])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo', $expand(['Foo'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo', $expand(['\\Foo'], ['\\Foo\\Bar\\Acme'])[0]);
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo\\Bar\\Acme', $expand(['Foo\\'], ['\\Foo\\Bar\\Acme'])[0]);
-        $this->assertEmpty($expand(['Foo\\'], ['\\Foo']));
-
-        $this->assertSame('Acme\\Foo\\Bar', $expand(['**\\Foo\\'], ['\\Acme\\Foo\\Bar'])[0]);
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Foo\\Bar']));
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Acme\\Foo']));
-        $this->assertEmpty($expand(['**\\Foo\\'], ['\\Foo']));
-
-        $this->assertSame('Acme\\Foo', $expand(['**\\Foo'], ['\\Acme\\Foo'])[0]);
-        $this->assertEmpty($expand(['**\\Foo'], ['\\Acme\\Foo\\AcmeBundle']));
-        $this->assertEmpty($expand(['**\\Foo'], ['\\Acme\\FooBar\\AcmeBundle']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\*\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertEmpty($expand(['Foo\\*\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bundle\\Bar', $expand(['Foo\\**\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar'])[0]);
-
-        $this->assertSame('Acme\\Bar', $expand(['*\\Bar'], ['\\Acme\\Bar'])[0]);
-        $this->assertEmpty($expand(['*\\Bar'], ['\\Bar']));
-        $this->assertEmpty($expand(['*\\Bar'], ['\\Foo\\Acme\\Bar']));
-
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['**\\Bar'], ['\\Foo\\Acme\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bundle\\Bar', $expand(['**\\Bar'], ['\\Foo\\Acme\\Bundle\\Bar'])[0]);
-        $this->assertEmpty($expand(['**\\Bar'], ['\\Bar']));
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\*'], ['\\Foo\\Bar'])[0]);
-        $this->assertEmpty($expand(['Foo\\*'], ['\\Foo\\Acme\\Bar']));
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\**'], ['\\Foo\\Bar'])[0]);
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**'], ['\\Foo\\Acme\\Bar'])[0]);
-
-        $this->assertSame(['Foo\\Bar'], $expand(['Foo\\*'], ['Foo\\Bar', 'Foo\\BarTest']));
-        $this->assertSame(['Foo\\Bar', 'Foo\\BarTest'], $expand(['Foo\\*', 'Foo\\*Test'], ['Foo\\Bar', 'Foo\\BarTest']));
-
-        $this->assertSame(
-            'Acme\\FooBundle\\Controller\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\FooBundle\\Controller\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'FooBundle\\Controller\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\FooBundle\\Controller\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Acme\\FooBundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\FooBundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Bundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Bundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame(
-            'Acme\\Bundle\\Controller\\Bar\\DefaultController',
-            $expand(['**Bundle\\Controller\\'], ['\\Acme\\Bundle\\Controller\\Bar\\DefaultController'])[0]
-        );
-
-        $this->assertSame('Foo\\Bar', $expand(['Foo\\Bar'], [])[0]);
-        $this->assertSame('Foo\\Acme\\Bar', $expand(['Foo\\**'], ['\\Foo\\Acme\\Bar'])[0]);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
deleted file mode 100644
index 2694d002..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass;
-use Symfony\Component\Stopwatch\Stopwatch;
-
-class ControllerArgumentValueResolverPassTest extends TestCase
-{
-    public function testServicesAreOrderedAccordingToPriority()
-    {
-        $services = [
-            'n3' => [[]],
-            'n1' => [['priority' => 200]],
-            'n2' => [['priority' => 100]],
-        ];
-
-        $expected = [
-            new Reference('n1'),
-            new Reference('n2'),
-            new Reference('n3'),
-        ];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->setDefinition('argument_resolver', $definition);
-
-        foreach ($services as $id => list($tag)) {
-            $container->register($id)->addTag('controller.argument_value_resolver', $tag);
-        }
-
-        $container->setParameter('kernel.debug', false);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertFalse($container->hasDefinition('n1.traceable'));
-        $this->assertFalse($container->hasDefinition('n2.traceable'));
-        $this->assertFalse($container->hasDefinition('n3.traceable'));
-    }
-
-    public function testInDebugWithStopWatchDefinition()
-    {
-        $services = [
-            'n3' => [[]],
-            'n1' => [['priority' => 200]],
-            'n2' => [['priority' => 100]],
-        ];
-
-        $expected = [
-            new Reference('n1'),
-            new Reference('n2'),
-            new Reference('n3'),
-        ];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->register('debug.stopwatch', Stopwatch::class);
-        $container->setDefinition('argument_resolver', $definition);
-
-        foreach ($services as $id => list($tag)) {
-            $container->register($id)->addTag('controller.argument_value_resolver', $tag);
-        }
-
-        $container->setParameter('kernel.debug', true);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertTrue($container->hasDefinition('debug.n1'));
-        $this->assertTrue($container->hasDefinition('debug.n2'));
-        $this->assertTrue($container->hasDefinition('debug.n3'));
-
-        $this->assertTrue($container->hasDefinition('n1'));
-        $this->assertTrue($container->hasDefinition('n2'));
-        $this->assertTrue($container->hasDefinition('n3'));
-    }
-
-    public function testInDebugWithouStopWatchDefinition()
-    {
-        $expected = [new Reference('n1')];
-
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->register('n1')->addTag('controller.argument_value_resolver');
-        $container->setDefinition('argument_resolver', $definition);
-
-        $container->setParameter('kernel.debug', true);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals($expected, $definition->getArgument(1)->getValues());
-
-        $this->assertFalse($container->hasDefinition('debug.n1'));
-        $this->assertTrue($container->hasDefinition('n1'));
-    }
-
-    public function testReturningEmptyArrayWhenNoService()
-    {
-        $definition = new Definition(ArgumentResolver::class, [null, []]);
-        $container = new ContainerBuilder();
-        $container->setDefinition('argument_resolver', $definition);
-
-        $container->setParameter('kernel.debug', false);
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-        $this->assertEquals([], $definition->getArgument(1)->getValues());
-    }
-
-    public function testNoArgumentResolver()
-    {
-        $container = new ContainerBuilder();
-
-        (new ControllerArgumentValueResolverPass())->process($container);
-
-        $this->assertFalse($container->hasDefinition('argument_resolver'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
deleted file mode 100644
index 1d521368..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\DependencyInjection\FragmentRendererPass;
-use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
-
-class FragmentRendererPassTest extends TestCase
-{
-    /**
-     * Tests that content rendering not implementing FragmentRendererInterface
-     * triggers an exception.
-     */
-    public function testContentRendererWithoutInterface()
-    {
-        $this->expectException('InvalidArgumentException');
-        $builder = new ContainerBuilder();
-        $fragmentHandlerDefinition = $builder->register('fragment.handler');
-        $builder->register('my_content_renderer', 'Symfony\Component\DependencyInjection\Definition')
-            ->addTag('kernel.fragment_renderer', ['alias' => 'foo']);
-
-        $pass = new FragmentRendererPass();
-        $pass->process($builder);
-
-        $this->assertEquals([['addRendererService', ['foo', 'my_content_renderer']]], $fragmentHandlerDefinition->getMethodCalls());
-    }
-
-    public function testValidContentRenderer()
-    {
-        $builder = new ContainerBuilder();
-        $fragmentHandlerDefinition = $builder->register('fragment.handler')
-            ->addArgument(null);
-        $builder->register('my_content_renderer', 'Symfony\Component\HttpKernel\Tests\DependencyInjection\RendererService')
-            ->addTag('kernel.fragment_renderer', ['alias' => 'foo']);
-
-        $pass = new FragmentRendererPass();
-        $pass->process($builder);
-
-        $serviceLocatorDefinition = $builder->getDefinition((string) $fragmentHandlerDefinition->getArgument(0));
-        $this->assertSame(ServiceLocator::class, $serviceLocatorDefinition->getClass());
-        $this->assertEquals(['foo' => new ServiceClosureArgument(new Reference('my_content_renderer'))], $serviceLocatorDefinition->getArgument(0));
-    }
-}
-
-class RendererService implements FragmentRendererInterface
-{
-    public function render($uri, Request $request = null, array $options = [])
-    {
-    }
-
-    public function getName()
-    {
-        return 'test';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
deleted file mode 100644
index 39a1cb73..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler;
-
-class LazyLoadingFragmentHandlerTest extends TestCase
-{
-    public function testRender()
-    {
-        $renderer = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface')->getMock();
-        $renderer->expects($this->once())->method('getName')->willReturn('foo');
-        $renderer->expects($this->any())->method('render')->willReturn(new Response());
-
-        $requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
-        $requestStack->expects($this->any())->method('getCurrentRequest')->willReturn(Request::create('/'));
-
-        $container = $this->getMockBuilder('Psr\Container\ContainerInterface')->getMock();
-        $container->expects($this->once())->method('has')->with('foo')->willReturn(true);
-        $container->expects($this->once())->method('get')->willReturn($renderer);
-
-        $handler = new LazyLoadingFragmentHandler($container, $requestStack, false);
-
-        $handler->render('/foo', 'foo');
-
-        // second call should not lazy-load anymore (see once() above on the get() method)
-        $handler->render('/foo', 'foo');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
deleted file mode 100644
index cb504877..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\DependencyInjection\LoggerPass;
-use Symfony\Component\HttpKernel\Log\Logger;
-
-/**
- * @author Kévin Dunglas <dunglas@gmail.com>
- */
-class LoggerPassTest extends TestCase
-{
-    public function testAlwaysSetAutowiringAlias()
-    {
-        $container = new ContainerBuilder();
-        $container->register('logger', 'Foo');
-
-        (new LoggerPass())->process($container);
-
-        $this->assertFalse($container->getAlias(LoggerInterface::class)->isPublic());
-    }
-
-    public function testDoNotOverrideExistingLogger()
-    {
-        $container = new ContainerBuilder();
-        $container->register('logger', 'Foo');
-
-        (new LoggerPass())->process($container);
-
-        $this->assertSame('Foo', $container->getDefinition('logger')->getClass());
-    }
-
-    public function testRegisterLogger()
-    {
-        $container = new ContainerBuilder();
-        $container->setParameter('kernel.debug', false);
-
-        (new LoggerPass())->process($container);
-
-        $definition = $container->getDefinition('logger');
-        $this->assertSame(Logger::class, $definition->getClass());
-        $this->assertFalse($definition->isPublic());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
deleted file mode 100644
index 7af756e0..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\DependencyInjection\Extension;
-use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
-
-class MergeExtensionConfigurationPassTest extends TestCase
-{
-    public function testAutoloadMainExtension()
-    {
-        $container = new ContainerBuilder();
-        $container->registerExtension(new LoadedExtension());
-        $container->registerExtension(new NotLoadedExtension());
-        $container->loadFromExtension('loaded', []);
-
-        $configPass = new MergeExtensionConfigurationPass(['loaded', 'not_loaded']);
-        $configPass->process($container);
-
-        $this->assertTrue($container->hasDefinition('loaded.foo'));
-        $this->assertTrue($container->hasDefinition('not_loaded.bar'));
-    }
-}
-
-class LoadedExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-        $container->register('loaded.foo');
-    }
-}
-
-class NotLoadedExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-        $container->register('not_loaded.bar');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
deleted file mode 100644
index 3c5b1978..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
+++ /dev/null
@@ -1,436 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
-use Symfony\Component\DependencyInjection\ChildDefinition;
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerAwareTrait;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\DependencyInjection\TypedReference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-
-class RegisterControllerArgumentLocatorsPassTest extends TestCase
-{
-    public function testInvalidClass()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Class "Symfony\Component\HttpKernel\Tests\DependencyInjection\NotFound" used for service "foo" cannot be found.');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NotFound::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoAction()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "action" attribute on tag "controller.service_arguments" {"argument":"bar"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['argument' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoArgument()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "argument" attribute on tag "controller.service_arguments" {"action":"fooAction"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoService()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Missing "id" attribute on tag "controller.service_arguments" {"action":"fooAction","argument":"bar"} for service "foo".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testInvalidMethod()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Invalid "action" attribute on tag "controller.service_arguments" for service "foo": no public "barAction()" method found on class "Symfony\Component\HttpKernel\Tests\DependencyInjection\RegisterTestController".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'barAction', 'argument' => 'bar', 'id' => 'bar_service'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testInvalidArgument()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Invalid "controller.service_arguments" tag for service "foo": method "fooAction()" has no "baz" argument on class "Symfony\Component\HttpKernel\Tests\DependencyInjection\RegisterTestController".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'baz', 'id' => 'bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testAllActions()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertEquals(['foo::fooAction'], array_keys($locator));
-        $this->assertInstanceof(ServiceClosureArgument::class, $locator['foo::fooAction']);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $this->assertSame(ServiceLocator::class, $locator->getClass());
-        $this->assertFalse($locator->isPublic());
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference(ControllerDummy::class, ControllerDummy::class, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE, 'bar'))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testExplicitArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => 'bar'])
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => 'baz']) // should be ignored, the first wins
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference('bar', ControllerDummy::class, ContainerInterface::RUNTIME_EXCEPTION_ON_INVALID_REFERENCE))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testOptionalArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->addTag('controller.service_arguments', ['action' => 'fooAction', 'argument' => 'bar', 'id' => '?bar'])
-        ;
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new TypedReference('bar', ControllerDummy::class, ContainerInterface::IGNORE_ON_INVALID_REFERENCE))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function testSkipSetContainer()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ContainerAwareRegisterTestController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertSame(['foo::fooAction'], array_keys($locator));
-    }
-
-    public function testExceptionOnNonExistentTypeHint()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Cannot determine controller argument for "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClassController::fooAction()": the $nonExistent argument is type-hinted with the non-existent class or interface: "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClass". Did you forget to add a use statement?');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testExceptionOnNonExistentTypeHintDifferentNamespace()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\InvalidArgumentException');
-        $this->expectExceptionMessage('Cannot determine controller argument for "Symfony\Component\HttpKernel\Tests\DependencyInjection\NonExistentClassDifferentNamespaceController::fooAction()": the $nonExistent argument is type-hinted with the non-existent class or interface: "Acme\NonExistentClass".');
-        $container = new ContainerBuilder();
-        $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassDifferentNamespaceController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-    }
-
-    public function testNoExceptionOnNonExistentTypeHintOptionalArg()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', NonExistentClassOptionalController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertSame(['foo::barAction', 'foo::fooAction'], array_keys($locator));
-    }
-
-    public function testArgumentWithNoTypeHintIsOk()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertEmpty(array_keys($locator));
-    }
-
-    public function testControllersAreMadePublic()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->setPublic(false)
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $this->assertTrue($container->getDefinition('foo')->isPublic());
-    }
-
-    /**
-     * @dataProvider provideBindings
-     */
-    public function testBindings($bindingName)
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', RegisterTestController::class)
-            ->setBindings([$bindingName => new Reference('foo')])
-            ->addTag('controller.service_arguments');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        $expected = ['bar' => new ServiceClosureArgument(new Reference('foo'))];
-        $this->assertEquals($expected, $locator->getArgument(0));
-    }
-
-    public function provideBindings()
-    {
-        return [
-            [ControllerDummy::class.'$bar'],
-            [ControllerDummy::class],
-            ['$bar'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideBindScalarValueToControllerArgument
-     */
-    public function testBindScalarValueToControllerArgument($bindingKey)
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('foo', ArgumentWithoutTypeController::class)
-            ->setBindings([$bindingKey => '%foo%'])
-            ->addTag('controller.service_arguments');
-
-        $container->setParameter('foo', 'foo_val');
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $locator = $container->getDefinition((string) $locator['foo::fooAction']->getValues()[0]);
-
-        // assert the locator has a someArg key
-        $arguments = $locator->getArgument(0);
-        $this->assertArrayHasKey('someArg', $arguments);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $arguments['someArg']);
-        // get the Reference that someArg points to
-        $reference = $arguments['someArg']->getValues()[0];
-        // make sure this service *does* exist and returns the correct value
-        $this->assertTrue($container->has((string) $reference));
-        $this->assertSame('foo_val', $container->get((string) $reference));
-    }
-
-    public function provideBindScalarValueToControllerArgument()
-    {
-        yield ['$someArg'];
-        yield ['string $someArg'];
-    }
-
-    public function testBindingsOnChildDefinitions()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('parent', ArgumentWithoutTypeController::class);
-
-        $container->setDefinition('child', (new ChildDefinition('parent'))
-            ->setBindings(['$someArg' => new Reference('parent')])
-            ->addTag('controller.service_arguments')
-        );
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locator = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $locator['child::fooAction']);
-
-        $locator = $container->getDefinition((string) $locator['child::fooAction']->getValues()[0])->getArgument(0);
-        $this->assertInstanceOf(ServiceClosureArgument::class, $locator['someArg']);
-        $this->assertEquals(new Reference('parent'), $locator['someArg']->getValues()[0]);
-    }
-
-    public function testNotTaggedControllerServiceReceivesLocatorArgument()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.not_tagged_controller')->addArgument([]);
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $locatorArgument = $container->getDefinition('argument_resolver.not_tagged_controller')->getArgument(0);
-
-        $this->assertInstanceOf(Reference::class, $locatorArgument);
-    }
-}
-
-class RegisterTestController
-{
-    public function __construct(ControllerDummy $bar)
-    {
-    }
-
-    public function fooAction(ControllerDummy $bar)
-    {
-    }
-
-    protected function barAction(ControllerDummy $bar)
-    {
-    }
-}
-
-class ContainerAwareRegisterTestController implements ContainerAwareInterface
-{
-    use ContainerAwareTrait;
-
-    public function fooAction(ControllerDummy $bar)
-    {
-    }
-}
-
-class ControllerDummy
-{
-}
-
-class NonExistentClassController
-{
-    public function fooAction(NonExistentClass $nonExistent)
-    {
-    }
-}
-
-class NonExistentClassDifferentNamespaceController
-{
-    public function fooAction(\Acme\NonExistentClass $nonExistent)
-    {
-    }
-}
-
-class NonExistentClassOptionalController
-{
-    public function fooAction(NonExistentClass $nonExistent = null)
-    {
-    }
-
-    public function barAction(NonExistentClass $nonExistent = null, $bar)
-    {
-    }
-}
-
-class ArgumentWithoutTypeController
-{
-    public function fooAction(string $someArg)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php
deleted file mode 100644
index aa3c6aa0..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterLocaleAwareServicesPassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterLocaleAwareServicesPass;
-use Symfony\Component\HttpKernel\EventListener\LocaleAwareListener;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-class RegisterLocaleAwareServicesPassTest extends TestCase
-{
-    public function testCompilerPass()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('locale_aware_listener', LocaleAwareListener::class)
-                  ->setPublic(true)
-                  ->setArguments([null, null]);
-
-        $container->register('some_locale_aware_service', LocaleAwareInterface::class)
-                  ->setPublic(true)
-                  ->addTag('kernel.locale_aware');
-
-        $container->register('another_locale_aware_service', LocaleAwareInterface::class)
-                  ->setPublic(true)
-                  ->addTag('kernel.locale_aware');
-
-        $container->addCompilerPass(new RegisterLocaleAwareServicesPass());
-        $container->compile();
-
-        $this->assertEquals(
-            [
-                new IteratorArgument([
-                    0 => new Reference('some_locale_aware_service'),
-                    1 => new Reference('another_locale_aware_service'),
-                ]),
-                null,
-            ],
-            $container->getDefinition('locale_aware_listener')->getArguments()
-        );
-    }
-
-    public function testListenerUnregisteredWhenNoLocaleAwareServices()
-    {
-        $container = new ContainerBuilder();
-
-        $container->register('locale_aware_listener', LocaleAwareListener::class)
-                  ->setPublic(true)
-                  ->setArguments([null, null]);
-
-        $container->addCompilerPass(new RegisterLocaleAwareServicesPass());
-        $container->compile();
-
-        $this->assertFalse($container->hasDefinition('locale_aware_listener'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
deleted file mode 100644
index b5e55bde..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Compiler\ResolveInvalidReferencesPass;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\RegisterControllerArgumentLocatorsPass;
-use Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass;
-
-class RemoveEmptyControllerArgumentLocatorsPassTest extends TestCase
-{
-    public function testProcess()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('stdClass', 'stdClass');
-        $container->register(TestCase::class, 'stdClass');
-        $container->register('c1', RemoveTestController1::class)->addTag('controller.service_arguments');
-        $container->register('c2', RemoveTestController2::class)->addTag('controller.service_arguments')
-            ->addMethodCall('setTestCase', [new Reference('c1')]);
-
-        $pass = new RegisterControllerArgumentLocatorsPass();
-        $pass->process($container);
-
-        $controllers = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertCount(2, $container->getDefinition((string) $controllers['c1::fooAction']->getValues()[0])->getArgument(0));
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::setTestCase']->getValues()[0])->getArgument(0));
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::fooAction']->getValues()[0])->getArgument(0));
-
-        (new ResolveInvalidReferencesPass())->process($container);
-
-        $this->assertCount(1, $container->getDefinition((string) $controllers['c2::setTestCase']->getValues()[0])->getArgument(0));
-        $this->assertSame([], $container->getDefinition((string) $controllers['c2::fooAction']->getValues()[0])->getArgument(0));
-
-        (new RemoveEmptyControllerArgumentLocatorsPass())->process($container);
-
-        $controllers = $container->getDefinition((string) $resolver->getArgument(0))->getArgument(0);
-
-        $this->assertSame(['c1::fooAction', 'c1:fooAction'], array_keys($controllers));
-        $this->assertSame(['bar'], array_keys($container->getDefinition((string) $controllers['c1::fooAction']->getValues()[0])->getArgument(0)));
-
-        $expectedLog = [
-            'Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass: Removing service-argument resolver for controller "c2::fooAction": no corresponding services exist for the referenced types.',
-            'Symfony\Component\HttpKernel\DependencyInjection\RemoveEmptyControllerArgumentLocatorsPass: Removing method "setTestCase" of service "c2" from controller candidates: the method is called at instantiation, thus cannot be an action.',
-        ];
-
-        $this->assertSame($expectedLog, $container->getCompiler()->getLog());
-    }
-
-    public function testInvoke()
-    {
-        $container = new ContainerBuilder();
-        $resolver = $container->register('argument_resolver.service')->addArgument([]);
-
-        $container->register('invokable', InvokableRegisterTestController::class)
-            ->addTag('controller.service_arguments')
-        ;
-
-        (new RegisterControllerArgumentLocatorsPass())->process($container);
-        (new RemoveEmptyControllerArgumentLocatorsPass())->process($container);
-
-        $this->assertEquals(
-            ['invokable::__invoke', 'invokable:__invoke', 'invokable'],
-            array_keys($container->getDefinition((string) $resolver->getArgument(0))->getArgument(0))
-        );
-    }
-}
-
-class RemoveTestController1
-{
-    public function fooAction(\stdClass $bar, ClassNotInContainer $baz = null)
-    {
-    }
-}
-
-class RemoveTestController2
-{
-    public function setTestCase(TestCase $test)
-    {
-    }
-
-    public function fooAction(ClassNotInContainer $bar = null)
-    {
-    }
-}
-
-class InvokableRegisterTestController
-{
-    public function __invoke(\stdClass $bar)
-    {
-    }
-}
-
-class ClassNotInContainer
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
deleted file mode 100644
index d3c68693..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\HttpKernel\DependencyInjection\ResettableServicePass;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ClearableService;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class ResettableServicePassTest extends TestCase
-{
-    public function testCompilerPass()
-    {
-        $container = new ContainerBuilder();
-        $container->register('one', ResettableService::class)
-            ->setPublic(true)
-            ->addTag('kernel.reset', ['method' => 'reset']);
-        $container->register('two', ClearableService::class)
-            ->setPublic(true)
-            ->addTag('kernel.reset', ['method' => 'clear']);
-
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setPublic(true)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-
-        $definition = $container->getDefinition('services_resetter');
-
-        $this->assertEquals(
-            [
-                new IteratorArgument([
-                    'one' => new Reference('one', ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE),
-                    'two' => new Reference('two', ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE),
-                ]),
-                [
-                    'one' => 'reset',
-                    'two' => 'clear',
-                ],
-            ],
-            $definition->getArguments()
-        );
-    }
-
-    public function testMissingMethod()
-    {
-        $this->expectException('Symfony\Component\DependencyInjection\Exception\RuntimeException');
-        $this->expectExceptionMessage('Tag kernel.reset requires the "method" attribute to be set.');
-        $container = new ContainerBuilder();
-        $container->register(ResettableService::class)
-            ->addTag('kernel.reset');
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-    }
-
-    public function testCompilerPassWithoutResetters()
-    {
-        $container = new ContainerBuilder();
-        $container->register('services_resetter', ServicesResetter::class)
-            ->setArguments([null, []]);
-        $container->addCompilerPass(new ResettableServicePass());
-
-        $container->compile();
-
-        $this->assertFalse($container->has('services_resetter'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php b/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
deleted file mode 100644
index 5be6026c..00000000
--- a/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ClearableService;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class ServicesResetterTest extends TestCase
-{
-    protected function setUp(): void
-    {
-        ResettableService::$counter = 0;
-        ClearableService::$counter = 0;
-    }
-
-    public function testResetServices()
-    {
-        $resetter = new ServicesResetter(new \ArrayIterator([
-            'id1' => new ResettableService(),
-            'id2' => new ClearableService(),
-        ]), [
-            'id1' => 'reset',
-            'id2' => 'clear',
-        ]);
-
-        $resetter->reset();
-
-        $this->assertEquals(1, ResettableService::$counter);
-        $this->assertEquals(1, ClearableService::$counter);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php b/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php
deleted file mode 100644
index 7758a666..00000000
--- a/vendor/symfony/http-kernel/Tests/Event/ControllerArgumentsEventTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Event;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
-use Symfony\Component\HttpKernel\Tests\TestHttpKernel;
-
-class ControllerArgumentsEventTest extends TestCase
-{
-    public function testControllerArgumentsEvent()
-    {
-        $filterController = new ControllerArgumentsEvent(new TestHttpKernel(), function () {}, ['test'], new Request(), 1);
-        $this->assertEquals($filterController->getArguments(), ['test']);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php b/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php
deleted file mode 100644
index 6b061d3a..00000000
--- a/vendor/symfony/http-kernel/Tests/Event/ExceptionEventTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Event;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Tests\TestHttpKernel;
-
-class ExceptionEventTest extends TestCase
-{
-    public function testAllowSuccessfulResponseIsFalseByDefault()
-    {
-        $event = new ExceptionEvent(new TestHttpKernel(), new Request(), 1, new \Exception());
-
-        $this->assertFalse($event->isAllowingCustomResponseCode());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
deleted file mode 100644
index da8dc6fb..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * Test AddRequestFormatsListener class.
- *
- * @author Gildas Quemener <gildas.quemener@gmail.com>
- */
-class AddRequestFormatsListenerTest extends TestCase
-{
-    /**
-     * @var AddRequestFormatsListener
-     */
-    private $listener;
-
-    protected function setUp(): void
-    {
-        $this->listener = new AddRequestFormatsListener(['csv' => ['text/csv', 'text/plain']]);
-    }
-
-    protected function tearDown(): void
-    {
-        $this->listener = null;
-    }
-
-    public function testIsAnEventSubscriber()
-    {
-        $this->assertInstanceOf('Symfony\Component\EventDispatcher\EventSubscriberInterface', $this->listener);
-    }
-
-    public function testRegisteredEvent()
-    {
-        $this->assertEquals(
-            [KernelEvents::REQUEST => ['onKernelRequest', 100]],
-            AddRequestFormatsListener::getSubscribedEvents()
-        );
-    }
-
-    public function testSetAdditionalFormats()
-    {
-        $request = $this->getRequestMock();
-        $event = $this->getRequestEventMock($request);
-
-        $request->expects($this->once())
-            ->method('setFormat')
-            ->with('csv', ['text/csv', 'text/plain']);
-
-        $this->listener->onKernelRequest($event);
-    }
-
-    protected function getRequestMock()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')->getMock();
-    }
-
-    protected function getRequestEventMock(Request $request)
-    {
-        $event = $this
-            ->getMockBuilder(RequestEvent::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $event->expects($this->any())
-            ->method('getRequest')
-            ->willReturn($request);
-
-        return $event;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
deleted file mode 100644
index 1e52bce7..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LogLevel;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\Console\Event\ConsoleEvent;
-use Symfony\Component\Console\Helper\HelperSet;
-use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Console\Output\ConsoleOutput;
-use Symfony\Component\Debug\ErrorHandler;
-use Symfony\Component\Debug\ExceptionHandler;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\KernelEvent;
-use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-/**
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DebugHandlersListenerTest extends TestCase
-{
-    public function testConfigure()
-    {
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $userHandler = function () {};
-        $listener = new DebugHandlersListener($userHandler, $logger);
-        $xHandler = new ExceptionHandler();
-        $eHandler = new ErrorHandler();
-        $eHandler->setExceptionHandler([$xHandler, 'handle']);
-
-        $exception = null;
-        set_error_handler([$eHandler, 'handleError']);
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure();
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-        restore_error_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertSame($userHandler, $xHandler->setHandler('var_dump'));
-
-        $loggers = $eHandler->setLoggers([]);
-
-        $this->assertArrayHasKey(E_DEPRECATED, $loggers);
-        $this->assertSame([$logger, LogLevel::INFO], $loggers[E_DEPRECATED]);
-    }
-
-    public function testConfigureForHttpKernelWithNoTerminateWithException()
-    {
-        $listener = new DebugHandlersListener(null);
-        $eHandler = new ErrorHandler();
-        $event = new KernelEvent(
-            $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(),
-            Request::create('/'),
-            HttpKernelInterface::MASTER_REQUEST
-        );
-
-        $exception = null;
-        $h = set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure($event);
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertNull($h);
-    }
-
-    public function testConsoleEvent()
-    {
-        $dispatcher = new EventDispatcher();
-        $listener = new DebugHandlersListener(null);
-        $app = $this->getMockBuilder('Symfony\Component\Console\Application')->getMock();
-        $app->expects($this->once())->method('getHelperSet')->willReturn(new HelperSet());
-        $command = new Command(__FUNCTION__);
-        $command->setApplication($app);
-        $event = new ConsoleEvent($command, new ArgvInput(), new ConsoleOutput());
-
-        $dispatcher->addSubscriber($listener);
-
-        $xListeners = [
-            KernelEvents::REQUEST => [[$listener, 'configure']],
-            ConsoleEvents::COMMAND => [[$listener, 'configure']],
-            KernelEvents::EXCEPTION => [[$listener, 'onKernelException']],
-        ];
-        $this->assertSame($xListeners, $dispatcher->getListeners());
-
-        $exception = null;
-        $eHandler = new ErrorHandler();
-        set_error_handler([$eHandler, 'handleError']);
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $dispatcher->dispatch($event, ConsoleEvents::COMMAND);
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-        restore_error_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $xHandler = $eHandler->setExceptionHandler('var_dump');
-        $this->assertInstanceOf('Closure', $xHandler);
-
-        $app->expects($this->once())
-            ->method('renderException');
-
-        $xHandler(new \Exception());
-    }
-
-    public function testReplaceExistingExceptionHandler()
-    {
-        $userHandler = function () {};
-        $listener = new DebugHandlersListener($userHandler);
-        $eHandler = new ErrorHandler();
-        $eHandler->setExceptionHandler('var_dump');
-
-        $exception = null;
-        set_exception_handler([$eHandler, 'handleException']);
-        try {
-            $listener->configure();
-        } catch (\Exception $exception) {
-        }
-        restore_exception_handler();
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-
-        $this->assertSame($userHandler, $eHandler->setExceptionHandler('var_dump'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php
deleted file mode 100644
index 53b317b7..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelInterface;
-
-class DisallowRobotsIndexingListenerTest extends TestCase
-{
-    /**
-     * @dataProvider provideResponses
-     */
-    public function testInvoke(?string $expected, Response $response): void
-    {
-        $listener = new DisallowRobotsIndexingListener();
-
-        $event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $this->createMock(Request::class), KernelInterface::MASTER_REQUEST, $response);
-
-        $listener->onResponse($event);
-
-        $this->assertSame($expected, $response->headers->get('X-Robots-Tag'), 'Header doesn\'t match expectations');
-    }
-
-    public function provideResponses(): iterable
-    {
-        yield 'No header' => ['noindex', new Response()];
-
-        yield 'Header already set' => [
-            'something else',
-            new Response('', 204, ['X-Robots-Tag' => 'something else']),
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php
deleted file mode 100644
index b86a7552..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/DumpListenerTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Console\ConsoleEvents;
-use Symfony\Component\HttpKernel\EventListener\DumpListener;
-use Symfony\Component\VarDumper\Cloner\ClonerInterface;
-use Symfony\Component\VarDumper\Cloner\Data;
-use Symfony\Component\VarDumper\Dumper\DataDumperInterface;
-use Symfony\Component\VarDumper\VarDumper;
-
-/**
- * DumpListenerTest.
- *
- * @author Nicolas Grekas <p@tchwork.com>
- */
-class DumpListenerTest extends TestCase
-{
-    public function testSubscribedEvents()
-    {
-        $this->assertSame(
-            [ConsoleEvents::COMMAND => ['configure', 1024]],
-            DumpListener::getSubscribedEvents()
-        );
-    }
-
-    public function testConfigure()
-    {
-        $prevDumper = VarDumper::setHandler('var_dump');
-        VarDumper::setHandler($prevDumper);
-
-        $cloner = new MockCloner();
-        $dumper = new MockDumper();
-
-        ob_start();
-        $exception = null;
-        $listener = new DumpListener($cloner, $dumper);
-
-        try {
-            $listener->configure();
-
-            VarDumper::dump('foo');
-            VarDumper::dump('bar');
-
-            $this->assertSame('+foo-+bar-', ob_get_clean());
-        } catch (\Exception $exception) {
-        }
-
-        VarDumper::setHandler($prevDumper);
-
-        if (null !== $exception) {
-            throw $exception;
-        }
-    }
-}
-
-class MockCloner implements ClonerInterface
-{
-    public function cloneVar($var)
-    {
-        return new Data([[$var.'-']]);
-    }
-}
-
-class MockDumper implements DataDumperInterface
-{
-    public function dump(Data $data)
-    {
-        echo '+'.$data->getValue();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php
deleted file mode 100644
index 4a24066b..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ExceptionListenerTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\ExceptionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
-use Symfony\Component\HttpKernel\Tests\Logger;
-
-/**
- * ExceptionListenerTest.
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- *
- * @group time-sensitive
- */
-class ExceptionListenerTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $logger = new TestLogger();
-        $l = new ExceptionListener('foo', $logger);
-
-        $_logger = new \ReflectionProperty(\get_class($l), 'logger');
-        $_logger->setAccessible(true);
-        $_controller = new \ReflectionProperty(\get_class($l), 'controller');
-        $_controller->setAccessible(true);
-
-        $this->assertSame($logger, $_logger->getValue($l));
-        $this->assertSame('foo', $_controller->getValue($l));
-    }
-
-    /**
-     * @dataProvider provider
-     */
-    public function testHandleWithoutLogger($event, $event2)
-    {
-        $this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul');
-
-        $l = new ExceptionListener('foo');
-        $l->logKernelException($event);
-        $l->onKernelException($event);
-
-        $this->assertEquals(new Response('foo'), $event->getResponse());
-
-        try {
-            $l->logKernelException($event2);
-            $l->onKernelException($event2);
-            $this->fail('RuntimeException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('bar', $e->getMessage());
-            $this->assertSame('foo', $e->getPrevious()->getMessage());
-        }
-    }
-
-    /**
-     * @dataProvider provider
-     */
-    public function testHandleWithLogger($event, $event2)
-    {
-        $logger = new TestLogger();
-
-        $l = new ExceptionListener('foo', $logger);
-        $l->logKernelException($event);
-        $l->onKernelException($event);
-
-        $this->assertEquals(new Response('foo'), $event->getResponse());
-
-        try {
-            $l->logKernelException($event2);
-            $l->onKernelException($event2);
-            $this->fail('RuntimeException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('bar', $e->getMessage());
-            $this->assertSame('foo', $e->getPrevious()->getMessage());
-        }
-
-        $this->assertEquals(3, $logger->countErrors());
-        $this->assertCount(3, $logger->getLogs('critical'));
-    }
-
-    public function provider()
-    {
-        if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
-            return [[null, null]];
-        }
-
-        $request = new Request();
-        $exception = new \Exception('foo');
-        $event = new ExceptionEvent(new TestKernel(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
-        $event2 = new ExceptionEvent(new TestKernelThatThrowsException(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
-
-        return [
-            [$event, $event2],
-        ];
-    }
-
-    public function testSubRequestFormat()
-    {
-        $listener = new ExceptionListener('foo', $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock());
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel->expects($this->once())->method('handle')->willReturnCallback(function (Request $request) {
-            return new Response($request->getRequestFormat());
-        });
-
-        $request = Request::create('/');
-        $request->setRequestFormat('xml');
-
-        $event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
-        $listener->onKernelException($event);
-
-        $response = $event->getResponse();
-        $this->assertEquals('xml', $response->getContent());
-    }
-
-    public function testCSPHeaderIsRemoved()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel->expects($this->once())->method('handle')->willReturnCallback(function (Request $request) {
-            return new Response($request->getRequestFormat());
-        });
-
-        $listener = new ExceptionListener('foo', $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(), true);
-
-        $dispatcher->addSubscriber($listener);
-
-        $request = Request::create('/');
-        $event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
-        $dispatcher->dispatch($event, KernelEvents::EXCEPTION);
-
-        $response = new Response('', 200, ['content-security-policy' => "style-src 'self'"]);
-        $this->assertTrue($response->headers->has('content-security-policy'));
-
-        $event = new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertFalse($response->headers->has('content-security-policy'), 'CSP header has been removed');
-        $this->assertFalse($dispatcher->hasListeners(KernelEvents::RESPONSE), 'CSP removal listener has been removed');
-    }
-}
-
-class TestLogger extends Logger implements DebugLoggerInterface
-{
-    public function countErrors(Request $request = null): int
-    {
-        return \count($this->logs['critical']);
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        return new Response('foo');
-    }
-}
-
-class TestKernelThatThrowsException implements HttpKernelInterface
-{
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        throw new \RuntimeException('bar');
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php
deleted file mode 100644
index 5b045a8f..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/FragmentListenerTest.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\FragmentListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class FragmentListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnFragmentRoute()
-    {
-        $request = Request::create('http://example.com/foo?_path=foo%3Dbar%26_controller%3Dfoo');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $expected = $request->attributes->all();
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expected, $request->attributes->all());
-        $this->assertTrue($request->query->has('_path'));
-    }
-
-    public function testOnlyTriggeredIfControllerWasNotDefinedYet()
-    {
-        $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo');
-        $request->attributes->set('_controller', 'bar');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request, HttpKernelInterface::SUB_REQUEST);
-
-        $expected = $request->attributes->all();
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expected, $request->attributes->all());
-    }
-
-    public function testAccessDeniedWithNonSafeMethods()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException');
-        $request = Request::create('http://example.com/_fragment', 'POST');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-    }
-
-    public function testAccessDeniedWithWrongSignature()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException');
-        $request = Request::create('http://example.com/_fragment', 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-    }
-
-    public function testWithSignature()
-    {
-        $signer = new UriSigner('foo');
-        $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'), 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener($signer);
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals(['foo' => 'bar', '_controller' => 'foo'], $request->attributes->get('_route_params'));
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    public function testRemovesPathWithControllerDefined()
-    {
-        $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo');
-
-        $listener = new FragmentListener(new UriSigner('foo'));
-        $event = $this->createRequestEvent($request, HttpKernelInterface::SUB_REQUEST);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    public function testRemovesPathWithControllerNotDefined()
-    {
-        $signer = new UriSigner('foo');
-        $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar'), 'GET', [], [], [], ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $listener = new FragmentListener($signer);
-        $event = $this->createRequestEvent($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertFalse($request->query->has('_path'));
-    }
-
-    private function createRequestEvent(Request $request, $requestType = HttpKernelInterface::MASTER_REQUEST)
-    {
-        return new RequestEvent($this->getMockBuilder(HttpKernelInterface::class)->getMock(), $request, $requestType);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php
deleted file mode 100644
index ef3b7d1b..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/LocaleAwareListenerTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\LocaleAwareListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-class LocaleAwareListenerTest extends TestCase
-{
-    private $listener;
-    private $localeAwareService;
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->localeAwareService = $this->getMockBuilder(LocaleAwareInterface::class)->getMock();
-        $this->requestStack = new RequestStack();
-        $this->listener = new LocaleAwareListener(new \ArrayIterator([$this->localeAwareService]), $this->requestStack);
-    }
-
-    public function testLocaleIsSetInOnKernelRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->will($this->throwException(new \InvalidArgumentException()));
-        $this->localeAwareService
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $this->requestStack->push($this->createRequest('fr'));
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testLocaleIsSetToDefaultOnKernelFinishRequestWhenParentRequestDoesNotExist()
-    {
-        $this->localeAwareService
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
-    {
-        $this->localeAwareService
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->will($this->throwException(new \InvalidArgumentException()));
-        $this->localeAwareService
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->requestStack->push($this->createRequest('fr'));
-        $this->requestStack->push($subRequest = $this->createRequest('de'));
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $subRequest, HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    private function createHttpKernel()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    private function createRequest($locale)
-    {
-        $request = new Request();
-        $request->setLocale($locale);
-
-        return $request;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
deleted file mode 100644
index a83b8174..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/LocaleListenerTest.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\LocaleListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class LocaleListenerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock();
-    }
-
-    public function testIsAnEventSubscriber()
-    {
-        $this->assertInstanceOf(EventSubscriberInterface::class, new LocaleListener($this->requestStack));
-    }
-
-    public function testRegisteredEvent()
-    {
-        $this->assertEquals(
-            [
-                KernelEvents::REQUEST => [['setDefaultLocale', 100], ['onKernelRequest', 16]],
-                KernelEvents::FINISH_REQUEST => [['onKernelFinishRequest', 0]],
-            ],
-            LocaleListener::getSubscribedEvents()
-        );
-    }
-
-    public function testDefaultLocale()
-    {
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request = Request::create('/'));
-
-        $listener->setDefaultLocale($event);
-        $this->assertEquals('fr', $request->getLocale());
-    }
-
-    public function testLocaleFromRequestAttribute()
-    {
-        $request = Request::create('/');
-        $request->cookies->set(session_name(), 'value');
-
-        $request->attributes->set('_locale', 'es');
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request);
-
-        $listener->onKernelRequest($event);
-        $this->assertEquals('es', $request->getLocale());
-    }
-
-    public function testLocaleSetForRoutingContext()
-    {
-        // the request context is updated
-        $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
-        $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
-
-        $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(['getContext'])->disableOriginalConstructor()->getMock();
-        $router->expects($this->once())->method('getContext')->willReturn($context);
-
-        $request = Request::create('/');
-
-        $request->attributes->set('_locale', 'es');
-        $listener = new LocaleListener($this->requestStack, 'fr', $router);
-        $listener->onKernelRequest($this->getEvent($request));
-    }
-
-    public function testRouterResetWithParentRequestOnKernelFinishRequest()
-    {
-        // the request context is updated
-        $context = $this->getMockBuilder('Symfony\Component\Routing\RequestContext')->getMock();
-        $context->expects($this->once())->method('setParameter')->with('_locale', 'es');
-
-        $router = $this->getMockBuilder('Symfony\Component\Routing\Router')->setMethods(['getContext'])->disableOriginalConstructor()->getMock();
-        $router->expects($this->once())->method('getContext')->willReturn($context);
-
-        $parentRequest = Request::create('/');
-        $parentRequest->setLocale('es');
-
-        $this->requestStack->expects($this->once())->method('getParentRequest')->willReturn($parentRequest);
-
-        $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FinishRequestEvent')->disableOriginalConstructor()->getMock();
-
-        $listener = new LocaleListener($this->requestStack, 'fr', $router);
-        $listener->onKernelFinishRequest($event);
-    }
-
-    public function testRequestLocaleIsNotOverridden()
-    {
-        $request = Request::create('/');
-        $request->setLocale('de');
-        $listener = new LocaleListener($this->requestStack, 'fr');
-        $event = $this->getEvent($request);
-
-        $listener->onKernelRequest($event);
-        $this->assertEquals('de', $request->getLocale());
-    }
-
-    private function getEvent(Request $request): RequestEvent
-    {
-        return new RequestEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), $request, HttpKernelInterface::MASTER_REQUEST);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php
deleted file mode 100644
index 3aaff123..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ProfilerListenerTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\Event\TerminateEvent;
-use Symfony\Component\HttpKernel\EventListener\ProfilerListener;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\Profiler\Profile;
-
-class ProfilerListenerTest extends TestCase
-{
-    /**
-     * Test a master and sub request with an exception and `onlyException` profiler option enabled.
-     */
-    public function testKernelTerminate()
-    {
-        $profile = new Profile('token');
-
-        $profiler = $this->getMockBuilder('Symfony\Component\HttpKernel\Profiler\Profiler')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $profiler->expects($this->once())
-            ->method('collect')
-            ->willReturn($profile);
-
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-
-        $masterRequest = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $subRequest = $this->getMockBuilder('Symfony\Component\HttpFoundation\Request')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $response = $this->getMockBuilder('Symfony\Component\HttpFoundation\Response')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $requestStack = new RequestStack();
-        $requestStack->push($masterRequest);
-
-        $onlyException = true;
-        $listener = new ProfilerListener($profiler, $requestStack, null, $onlyException);
-
-        // master request
-        $listener->onKernelResponse(new ResponseEvent($kernel, $masterRequest, Kernel::MASTER_REQUEST, $response));
-
-        // sub request
-        $listener->onKernelException(new ExceptionEvent($kernel, $subRequest, Kernel::SUB_REQUEST, new HttpException(404)));
-        $listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, Kernel::SUB_REQUEST, $response));
-
-        $listener->onKernelTerminate(new TerminateEvent($kernel, $masterRequest, $response));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php
deleted file mode 100644
index 1aaa64bc..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ResponseListenerTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\ResponseListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class ResponseListenerTest extends TestCase
-{
-    private $dispatcher;
-
-    private $kernel;
-
-    protected function setUp(): void
-    {
-        $this->dispatcher = new EventDispatcher();
-        $listener = new ResponseListener('UTF-8');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-
-        $this->kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    protected function tearDown(): void
-    {
-        $this->dispatcher = null;
-        $this->kernel = null;
-    }
-
-    public function testFilterDoesNothingForSubRequests()
-    {
-        $response = new Response('foo');
-
-        $event = new ResponseEvent($this->kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('content-type'));
-    }
-
-    public function testFilterSetsNonDefaultCharsetIfNotOverridden()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-
-        $event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-15', $response->getCharset());
-    }
-
-    public function testFilterDoesNothingIfCharsetIsOverridden()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-        $response->setCharset('ISO-8859-1');
-
-        $event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-1', $response->getCharset());
-    }
-
-    public function testFiltersSetsNonDefaultCharsetIfNotOverriddenOnNonTextContentType()
-    {
-        $listener = new ResponseListener('ISO-8859-15');
-        $this->dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse'], 1);
-
-        $response = new Response('foo');
-        $request = Request::create('/');
-        $request->setRequestFormat('application/json');
-
-        $event = new ResponseEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
-        $this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('ISO-8859-15', $response->getCharset());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php
deleted file mode 100644
index ea88d4b3..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/RouterListenerTest.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\ExceptionListener;
-use Symfony\Component\HttpKernel\EventListener\RouterListener;
-use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\Routing\Exception\NoConfigurationException;
-use Symfony\Component\Routing\RequestContext;
-
-class RouterListenerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->disableOriginalConstructor()->getMock();
-    }
-
-    /**
-     * @dataProvider getPortData
-     */
-    public function testPort($defaultHttpPort, $defaultHttpsPort, $uri, $expectedHttpPort, $expectedHttpsPort)
-    {
-        $urlMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\UrlMatcherInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $context = new RequestContext();
-        $context->setHttpPort($defaultHttpPort);
-        $context->setHttpsPort($defaultHttpsPort);
-        $urlMatcher->expects($this->any())
-            ->method('getContext')
-            ->willReturn($context);
-
-        $listener = new RouterListener($urlMatcher, $this->requestStack);
-        $event = $this->createRequestEventForUri($uri);
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals($expectedHttpPort, $context->getHttpPort());
-        $this->assertEquals($expectedHttpsPort, $context->getHttpsPort());
-        $this->assertEquals(0 === strpos($uri, 'https') ? 'https' : 'http', $context->getScheme());
-    }
-
-    public function getPortData()
-    {
-        return [
-            [80, 443, 'http://localhost/', 80, 443],
-            [80, 443, 'http://localhost:90/', 90, 443],
-            [80, 443, 'https://localhost/', 80, 443],
-            [80, 443, 'https://localhost:90/', 80, 90],
-        ];
-    }
-
-    private function createRequestEventForUri(string $uri): RequestEvent
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create($uri);
-        $request->attributes->set('_controller', null); // Prevents going in to routing process
-
-        return new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-    }
-
-    public function testInvalidMatcher()
-    {
-        $this->expectException('InvalidArgumentException');
-        new RouterListener(new \stdClass(), $this->requestStack);
-    }
-
-    public function testRequestMatcher()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->once())
-                       ->method('matchRequest')
-                       ->with($this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
-                       ->willReturn([]);
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-    }
-
-    public function testSubRequestWithDifferentMethod()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/', 'post');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->any())
-                       ->method('matchRequest')
-                       ->with($this->isInstanceOf('Symfony\Component\HttpFoundation\Request'))
-                       ->willReturn([]);
-
-        $context = new RequestContext();
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-
-        // sub-request with another HTTP method
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/', 'get');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::SUB_REQUEST);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertEquals('GET', $context->getMethod());
-    }
-
-    /**
-     * @dataProvider getLoggingParameterData
-     */
-    public function testLoggingParameter($parameter, $log, $parameters)
-    {
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->once())
-            ->method('matchRequest')
-            ->willReturn($parameter);
-
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())
-            ->method('info')
-            ->with($this->equalTo($log), $this->equalTo($parameters));
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://localhost/');
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext(), $logger);
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-    }
-
-    public function getLoggingParameterData()
-    {
-        return [
-            [['_route' => 'foo'], 'Matched route "{route}".', ['route' => 'foo', 'route_parameters' => ['_route' => 'foo'], 'request_uri' => 'http://localhost/', 'method' => 'GET']],
-            [[], 'Matched route "{route}".', ['route' => 'n/a', 'route_parameters' => [], 'request_uri' => 'http://localhost/', 'method' => 'GET']],
-        ];
-    }
-
-    public function testWithBadRequest()
-    {
-        $requestStack = new RequestStack();
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher->expects($this->never())->method('matchRequest');
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new ValidateRequestListener());
-        $dispatcher->addSubscriber(new RouterListener($requestMatcher, $requestStack, new RequestContext()));
-        $dispatcher->addSubscriber(new ExceptionListener(function () {
-            return new Response('Exception handled', 400);
-        }));
-
-        $kernel = new HttpKernel($dispatcher, new ControllerResolver(), $requestStack, new ArgumentResolver());
-
-        $request = Request::create('http://localhost/');
-        $request->headers->set('host', '###');
-        $response = $kernel->handle($request);
-        $this->assertSame(400, $response->getStatusCode());
-    }
-
-    public function testNoRoutingConfigurationResponse()
-    {
-        $requestStack = new RequestStack();
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $requestMatcher
-            ->expects($this->once())
-            ->method('matchRequest')
-            ->willThrowException(new NoConfigurationException())
-        ;
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addSubscriber(new RouterListener($requestMatcher, $requestStack, new RequestContext()));
-
-        $kernel = new HttpKernel($dispatcher, new ControllerResolver(), $requestStack, new ArgumentResolver());
-
-        $request = Request::create('http://localhost/');
-        $response = $kernel->handle($request);
-        $this->assertSame(404, $response->getStatusCode());
-        $this->assertStringContainsString('Welcome', $response->getContent());
-    }
-
-    public function testRequestWithBadHost()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\BadRequestHttpException');
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('http://bad host %22/');
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $requestMatcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-
-        $listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext());
-        $listener->onKernelRequest($event);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php
deleted file mode 100644
index 6cdd7476..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SaveSessionListenerTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SaveSessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @group legacy
- */
-class SaveSessionListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnMasterRequest()
-    {
-        $listener = new SaveSessionListener();
-        $event = $this->getMockBuilder(ResponseEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(false);
-        $event->expects($this->never())->method('getRequest');
-
-        // sub request
-        $listener->onKernelResponse($event);
-    }
-
-    public function testSessionSaved()
-    {
-        $listener = new SaveSessionListener();
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $session = $this->getMockBuilder(SessionInterface::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->once())->method('isStarted')->willReturn(true);
-        $session->expects($this->once())->method('save');
-
-        $request = new Request();
-        $request->setSession($session);
-        $response = new Response();
-        $listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php
deleted file mode 100644
index 8fc9f6bc..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SessionListenerTest.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\DependencyInjection\ServiceLocator;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
-use Symfony\Component\HttpKernel\EventListener\SessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class SessionListenerTest extends TestCase
-{
-    public function testOnlyTriggeredOnMasterRequest()
-    {
-        $listener = $this->getMockForAbstractClass(AbstractSessionListener::class);
-        $event = $this->getMockBuilder(RequestEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(false);
-        $event->expects($this->never())->method('getRequest');
-
-        // sub request
-        $listener->onKernelRequest($event);
-    }
-
-    public function testSessionIsSet()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-
-        $requestStack = $this->getMockBuilder(RequestStack::class)->getMock();
-        $requestStack->expects($this->once())->method('getMasterRequest')->willReturn(null);
-
-        $sessionStorage = $this->getMockBuilder(NativeSessionStorage::class)->getMock();
-        $sessionStorage->expects($this->never())->method('setOptions')->with(['cookie_secure' => true]);
-
-        $container = new Container();
-        $container->set('session', $session);
-        $container->set('request_stack', $requestStack);
-        $container->set('session_storage', $sessionStorage);
-
-        $request = new Request();
-        $listener = new SessionListener($container);
-
-        $event = $this->getMockBuilder(RequestEvent::class)->disableOriginalConstructor()->getMock();
-        $event->expects($this->once())->method('isMasterRequest')->willReturn(true);
-        $event->expects($this->once())->method('getRequest')->willReturn($request);
-
-        $listener->onKernelRequest($event);
-
-        $this->assertTrue($request->hasSession());
-        $this->assertSame($session, $request->getSession());
-    }
-
-    public function testResponseIsPrivateIfSessionStarted()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-
-        $response = new Response();
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->has('Expires'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('0', $response->headers->getCacheControlDirective('max-age'));
-        $this->assertLessThanOrEqual((new \DateTime('now', new \DateTimeZone('UTC'))), (new \DateTime($response->headers->get('Expires'))));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testResponseIsStillPublicIfSessionStartedAndHeaderPresent()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-
-        $response = new Response();
-        $response->setSharedMaxAge(60);
-        $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testUninitializedSession()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-        $response = new Response();
-        $response->setSharedMaxAge(60);
-        $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
-
-        $container = new ServiceLocator([
-            'initialized_session' => function () {},
-        ]);
-
-        $listener = new SessionListener($container);
-        $listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('public'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
-    }
-
-    public function testSurrogateMasterRequestIsPublic()
-    {
-        $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
-        $session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1));
-
-        $container = new Container();
-        $container->set('initialized_session', $session);
-        $container->set('session', $session);
-
-        $listener = new SessionListener($container);
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
-
-        $request = new Request();
-        $response = new Response();
-        $response->setCache(['public' => true, 'max_age' => '30']);
-        $listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
-        $this->assertTrue($request->hasSession());
-
-        $subRequest = clone $request;
-        $this->assertSame($request->getSession(), $subRequest->getSession());
-        $listener->onKernelRequest(new RequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
-        $listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST, $response));
-        $listener->onFinishRequest(new FinishRequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
-
-        $this->assertFalse($response->headers->has('Expires'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('30', $response->headers->getCacheControlDirective('max-age'));
-
-        $listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
-
-        $this->assertTrue($response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertSame('0', $response->headers->getCacheControlDirective('max-age'));
-
-        $this->assertTrue($response->headers->has('Expires'));
-        $this->assertLessThanOrEqual((new \DateTime('now', new \DateTimeZone('UTC'))), (new \DateTime($response->headers->get('Expires'))));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php
deleted file mode 100644
index fc51de25..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/SurrogateListenerTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SurrogateListener;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class SurrogateListenerTest extends TestCase
-{
-    public function testFilterDoesNothingForSubRequests()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo <esi:include src="" />');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-
-    public function testFilterWhenThereIsSomeEsiIncludes()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo <esi:include src="" />');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('content="ESI/1.0"', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-
-    public function testFilterWhenThereIsNoEsiIncludes()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $response = new Response('foo');
-        $listener = new SurrogateListener(new Esi());
-
-        $dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-        $dispatcher->dispatch($event, KernelEvents::RESPONSE);
-
-        $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php
deleted file mode 100644
index 1ae3bb38..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/TestSessionListenerTest.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\Event\ResponseEvent;
-use Symfony\Component\HttpKernel\EventListener\SessionListener;
-use Symfony\Component\HttpKernel\EventListener\TestSessionListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * SessionListenerTest.
- *
- * Tests SessionListener.
- *
- * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
- */
-class TestSessionListenerTest extends TestCase
-{
-    /**
-     * @var TestSessionListener
-     */
-    private $listener;
-
-    /**
-     * @var SessionInterface
-     */
-    private $session;
-
-    protected function setUp(): void
-    {
-        $this->listener = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\EventListener\AbstractTestSessionListener');
-        $this->session = $this->getSession();
-        $this->listener->expects($this->any())
-             ->method('getSession')
-             ->willReturn($this->session);
-    }
-
-    public function testShouldSaveMasterRequestSession()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionMustBeSaved();
-
-        $this->filterResponse(new Request());
-    }
-
-    public function testShouldNotSaveSubRequestSession()
-    {
-        $this->sessionMustNotBeSaved();
-
-        $this->filterResponse(new Request(), HttpKernelInterface::SUB_REQUEST);
-    }
-
-    public function testDoesNotDeleteCookieIfUsingSessionLifetime()
-    {
-        $this->sessionHasBeenStarted();
-
-        @ini_set('session.cookie_lifetime', 0);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-        $cookies = $response->headers->getCookies();
-
-        $this->assertEquals(0, reset($cookies)->getExpiresTime());
-    }
-
-    /**
-     * @requires function \Symfony\Component\HttpFoundation\Session\Session::isEmpty
-     */
-    public function testEmptySessionDoesNotSendCookie()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-
-        $this->assertSame([], $response->headers->getCookies());
-    }
-
-    public function testEmptySessionWithNewSessionIdDoesSendCookie()
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-        $this->fixSessionId('456');
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
-
-        $this->assertNotEmpty($response->headers->getCookies());
-    }
-
-    /**
-     * @dataProvider anotherCookieProvider
-     */
-    public function testSessionWithNewSessionIdAndNewCookieDoesNotSendAnotherCookie($existing, array $expected)
-    {
-        $this->sessionHasBeenStarted();
-        $this->sessionIsEmpty();
-        $this->fixSessionId('456');
-
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-
-        $response = new Response('', 200, ['Set-Cookie' => $existing]);
-
-        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
-
-        $this->assertSame($expected, $response->headers->get('Set-Cookie', null, false));
-    }
-
-    public function anotherCookieProvider()
-    {
-        return [
-            'same' => ['MOCKSESSID=789; path=/', ['MOCKSESSID=789; path=/']],
-            'different domain' => ['MOCKSESSID=789; path=/; domain=example.com', ['MOCKSESSID=789; path=/; domain=example.com', 'MOCKSESSID=456; path=/']],
-            'different path' => ['MOCKSESSID=789; path=/foo', ['MOCKSESSID=789; path=/foo', 'MOCKSESSID=456; path=/']],
-        ];
-    }
-
-    public function testUnstartedSessionIsNotSave()
-    {
-        $this->sessionHasNotBeenStarted();
-        $this->sessionMustNotBeSaved();
-
-        $this->filterResponse(new Request());
-    }
-
-    public function testDoesNotThrowIfRequestDoesNotHaveASession()
-    {
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, new Response());
-
-        $this->listener->onKernelResponse($event);
-
-        $this->assertTrue(true);
-    }
-
-    private function filterResponse(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, Response $response = null)
-    {
-        $request->setSession($this->session);
-        $response = $response ?: new Response();
-        $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock();
-        $event = new ResponseEvent($kernel, $request, $type, $response);
-
-        $this->listener->onKernelResponse($event);
-
-        $this->assertSame($response, $event->getResponse());
-
-        return $response;
-    }
-
-    private function sessionMustNotBeSaved()
-    {
-        $this->session->expects($this->never())
-            ->method('save');
-    }
-
-    private function sessionMustBeSaved()
-    {
-        $this->session->expects($this->once())
-            ->method('save');
-    }
-
-    private function sessionHasBeenStarted()
-    {
-        $this->session->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(true);
-    }
-
-    private function sessionHasNotBeenStarted()
-    {
-        $this->session->expects($this->once())
-            ->method('isStarted')
-            ->willReturn(false);
-    }
-
-    private function sessionIsEmpty()
-    {
-        $this->session->expects($this->once())
-            ->method('isEmpty')
-            ->willReturn(true);
-    }
-
-    private function fixSessionId($sessionId)
-    {
-        $this->session->expects($this->any())
-            ->method('getId')
-            ->willReturn($sessionId);
-    }
-
-    private function getSession()
-    {
-        $mock = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\Session')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        // set return value for getName()
-        $mock->expects($this->any())->method('getName')->willReturn('MOCKSESSID');
-
-        return $mock;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
deleted file mode 100644
index 17bf4261..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/TranslatorListenerTest.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\TranslatorListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Contracts\Translation\LocaleAwareInterface;
-
-/**
- * @group legacy
- */
-class TranslatorListenerTest extends TestCase
-{
-    private $listener;
-    private $translator;
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->translator = $this->getMockBuilder(LocaleAwareInterface::class)->getMock();
-        $this->requestStack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->getMock();
-        $this->listener = new TranslatorListener($this->translator, $this->requestStack);
-    }
-
-    public function testLocaleIsSetInOnKernelRequest()
-    {
-        $this->translator
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelRequest()
-    {
-        $this->translator
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->willThrowException(new \InvalidArgumentException());
-        $this->translator
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $event = new RequestEvent($this->createHttpKernel(), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
-        $this->listener->onKernelRequest($event);
-    }
-
-    public function testLocaleIsSetInOnKernelFinishRequestWhenParentRequestExists()
-    {
-        $this->translator
-            ->expects($this->once())
-            ->method('setLocale')
-            ->with($this->equalTo('fr'));
-
-        $this->setMasterRequest($this->createRequest('fr'));
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testLocaleIsNotSetInOnKernelFinishRequestWhenParentRequestDoesNotExist()
-    {
-        $this->translator
-            ->expects($this->never())
-            ->method('setLocale');
-
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    public function testDefaultLocaleIsUsedOnExceptionsInOnKernelFinishRequest()
-    {
-        $this->translator
-            ->expects($this->at(0))
-            ->method('setLocale')
-            ->willThrowException(new \InvalidArgumentException());
-        $this->translator
-            ->expects($this->at(1))
-            ->method('setLocale')
-            ->with($this->equalTo('en'));
-
-        $this->setMasterRequest($this->createRequest('fr'));
-        $event = new FinishRequestEvent($this->createHttpKernel(), $this->createRequest('de'), HttpKernelInterface::SUB_REQUEST);
-        $this->listener->onKernelFinishRequest($event);
-    }
-
-    private function createHttpKernel()
-    {
-        return $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-    }
-
-    private function createRequest($locale)
-    {
-        $request = new Request();
-        $request->setLocale($locale);
-
-        return $request;
-    }
-
-    private function setMasterRequest($request)
-    {
-        $this->requestStack
-            ->expects($this->any())
-            ->method('getParentRequest')
-            ->willReturn($request);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php
deleted file mode 100644
index 7cec6814..00000000
--- a/vendor/symfony/http-kernel/Tests/EventListener/ValidateRequestListenerTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\EventListener;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Event\RequestEvent;
-use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class ValidateRequestListenerTest extends TestCase
-{
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testListenerThrowsWhenMasterRequestHasInconsistentClientIps()
-    {
-        $this->expectException('Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-
-        $request = new Request();
-        $request->setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_FOR | Request::HEADER_FORWARDED);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('FORWARDED', 'for=2.2.2.2');
-        $request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
-
-        $dispatcher->addListener(KernelEvents::REQUEST, [new ValidateRequestListener(), 'onKernelRequest']);
-        $event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
-
-        $dispatcher->dispatch($event, KernelEvents::REQUEST);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php
deleted file mode 100644
index 3a34cc47..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/AccessDeniedHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-
-class AccessDeniedHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new AccessDeniedHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php
deleted file mode 100644
index 462fd9cb..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/BadRequestHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
-
-class BadRequestHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new BadRequestHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php
deleted file mode 100644
index 760600a1..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/ConflictHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\ConflictHttpException;
-
-class ConflictHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new ConflictHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php
deleted file mode 100644
index 30dafe49..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/GoneHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\GoneHttpException;
-
-class GoneHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new GoneHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php
deleted file mode 100644
index a9431f4b..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/HttpExceptionTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Exception\HttpException;
-
-class HttpExceptionTest extends TestCase
-{
-    public function headerDataProvider()
-    {
-        return [
-            [['X-Test' => 'Test']],
-            [['X-Test' => 1]],
-            [
-                [
-                    ['X-Test' => 'Test'],
-                    ['X-Test-2' => 'Test-2'],
-                ],
-            ],
-        ];
-    }
-
-    public function testHeadersDefault()
-    {
-        $exception = $this->createException();
-        $this->assertSame([], $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersConstructor($headers)
-    {
-        $exception = new HttpException(200, null, null, $headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = $this->createException();
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    public function testThrowableIsAllowedForPrevious()
-    {
-        $previous = new class('Error of PHP 7+') extends \Error {
-        };
-        $exception = $this->createException(null, $previous);
-        $this->assertSame($previous, $exception->getPrevious());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new HttpException(200, $message, $previous, $headers, $code);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php
deleted file mode 100644
index 8676d672..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/LengthRequiredHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\LengthRequiredHttpException;
-
-class LengthRequiredHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new LengthRequiredHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php
deleted file mode 100644
index efb0b50c..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/MethodNotAllowedHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-
-class MethodNotAllowedHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefault()
-    {
-        $exception = new MethodNotAllowedHttpException(['GET', 'PUT']);
-        $this->assertSame(['Allow' => 'GET, PUT'], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1200',
-        ];
-
-        $exception = new MethodNotAllowedHttpException(['get'], null, null, null, $headers);
-
-        $headers['Allow'] = 'GET';
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new MethodNotAllowedHttpException(['GET']);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new MethodNotAllowedHttpException(['get'], $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php
deleted file mode 100644
index 021c69e2..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/NotAcceptableHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
-
-class NotAcceptableHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new NotAcceptableHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php
deleted file mode 100644
index 0bf369b1..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/NotFoundHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-class NotFoundHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new NotFoundHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php
deleted file mode 100644
index 04d79c49..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/PreconditionFailedHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\PreconditionFailedHttpException;
-
-class PreconditionFailedHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new PreconditionFailedHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php
deleted file mode 100644
index 82076617..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/PreconditionRequiredHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\PreconditionRequiredHttpException;
-
-class PreconditionRequiredHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new PreconditionRequiredHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php
deleted file mode 100644
index fac197c8..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/ServiceUnavailableHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
-
-class ServiceUnavailableHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefaultRetryAfter()
-    {
-        $exception = new ServiceUnavailableHttpException(10);
-        $this->assertSame(['Retry-After' => 10], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1337',
-        ];
-
-        $exception = new ServiceUnavailableHttpException(1337, null, null, null, $headers);
-
-        $headers['Retry-After'] = 1337;
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new ServiceUnavailableHttpException(10);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new ServiceUnavailableHttpException(null, $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php
deleted file mode 100644
index 8b59e989..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/TooManyRequestsHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
-
-class TooManyRequestsHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefaultRertyAfter()
-    {
-        $exception = new TooManyRequestsHttpException(10);
-        $this->assertSame(['Retry-After' => 10], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=69',
-        ];
-
-        $exception = new TooManyRequestsHttpException(69, null, null, null, $headers);
-
-        $headers['Retry-After'] = 69;
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new TooManyRequestsHttpException(10);
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new TooManyRequestsHttpException(null, $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php
deleted file mode 100644
index 92d427b6..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnauthorizedHttpExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
-
-class UnauthorizedHttpExceptionTest extends HttpExceptionTest
-{
-    public function testHeadersDefault()
-    {
-        $exception = new UnauthorizedHttpException('Challenge');
-        $this->assertSame(['WWW-Authenticate' => 'Challenge'], $exception->getHeaders());
-    }
-
-    public function testWithHeaderConstruct()
-    {
-        $headers = [
-            'Cache-Control' => 'public, s-maxage=1200',
-        ];
-
-        $exception = new UnauthorizedHttpException('Challenge', null, null, null, $headers);
-
-        $headers['WWW-Authenticate'] = 'Challenge';
-
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    /**
-     * @dataProvider headerDataProvider
-     */
-    public function testHeadersSetter($headers)
-    {
-        $exception = new UnauthorizedHttpException('Challenge');
-        $exception->setHeaders($headers);
-        $this->assertSame($headers, $exception->getHeaders());
-    }
-
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnauthorizedHttpException('Challenge', $message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php
deleted file mode 100644
index ffa4e177..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnprocessableEntityHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
-
-class UnprocessableEntityHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnprocessableEntityHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php b/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php
deleted file mode 100644
index fa28bbd1..00000000
--- a/vendor/symfony/http-kernel/Tests/Exception/UnsupportedMediaTypeHttpExceptionTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Exception;
-
-use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException;
-
-class UnsupportedMediaTypeHttpExceptionTest extends HttpExceptionTest
-{
-    protected function createException(string $message = null, \Throwable $previous = null, ?int $code = 0, array $headers = [])
-    {
-        return new UnsupportedMediaTypeHttpException($message, $previous, $code, $headers);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/Resources/.gitkeep b/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/Resources/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt b/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php b/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
deleted file mode 100644
index 35acb419..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-class ClearableService
-{
-    public static $counter = 0;
-
-    public function clear()
-    {
-        ++self::$counter;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
deleted file mode 100644
index e8e0b603..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class BasicTypesController
-{
-    public function action(string $foo, int $bar, float $baz)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
deleted file mode 100644
index 9b4754b4..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-use Symfony\Component\HttpFoundation\Request;
-
-class ExtendingRequest extends Request
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
deleted file mode 100644
index 9fa54ee8..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-use Symfony\Component\HttpFoundation\Session\Session;
-
-class ExtendingSession extends Session
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php
deleted file mode 100644
index 9db4df7b..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class NullableController
-{
-    public function action(?string $foo, ?\stdClass $bar, ?string $baz = 'value', $mandatory)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php b/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php
deleted file mode 100644
index c3981245..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/Controller/VariadicController.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
-
-class VariadicController
-{
-    public function action($foo, ...$bar)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php b/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php
deleted file mode 100644
index 4f5de182..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/DataCollector/CloneVarDataCollector.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\DataCollector;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollector;
-
-class CloneVarDataCollector extends DataCollector
-{
-    private $varToClone;
-
-    public function __construct($varToClone)
-    {
-        $this->varToClone = $varToClone;
-    }
-
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->data = $this->cloneVar($this->varToClone);
-    }
-
-    public function reset()
-    {
-        $this->data = [];
-    }
-
-    public function getData()
-    {
-        return $this->data;
-    }
-
-    public function getName()
-    {
-        return 'clone_var';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php
deleted file mode 100644
index 0fd64316..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/DependencyInjection/ExtensionNotValidExtension.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle\DependencyInjection;
-
-class ExtensionNotValidExtension
-{
-    public function getAlias()
-    {
-        return 'extension_not_valid';
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php
deleted file mode 100644
index 34e29203..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionNotValidBundle/ExtensionNotValidBundle.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle;
-
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-
-class ExtensionNotValidBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
deleted file mode 100644
index 10857171..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\DependencyInjection;
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Extension\Extension;
-
-class ExtensionPresentExtension extends Extension
-{
-    public function load(array $configs, ContainerBuilder $container)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php
deleted file mode 100644
index 36a7ad40..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/ExtensionPresentBundle.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle;
-
-use Symfony\Component\HttpKernel\Bundle\Bundle;
-
-class ExtensionPresentBundle extends Bundle
-{
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
deleted file mode 100644
index f7baaa63..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelForOverrideName extends Kernel
-{
-    protected $name = 'overridden';
-
-    public function registerBundles()
-    {
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
deleted file mode 100644
index 7b870250..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelForTest extends Kernel
-{
-    public function getBundleMap()
-    {
-        return $this->bundleMap;
-    }
-
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function isBooted()
-    {
-        return $this->booted;
-    }
-
-    public function getProjectDir(): string
-    {
-        return __DIR__;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php b/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
deleted file mode 100644
index 23915573..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\HttpKernel\Kernel;
-
-class KernelWithoutBundles extends Kernel
-{
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function getProjectDir()
-    {
-        return __DIR__;
-    }
-
-    protected function build(ContainerBuilder $container)
-    {
-        $container->setParameter('test_executed', true);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php b/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
deleted file mode 100644
index ffb72a35..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-class ResettableService
-{
-    public static $counter = 0;
-
-    public function reset()
-    {
-        ++self::$counter;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/Resources/FooBundle/foo.txt b/vendor/symfony/http-kernel/Tests/Fixtures/Resources/FooBundle/foo.txt
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php b/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php
deleted file mode 100644
index 140cbfbf..00000000
--- a/vendor/symfony/http-kernel/Tests/Fixtures/TestClient.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fixtures;
-
-use Symfony\Component\HttpKernel\HttpKernelBrowser;
-
-class TestClient extends HttpKernelBrowser
-{
-    protected function getScript($request)
-    {
-        $script = parent::getScript($request);
-
-        $autoload = file_exists(__DIR__.'/../../vendor/autoload.php')
-            ? __DIR__.'/../../vendor/autoload.php'
-            : __DIR__.'/../../../../../../vendor/autoload.php'
-        ;
-
-        $script = preg_replace('/(\->register\(\);)/', "$0\nrequire_once '$autoload';\n", $script);
-
-        return $script;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php
deleted file mode 100644
index df74ade1..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/EsiFragmentRendererTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class EsiFragmentRendererTest extends TestCase
-{
-    public function testRenderFallbackToInlineStrategyIfEsiNotSupported()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true));
-        $strategy->render('/', Request::create('/'));
-    }
-
-    public function testRenderFallbackWithScalar()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(true), new UriSigner('foo'));
-        $request = Request::create('/');
-        $reference = new ControllerReference('main_controller', ['foo' => [true]], []);
-        $strategy->render($reference, $request);
-    }
-
-    public function testRender()
-    {
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $this->assertEquals('<esi:include src="/" />', $strategy->render('/', $request)->getContent());
-        $this->assertEquals("<esi:comment text=\"This is a comment\" />\n<esi:include src=\"/\" />", $strategy->render('/', $request, ['comment' => 'This is a comment'])->getContent());
-        $this->assertEquals('<esi:include src="/" alt="foo" />', $strategy->render('/', $request, ['alt' => 'foo'])->getContent());
-    }
-
-    public function testRenderControllerReference()
-    {
-        $signer = new UriSigner('foo');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy(), $signer);
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $reference = new ControllerReference('main_controller', [], []);
-        $altReference = new ControllerReference('alt_controller', [], []);
-
-        $this->assertEquals(
-            '<esi:include src="/_fragment?_hash=Jz1P8NErmhKTeI6onI1EdAXTB85359MY3RIk5mSJ60w%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dmain_controller" alt="/_fragment?_hash=iPJEdRoUpGrM1ztqByiorpfMPtiW%2FOWwdH1DBUXHhEc%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dalt_controller" />',
-            $strategy->render($reference, $request, ['alt' => $altReference])->getContent()
-        );
-    }
-
-    public function testRenderControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $strategy->render(new ControllerReference('main_controller'), $request);
-    }
-
-    public function testRenderAltControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new EsiFragmentRenderer(new Esi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'ESI/1.0');
-
-        $strategy->render('/', $request, ['alt' => new ControllerReference('alt_controller')]);
-    }
-
-    private function getInlineStrategy($called = false)
-    {
-        $inline = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer')->disableOriginalConstructor()->getMock();
-
-        if ($called) {
-            $inline->expects($this->once())->method('render');
-        }
-
-        return $inline;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php b/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php
deleted file mode 100644
index 15e543a2..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/FragmentHandlerTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
-
-/**
- * @group time-sensitive
- */
-class FragmentHandlerTest extends TestCase
-{
-    private $requestStack;
-
-    protected function setUp(): void
-    {
-        $this->requestStack = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\RequestStack')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-        $this->requestStack
-            ->expects($this->any())
-            ->method('getCurrentRequest')
-            ->willReturn(Request::create('/'))
-        ;
-    }
-
-    public function testRenderWhenRendererDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = new FragmentHandler($this->requestStack);
-        $handler->render('/', 'foo');
-    }
-
-    public function testRenderWithUnknownRenderer()
-    {
-        $this->expectException('InvalidArgumentException');
-        $handler = $this->getHandler($this->returnValue(new Response('foo')));
-
-        $handler->render('/', 'bar');
-    }
-
-    public function testDeliverWithUnsuccessfulResponse()
-    {
-        $this->expectException('RuntimeException');
-        $this->expectExceptionMessage('Error when rendering "http://localhost/" (Status code is 404).');
-        $handler = $this->getHandler($this->returnValue(new Response('foo', 404)));
-
-        $handler->render('/', 'foo');
-    }
-
-    public function testRender()
-    {
-        $handler = $this->getHandler($this->returnValue(new Response('foo')), ['/', Request::create('/'), ['foo' => 'foo', 'ignore_errors' => true]]);
-
-        $this->assertEquals('foo', $handler->render('/', 'foo', ['foo' => 'foo']));
-    }
-
-    protected function getHandler($returnValue, $arguments = [])
-    {
-        $renderer = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface')->getMock();
-        $renderer
-            ->expects($this->any())
-            ->method('getName')
-            ->willReturn('foo')
-        ;
-        $e = $renderer
-            ->expects($this->any())
-            ->method('render')
-            ->will($returnValue)
-        ;
-
-        if ($arguments) {
-            $e->with(...$arguments);
-        }
-
-        $handler = new FragmentHandler($this->requestStack);
-        $handler->addRenderer($renderer);
-
-        return $handler;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php
deleted file mode 100644
index cdef3756..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/HIncludeFragmentRendererTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer;
-use Symfony\Component\HttpKernel\UriSigner;
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class HIncludeFragmentRendererTest extends TestCase
-{
-    public function testRenderExceptionWhenControllerAndNoSigner()
-    {
-        $this->expectException('LogicException');
-        $strategy = new HIncludeFragmentRenderer();
-        $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'));
-    }
-
-    public function testRenderWithControllerAndSigner()
-    {
-        $strategy = new HIncludeFragmentRenderer(null, new UriSigner('foo'));
-
-        $this->assertEquals('<hx:include src="/_fragment?_hash=BP%2BOzCD5MRUI%2BHJpgPDOmoju00FnzLhP3TGcSHbbBLs%3D&amp;_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dmain_controller"></hx:include>', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithUri()
-    {
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo"></hx:include>', $strategy->render('/foo', Request::create('/'))->getContent());
-
-        $strategy = new HIncludeFragmentRenderer(null, new UriSigner('foo'));
-        $this->assertEquals('<hx:include src="/foo"></hx:include>', $strategy->render('/foo', Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithDefault()
-    {
-        // only default
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-
-        // only global default
-        $strategy = new HIncludeFragmentRenderer(null, null, 'global_default');
-        $this->assertEquals('<hx:include src="/foo">global_default</hx:include>', $strategy->render('/foo', Request::create('/'), [])->getContent());
-
-        // global default and default
-        $strategy = new HIncludeFragmentRenderer(null, null, 'global_default');
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-    }
-
-    public function testRenderWithAttributesOptions()
-    {
-        // with id
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" id="bar">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'id' => 'bar'])->getContent());
-
-        // with attributes
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" p1="v1" p2="v2">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'attributes' => ['p1' => 'v1', 'p2' => 'v2']])->getContent());
-
-        // with id & attributes
-        $strategy = new HIncludeFragmentRenderer();
-        $this->assertEquals('<hx:include src="/foo" p1="v1" p2="v2" id="bar">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'id' => 'bar', 'attributes' => ['p1' => 'v1', 'p2' => 'v2']])->getContent());
-    }
-
-    public function testRenderWithTwigAndDefaultText()
-    {
-        $twig = new Environment($loader = new ArrayLoader());
-        $strategy = new HIncludeFragmentRenderer($twig);
-        $this->assertEquals('<hx:include src="/foo">loading...</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'loading...'])->getContent());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRenderWithDefaultTextLegacy()
-    {
-        $engine = $this->getMockBuilder('Symfony\\Component\\Templating\\EngineInterface')->getMock();
-        $engine->expects($this->once())
-            ->method('exists')
-            ->with('default')
-            ->willThrowException(new \InvalidArgumentException());
-
-        // only default
-        $strategy = new HIncludeFragmentRenderer($engine);
-        $this->assertEquals('<hx:include src="/foo">default</hx:include>', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
deleted file mode 100644
index a064a76c..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/InlineFragmentRendererTest.php
+++ /dev/null
@@ -1,280 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Event\ExceptionEvent;
-use Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
-
-class InlineFragmentRendererTest extends TestCase
-{
-    public function testRender()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo'))));
-
-        $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithControllerReference()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo'))));
-
-        $this->assertEquals('foo', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithObjectsAsAttributes()
-    {
-        $object = new \stdClass();
-
-        $subRequest = Request::create('/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dmain_controller');
-        $subRequest->attributes->replace(['object' => $object, '_format' => 'html', '_controller' => 'main_controller', '_locale' => 'en']);
-        $subRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $subRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $subRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $subRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($subRequest));
-
-        $this->assertSame('foo', $strategy->render(new ControllerReference('main_controller', ['object' => $object], []), Request::create('/'))->getContent());
-    }
-
-    public function testRenderWithTrustedHeaderDisabled()
-    {
-        Request::setTrustedProxies([], 0);
-
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-        $this->assertSame('foo', $strategy->render('/', Request::create('/'))->getContent());
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testRenderExceptionNoIgnoreErrors()
-    {
-        $this->expectException('RuntimeException');
-        $dispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMock();
-        $dispatcher->expects($this->never())->method('dispatch');
-
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->throwException(new \RuntimeException('foo'))), $dispatcher);
-
-        $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent());
-    }
-
-    public function testRenderExceptionIgnoreErrors()
-    {
-        $exception = new \RuntimeException('foo');
-        $kernel = $this->getKernel($this->throwException($exception));
-        $request = Request::create('/');
-        $expectedEvent = new ExceptionEvent($kernel, $request, $kernel::SUB_REQUEST, $exception);
-        $dispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMock();
-        $dispatcher->expects($this->once())->method('dispatch')->with($expectedEvent, KernelEvents::EXCEPTION);
-
-        $strategy = new InlineFragmentRenderer($kernel, $dispatcher);
-
-        $this->assertEmpty($strategy->render('/', $request, ['ignore_errors' => true])->getContent());
-    }
-
-    public function testRenderExceptionIgnoreErrorsWithAlt()
-    {
-        $strategy = new InlineFragmentRenderer($this->getKernel($this->onConsecutiveCalls(
-            $this->throwException(new \RuntimeException('foo')),
-            $this->returnValue(new Response('bar'))
-        )));
-
-        $this->assertEquals('bar', $strategy->render('/', Request::create('/'), ['ignore_errors' => true, 'alt' => '/foo'])->getContent());
-    }
-
-    private function getKernel($returnValue)
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel
-            ->expects($this->any())
-            ->method('handle')
-            ->will($returnValue)
-        ;
-
-        return $kernel;
-    }
-
-    public function testExceptionInSubRequestsDoesNotMangleOutputBuffers()
-    {
-        $controllerResolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface')->getMock();
-        $controllerResolver
-            ->expects($this->once())
-            ->method('getController')
-            ->willReturn(function () {
-                ob_start();
-                echo 'bar';
-                throw new \RuntimeException();
-            })
-        ;
-
-        $argumentResolver = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolverInterface')->getMock();
-        $argumentResolver
-            ->expects($this->once())
-            ->method('getArguments')
-            ->willReturn([])
-        ;
-
-        $kernel = new HttpKernel(new EventDispatcher(), $controllerResolver, new RequestStack(), $argumentResolver);
-        $renderer = new InlineFragmentRenderer($kernel);
-
-        // simulate a main request with output buffering
-        ob_start();
-        echo 'Foo';
-
-        // simulate a sub-request with output buffering and an exception
-        $renderer->render('/', Request::create('/'), ['ignore_errors' => true]);
-
-        $this->assertEquals('Foo', ob_get_clean());
-    }
-
-    public function testLocaleAndFormatAreIsKeptInSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->attributes->set('_format', 'foo');
-        $expectedSubRequest->setLocale('fr');
-        if (Request::HEADER_X_FORWARDED_FOR & Request::getTrustedHeaderSet()) {
-            $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-            $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        }
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->attributes->set('_format', 'foo');
-        $request->setLocale('fr');
-        $strategy->render('/', $request);
-    }
-
-    public function testESIHeaderIsKeptInSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-
-        if (Request::HEADER_X_FORWARDED_FOR & Request::getTrustedHeaderSet()) {
-            $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-            $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        }
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-    }
-
-    public function testESIHeaderIsKeptInSubrequestWithTrustedHeaderDisabled()
-    {
-        Request::setTrustedProxies([], Request::HEADER_FORWARDED);
-
-        $this->testESIHeaderIsKeptInSubrequest();
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-        $request = Request::create('/', 'GET', [], [], [], ['HTTP_IF_MODIFIED_SINCE' => 'Fri, 01 Jan 2016 00:00:00 GMT', 'HTTP_IF_NONE_MATCH' => '*']);
-        $strategy->render('/', $request);
-    }
-
-    public function testFirstTrustedProxyIsSetAsRemote()
-    {
-        Request::setTrustedProxies(['1.1.1.1'], -1);
-
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function testIpAddressOfRangedTrustedProxyIsSetAsRemote()
-    {
-        $expectedSubRequest = Request::create('/');
-        $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $expectedSubRequest->server->set('REMOTE_ADDR', '127.0.0.1');
-        $expectedSubRequest->headers->set('x-forwarded-for', ['127.0.0.1']);
-        $expectedSubRequest->headers->set('forwarded', ['for="127.0.0.1";host="localhost";proto=http']);
-        $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1');
-        $expectedSubRequest->server->set('HTTP_FORWARDED', 'for="127.0.0.1";host="localhost";proto=http');
-
-        Request::setTrustedProxies(['1.1.1.1/24'], -1);
-
-        $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $strategy->render('/', $request);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    /**
-     * Creates a Kernel expecting a request equals to $request
-     * Allows delta in comparison in case REQUEST_TIME changed by 1 second.
-     */
-    private function getKernelExpectingRequest(Request $request, $strict = false)
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $kernel
-            ->expects($this->once())
-            ->method('handle')
-            ->with($this->equalTo($request, 1))
-            ->willReturn(new Response('foo'));
-
-        return $kernel;
-    }
-}
-
-class Bar
-{
-    public $bar = 'bar';
-
-    public function getBar()
-    {
-        return $this->bar;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php
deleted file mode 100644
index 151adb0e..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/RoutableFragmentRendererTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-
-class RoutableFragmentRendererTest extends TestCase
-{
-    /**
-     * @dataProvider getGenerateFragmentUriData
-     */
-    public function testGenerateFragmentUri($uri, $controller)
-    {
-        $this->assertEquals($uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/')));
-    }
-
-    /**
-     * @dataProvider getGenerateFragmentUriData
-     */
-    public function testGenerateAbsoluteFragmentUri($uri, $controller)
-    {
-        $this->assertEquals('http://localhost'.$uri, $this->callGenerateFragmentUriMethod($controller, Request::create('/'), true));
-    }
-
-    public function getGenerateFragmentUriData()
-    {
-        return [
-            ['/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', [], [])],
-            ['/_fragment?_path=_format%3Dxml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['_format' => 'xml'], [])],
-            ['/_fragment?_path=foo%3Dfoo%26_format%3Djson%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => 'foo', '_format' => 'json'], [])],
-            ['/_fragment?bar=bar&_path=foo%3Dfoo%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => 'foo'], ['bar' => 'bar'])],
-            ['/_fragment?foo=foo&_path=_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', [], ['foo' => 'foo'])],
-            ['/_fragment?_path=foo%255B0%255D%3Dfoo%26foo%255B1%255D%3Dbar%26_format%3Dhtml%26_locale%3Den%26_controller%3Dcontroller', new ControllerReference('controller', ['foo' => ['foo', 'bar']], [])],
-        ];
-    }
-
-    public function testGenerateFragmentUriWithARequest()
-    {
-        $request = Request::create('/');
-        $request->attributes->set('_format', 'json');
-        $request->setLocale('fr');
-        $controller = new ControllerReference('controller', [], []);
-
-        $this->assertEquals('/_fragment?_path=_format%3Djson%26_locale%3Dfr%26_controller%3Dcontroller', $this->callGenerateFragmentUriMethod($controller, $request));
-    }
-
-    /**
-     * @dataProvider getGenerateFragmentUriDataWithNonScalar
-     */
-    public function testGenerateFragmentUriWithNonScalar($controller)
-    {
-        $this->expectException('LogicException');
-        $this->callGenerateFragmentUriMethod($controller, Request::create('/'));
-    }
-
-    public function getGenerateFragmentUriDataWithNonScalar()
-    {
-        return [
-            [new ControllerReference('controller', ['foo' => new Foo(), 'bar' => 'bar'], [])],
-            [new ControllerReference('controller', ['foo' => ['foo' => 'foo'], 'bar' => ['bar' => new Foo()]], [])],
-        ];
-    }
-
-    private function callGenerateFragmentUriMethod(ControllerReference $reference, Request $request, $absolute = false)
-    {
-        $renderer = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer');
-        $r = new \ReflectionObject($renderer);
-        $m = $r->getMethod('generateFragmentUri');
-        $m->setAccessible(true);
-
-        return $m->invoke($renderer, $reference, $request, $absolute);
-    }
-}
-
-class Foo
-{
-    public $foo;
-
-    public function getFoo()
-    {
-        return $this->foo;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php b/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php
deleted file mode 100644
index df30e677..00000000
--- a/vendor/symfony/http-kernel/Tests/Fragment/SsiFragmentRendererTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Fragment;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer;
-use Symfony\Component\HttpKernel\HttpCache\Ssi;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class SsiFragmentRendererTest extends TestCase
-{
-    public function testRenderFallbackToInlineStrategyIfSsiNotSupported()
-    {
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy(true));
-        $strategy->render('/', Request::create('/'));
-    }
-
-    public function testRender()
-    {
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $this->assertEquals('<!--#include virtual="/" -->', $strategy->render('/', $request)->getContent());
-        $this->assertEquals('<!--#include virtual="/" -->', $strategy->render('/', $request, ['comment' => 'This is a comment'])->getContent(), 'Strategy options should not impact the ssi include tag');
-    }
-
-    public function testRenderControllerReference()
-    {
-        $signer = new UriSigner('foo');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy(), $signer);
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $reference = new ControllerReference('main_controller', [], []);
-        $altReference = new ControllerReference('alt_controller', [], []);
-
-        $this->assertEquals(
-            '<!--#include virtual="/_fragment?_hash=Jz1P8NErmhKTeI6onI1EdAXTB85359MY3RIk5mSJ60w%3D&_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3Dmain_controller" -->',
-            $strategy->render($reference, $request, ['alt' => $altReference])->getContent()
-        );
-    }
-
-    public function testRenderControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $strategy->render(new ControllerReference('main_controller'), $request);
-    }
-
-    public function testRenderAltControllerReferenceWithoutSignerThrowsException()
-    {
-        $this->expectException('LogicException');
-        $strategy = new SsiFragmentRenderer(new Ssi(), $this->getInlineStrategy());
-
-        $request = Request::create('/');
-        $request->setLocale('fr');
-        $request->headers->set('Surrogate-Capability', 'SSI/1.0');
-
-        $strategy->render('/', $request, ['alt' => new ControllerReference('alt_controller')]);
-    }
-
-    private function getInlineStrategy($called = false)
-    {
-        $inline = $this->getMockBuilder('Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer')->disableOriginalConstructor()->getMock();
-
-        if ($called) {
-            $inline->expects($this->once())->method('render');
-        }
-
-        return $inline;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php
deleted file mode 100644
index cdf729e3..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/EsiTest.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-
-class EsiTest extends TestCase
-{
-    public function testHasSurrogateEsiCapability()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"');
-        $this->assertTrue($esi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'foobar');
-        $this->assertFalse($esi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $this->assertFalse($esi->hasSurrogateCapability($request));
-    }
-
-    public function testAddSurrogateEsiCapability()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $esi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="ESI/1.0"', $request->headers->get('Surrogate-Capability'));
-
-        $esi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="ESI/1.0", symfony="ESI/1.0"', $request->headers->get('Surrogate-Capability'));
-    }
-
-    public function testAddSurrogateControl()
-    {
-        $esi = new Esi();
-
-        $response = new Response('foo <esi:include src="" />');
-        $esi->addSurrogateControl($response);
-        $this->assertEquals('content="ESI/1.0"', $response->headers->get('Surrogate-Control'));
-
-        $response = new Response('foo');
-        $esi->addSurrogateControl($response);
-        $this->assertEquals('', $response->headers->get('Surrogate-Control'));
-    }
-
-    public function testNeedsEsiParsing()
-    {
-        $esi = new Esi();
-
-        $response = new Response();
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        $this->assertTrue($esi->needsParsing($response));
-
-        $response = new Response();
-        $this->assertFalse($esi->needsParsing($response));
-    }
-
-    public function testRenderIncludeTag()
-    {
-        $esi = new Esi();
-
-        $this->assertEquals('<esi:include src="/" onerror="continue" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', true));
-        $this->assertEquals('<esi:include src="/" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', false));
-        $this->assertEquals('<esi:include src="/" onerror="continue" />', $esi->renderIncludeTag('/'));
-        $this->assertEquals('<esi:comment text="some comment" />'."\n".'<esi:include src="/" onerror="continue" alt="/alt" />', $esi->renderIncludeTag('/', '/alt', true, 'some comment'));
-    }
-
-    public function testProcessDoesNothingIfContentTypeIsNotHtml()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/plain');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertFalse($response->headers->has('x-body-eval'));
-    }
-
-    public function testMultilineEsiRemoveTagsAreRemoved()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<esi:remove> <a href="http://www.example.com">www.example.com</a> </esi:remove> Keep this'."<esi:remove>\n <a>www.example.com</a> </esi:remove> And this");
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals(' Keep this And this', $response->getContent());
-    }
-
-    public function testCommentTagsAreRemoved()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<esi:comment text="some comment &gt;" /> Keep this');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals(' Keep this', $response->getContent());
-    }
-
-    public function testProcess()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:comment text="some comment" /><esi:include src="..." alt="alt" onerror="continue" />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'alt\', true) ?>'."\n", $response->getContent());
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-
-        $response = new Response('foo <esi:comment text="some comment" /><esi:include src="foo\'" alt="bar\'" onerror="continue" />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'foo\\\'\', \'bar\\\'\', true) ?>'."\n", $response->getContent());
-
-        $response = new Response('foo <esi:include src="..." />');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-
-        $response = new Response('foo <esi:include src="..."></esi:include>');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-    }
-
-    public function testProcessEscapesPhpTags()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('<?php <? <% <script language=php>');
-        $this->assertSame($response, $esi->process($request, $response));
-
-        $this->assertEquals('<?php echo "<?"; ?>php <?php echo "<?"; ?> <?php echo "<%"; ?> <?php echo "<s"; ?>cript language=php>', $response->getContent());
-    }
-
-    public function testProcessWhenNoSrcInAnEsi()
-    {
-        $this->expectException('RuntimeException');
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:include />');
-        $this->assertSame($response, $esi->process($request, $response));
-    }
-
-    public function testProcessRemoveSurrogateControlHeader()
-    {
-        $esi = new Esi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <esi:include src="..." />');
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0"');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-
-        $response->headers->set('Surrogate-Control', 'no-store, content="ESI/1.0"');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-
-        $response->headers->set('Surrogate-Control', 'content="ESI/1.0", no-store');
-        $this->assertSame($response, $esi->process($request, $response));
-        $this->assertEquals('ESI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-    }
-
-    public function testHandle()
-    {
-        $esi = new Esi();
-        $cache = $this->getCache(Request::create('/'), new Response('foo'));
-        $this->assertEquals('foo', $esi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200()
-    {
-        $this->expectException('RuntimeException');
-        $esi = new Esi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $esi->handle($cache, '/', '/alt', false);
-    }
-
-    public function testHandleWhenResponseIsNot200AndErrorsAreIgnored()
-    {
-        $esi = new Esi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $this->assertEquals('', $esi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200AndAltIsPresent()
-    {
-        $esi = new Esi();
-        $response1 = new Response('foo');
-        $response1->setStatusCode(404);
-        $response2 = new Response('bar');
-        $cache = $this->getCache(Request::create('/'), [$response1, $response2]);
-        $this->assertEquals('bar', $esi->handle($cache, '/', '/alt', false));
-    }
-
-    protected function getCache($request, $response)
-    {
-        $cache = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\HttpCache')->setMethods(['getRequest', 'handle'])->disableOriginalConstructor()->getMock();
-        $cache->expects($this->any())
-              ->method('getRequest')
-              ->willReturn($request)
-        ;
-        if (\is_array($response)) {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->will($this->onConsecutiveCalls(...$response))
-            ;
-        } else {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->willReturn($response)
-            ;
-        }
-
-        return $cache;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php
deleted file mode 100644
index c5bbc8c6..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTest.php
+++ /dev/null
@@ -1,1563 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpCache\HttpCache;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-/**
- * @group time-sensitive
- */
-class HttpCacheTest extends HttpCacheTestCase
-{
-    public function testTerminateDelegatesTerminationOnlyForTerminableInterface()
-    {
-        $storeMock = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpCache\\StoreInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        // does not implement TerminableInterface
-        $kernel = new TestKernel();
-        $httpCache = new HttpCache($kernel, $storeMock);
-        $httpCache->terminate(Request::create('/'), new Response());
-
-        $this->assertFalse($kernel->terminateCalled, 'terminate() is never called if the kernel class does not implement TerminableInterface');
-
-        // implements TerminableInterface
-        $kernelMock = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Kernel')
-            ->disableOriginalConstructor()
-            ->setMethods(['terminate', 'registerBundles', 'registerContainerConfiguration'])
-            ->getMock();
-
-        $kernelMock->expects($this->once())
-            ->method('terminate');
-
-        $kernel = new HttpCache($kernelMock, $storeMock);
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testPassesOnNonGetHeadRequests()
-    {
-        $this->setNextResponse(200);
-        $this->request('POST', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertTraceContains('pass');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testInvalidatesOnPostPutDeleteRequests()
-    {
-        foreach (['post', 'put', 'delete'] as $method) {
-            $this->setNextResponse(200);
-            $this->request($method, '/');
-
-            $this->assertHttpKernelIsCalled();
-            $this->assertResponseOk();
-            $this->assertTraceContains('invalidate');
-            $this->assertTraceContains('pass');
-        }
-    }
-
-    public function testDoesNotCacheWithAuthorizationRequestHeaderAndNonPublicResponse()
-    {
-        $this->setNextResponse(200, ['ETag' => '"Foo"']);
-        $this->request('GET', '/', ['HTTP_AUTHORIZATION' => 'basic foobarbaz']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesCacheWithAuthorizationRequestHeaderAndPublicResponse()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '"Foo"']);
-        $this->request('GET', '/', ['HTTP_AUTHORIZATION' => 'basic foobarbaz']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-        $this->assertEquals('public', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testDoesNotCacheWithCookieHeaderAndNonPublicResponse()
-    {
-        $this->setNextResponse(200, ['ETag' => '"Foo"']);
-        $this->request('GET', '/', [], ['foo' => 'bar']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheRequestsWithACookieHeader()
-    {
-        $this->setNextResponse(200);
-        $this->request('GET', '/', [], ['foo' => 'bar']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertResponseOk();
-        $this->assertEquals('private', $this->response->headers->get('Cache-Control'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testRespondsWith304WhenIfModifiedSinceMatchesLastModified()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Last-Modified' => $time->format(DATE_RFC2822), 'Content-Type' => 'text/plain'], 'Hello World');
-        $this->request('GET', '/', ['HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->headers->get('Content-Type'));
-        $this->assertEmpty($this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testRespondsWith304WhenIfNoneMatchMatchesETag()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '12345', 'Content-Type' => 'text/plain'], 'Hello World');
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->headers->get('Content-Type'));
-        $this->assertTrue($this->response->headers->has('ETag'));
-        $this->assertEmpty($this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testRespondsWith304OnlyIfIfNoneMatchAndIfModifiedSinceBothMatch()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use ($time) {
-            $response->setStatusCode(200);
-            $response->headers->set('ETag', '12345');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            $response->headers->set('Content-Type', 'text/plain');
-            $response->setContent('Hello World');
-        });
-
-        // only ETag matches
-        $t = \DateTime::createFromFormat('U', time() - 3600);
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345', 'HTTP_IF_MODIFIED_SINCE' => $t->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-
-        // only Last-Modified matches
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '1234', 'HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-
-        // Both matches
-        $this->request('GET', '/', ['HTTP_IF_NONE_MATCH' => '12345', 'HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-    }
-
-    public function testIncrementsMaxAgeWhenNoDateIsSpecifiedEventWhenUsingETag()
-    {
-        $this->setNextResponse(
-            200,
-            [
-                'ETag' => '1234',
-                'Cache-Control' => 'public, s-maxage=60',
-            ]
-        );
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        sleep(2);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertEquals(2, $this->response->headers->get('Age'));
-    }
-
-    public function testValidatesPrivateResponsesCachedOnTheClient()
-    {
-        $this->setNextResponse(200, [], '', function ($request, $response) {
-            $etags = preg_split('/\s*,\s*/', $request->headers->get('IF_NONE_MATCH'));
-            if ($request->cookies->has('authenticated')) {
-                $response->headers->set('Cache-Control', 'private, no-store');
-                $response->setETag('"private tag"');
-                if (\in_array('"private tag"', $etags)) {
-                    $response->setStatusCode(304);
-                } else {
-                    $response->setStatusCode(200);
-                    $response->headers->set('Content-Type', 'text/plain');
-                    $response->setContent('private data');
-                }
-            } else {
-                $response->headers->set('Cache-Control', 'public');
-                $response->setETag('"public tag"');
-                if (\in_array('"public tag"', $etags)) {
-                    $response->setStatusCode(304);
-                } else {
-                    $response->setStatusCode(200);
-                    $response->headers->set('Content-Type', 'text/plain');
-                    $response->setContent('public data');
-                }
-            }
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('"public tag"', $this->response->headers->get('ETag'));
-        $this->assertEquals('public data', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/', [], ['authenticated' => '']);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('"private tag"', $this->response->headers->get('ETag'));
-        $this->assertEquals('private data', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceNotContains('store');
-    }
-
-    public function testStoresResponsesWhenNoCacheRequestDirectivePresent()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testReloadsResponsesWhenCacheHitsButNoCacheRequestDirectivePresentWhenAllowReloadIsSetTrue()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=10000'], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_reload'] = true;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Goodbye World', $this->response->getContent());
-        $this->assertTraceContains('reload');
-        $this->assertTraceContains('store');
-    }
-
-    public function testDoesNotReloadResponsesWhenAllowReloadIsSetFalseDefault()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=10000'], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_reload'] = false;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('reload');
-
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'no-cache']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('reload');
-    }
-
-    public function testRevalidatesFreshCacheEntryWhenMaxAgeRequestDirectiveIsExceededWhenAllowRevalidateOptionIsSetTrue()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->headers->set('Cache-Control', 'public, max-age=10000');
-            $response->setETag($count);
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_revalidate'] = true;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Goodbye World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-    }
-
-    public function testDoesNotRevalidateFreshCacheEntryWhenEnableRevalidateOptionIsSetFalseDefault()
-    {
-        $count = 0;
-
-        $this->setNextResponse(200, [], '', function ($request, $response) use (&$count) {
-            ++$count;
-            $response->headers->set('Cache-Control', 'public, max-age=10000');
-            $response->setETag($count);
-            $response->setContent(1 == $count ? 'Hello World' : 'Goodbye World');
-        });
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        $this->cacheConfig['allow_revalidate'] = false;
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('stale');
-        $this->assertTraceNotContains('invalid');
-        $this->assertTraceContains('fresh');
-
-        $this->request('GET', '/', ['HTTP_CACHE_CONTROL' => 'max-age=0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceNotContains('stale');
-        $this->assertTraceNotContains('invalid');
-        $this->assertTraceContains('fresh');
-    }
-
-    public function testFetchesResponseFromBackendWhenCacheMisses()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheSomeStatusCodeResponses()
-    {
-        foreach (array_merge(range(201, 202), range(204, 206), range(303, 305), range(400, 403), range(405, 409), range(411, 417), range(500, 505)) as $code) {
-            $time = \DateTime::createFromFormat('U', time() + 5);
-            $this->setNextResponse($code, ['Expires' => $time->format(DATE_RFC2822)]);
-
-            $this->request('GET', '/');
-            $this->assertEquals($code, $this->response->getStatusCode());
-            $this->assertTraceNotContains('store');
-            $this->assertFalse($this->response->headers->has('Age'));
-        }
-    }
-
-    public function testDoesNotCacheResponsesWithExplicitNoStoreDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Expires' => $time->format(DATE_RFC2822), 'Cache-Control' => 'no-store']);
-
-        $this->request('GET', '/');
-        $this->assertTraceNotContains('store');
-        $this->assertFalse($this->response->headers->has('Age'));
-    }
-
-    public function testDoesNotCacheResponsesWithoutFreshnessInformationOrAValidator()
-    {
-        $this->setNextResponse();
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceNotContains('store');
-    }
-
-    public function testCachesResponsesWithExplicitNoCacheDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Expires' => $time->format(DATE_RFC2822), 'Cache-Control' => 'public, no-cache']);
-
-        $this->request('GET', '/');
-        $this->assertTraceContains('store');
-        $this->assertTrue($this->response->headers->has('Age'));
-    }
-
-    public function testCachesResponsesWithAnExpirationHeader()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithAMaxAgeDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public, max-age=5']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithASMaxAgeDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 's-maxage=5']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-    }
-
-    public function testCachesResponsesWithALastModifiedValidatorButNoFreshnessInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Last-Modified' => $time->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testCachesResponsesWithAnETagValidatorButNoFreshnessInformation()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'ETag' => '"123456"']);
-
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-    }
-
-    public function testHitsCachedResponsesWithExpiresHeader()
-    {
-        $time1 = \DateTime::createFromFormat('U', time() - 5);
-        $time2 = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Date' => $time1->format(DATE_RFC2822), 'Expires' => $time2->format(DATE_RFC2822)]);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testHitsCachedResponseWithMaxAgeDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $this->setNextResponse(200, ['Date' => $time->format(DATE_RFC2822), 'Cache-Control' => 'public, max-age=10']);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testDegradationWhenCacheLocked()
-    {
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Skips on windows to avoid permissions issues.');
-        }
-
-        $this->cacheConfig['stale_while_revalidate'] = 10;
-
-        // The prescence of Last-Modified makes this cacheable (because Response::isValidateable() then).
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=5', 'Last-Modified' => 'some while ago'], 'Old response');
-        $this->request('GET', '/'); // warm the cache
-
-        // Now, lock the cache
-        $concurrentRequest = Request::create('/', 'GET');
-        $this->store->lock($concurrentRequest);
-
-        /*
-         *  After 10s, the cached response has become stale. Yet, we're still within the "stale_while_revalidate"
-         *  timeout so we may serve the stale response.
-         */
-        sleep(10);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale-while-revalidate');
-        $this->assertEquals('Old response', $this->response->getContent());
-
-        /*
-         * Another 10s later, stale_while_revalidate is over. Resort to serving the old response, but
-         * do so with a "server unavailable" message.
-         */
-        sleep(10);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(503, $this->response->getStatusCode());
-        $this->assertEquals('Old response', $this->response->getContent());
-    }
-
-    public function testHitsCachedResponseWithSMaxAgeDirective()
-    {
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $this->setNextResponse(200, ['Date' => $time->format(DATE_RFC2822), 'Cache-Control' => 's-maxage=10, max-age=0']);
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThan(2, strtotime($this->responses[0]->headers->get('Date')) - strtotime($this->response->headers->get('Date')));
-        $this->assertGreaterThan(0, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformation()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=10/', $this->response->headers->get('Cache-Control'));
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=10/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformationAndAfterTtlWasExpired()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 2;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        // expires the cache
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $tmp[0][1]['date'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->setNextResponse();
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testAssignsDefaultTtlWhenResponseHasNoFreshnessInformationAndAfterTtlWasExpiredWithStatus304()
-    {
-        $this->setNextResponse();
-
-        $this->cacheConfig['default_ttl'] = 2;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        // expires the cache
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time() - 5);
-        $tmp[0][1]['date'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertRegExp('/s-maxage=(2|3)/', $this->response->headers->get('Cache-Control'));
-    }
-
-    public function testDoesNotAssignDefaultTtlWhenResponseHasMustRevalidateDirective()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'must-revalidate']);
-
-        $this->cacheConfig['default_ttl'] = 10;
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceNotContains('store');
-        $this->assertNotRegExp('/s-maxage/', $this->response->headers->get('Cache-Control'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testFetchesFullResponseWhenCacheStaleAndNoValidatorsPresent()
-    {
-        $time = \DateTime::createFromFormat('U', time() + 5);
-        $this->setNextResponse(200, ['Cache-Control' => 'public', 'Expires' => $time->format(DATE_RFC2822)]);
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Date'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertNotNull($this->response->headers->get('Age'));
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        // go in and play around with the cached metadata directly ...
-        $values = $this->getMetaStorageValues();
-        $this->assertCount(1, $values);
-        $tmp = unserialize($values[0]);
-        $time = \DateTime::createFromFormat('U', time());
-        $tmp[0][1]['expires'] = $time->format(DATE_RFC2822);
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('save');
-        $m->setAccessible(true);
-        $m->invoke($this->store, 'md'.hash('sha256', 'http://localhost/'), serialize($tmp));
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertTraceContains('stale');
-        $this->assertTraceNotContains('fresh');
-        $this->assertTraceNotContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Hello World', $this->response->getContent());
-    }
-
-    public function testValidatesCachedResponsesWithLastModifiedAndNoFreshnessInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time) {
-            $response->headers->set('Cache-Control', 'public');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            if ($time->format(DATE_RFC2822) == $request->headers->get('IF_MODIFIED_SINCE')) {
-                $response->setStatusCode(304);
-                $response->setContent('');
-            }
-        });
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Last-Modified'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('stale');
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('Last-Modified'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-    }
-
-    public function testValidatesCachedResponsesUseSameHttpMethod()
-    {
-        $test = $this;
-
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($test) {
-            $test->assertSame('OPTIONS', $request->getMethod());
-        });
-
-        // build initial request
-        $this->request('OPTIONS', '/');
-
-        // build subsequent request
-        $this->request('OPTIONS', '/');
-    }
-
-    public function testValidatesCachedResponsesWithETagAndNoFreshnessInformation()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->headers->set('Cache-Control', 'public');
-            $response->headers->set('ETag', '"12345"');
-            if ($response->getETag() == $request->headers->get('IF_NONE_MATCH')) {
-                $response->setStatusCode(304);
-                $response->setContent('');
-            }
-        });
-
-        // build initial request
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('ETag'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        // build subsequent request; should be found but miss due to freshness
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertNotNull($this->response->headers->get('ETag'));
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $this->assertLessThanOrEqual(1, $this->response->headers->get('Age'));
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-        $this->assertTraceContains('store');
-        $this->assertTraceNotContains('miss');
-    }
-
-    public function testServesResponseWhileFreshAndRevalidatesWithLastModifiedInformation()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $this->setNextResponse(200, [], 'Hello World', function (Request $request, Response $response) use ($time) {
-            $response->setSharedMaxAge(10);
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-        });
-
-        // prime the cache
-        $this->request('GET', '/');
-
-        // next request before s-maxage has expired: Serve from cache
-        // without hitting the backend
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        sleep(15); // expire the cache
-
-        $this->setNextResponse(304, [], '', function (Request $request, Response $response) use ($time) {
-            $this->assertEquals($time->format(DATE_RFC2822), $request->headers->get('IF_MODIFIED_SINCE'));
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('valid');
-    }
-
-    public function testReplacesCachedResponsesWhenValidationResultsInNon304Response()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $count = 0;
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time, &$count) {
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-            $response->headers->set('Cache-Control', 'public');
-            switch (++$count) {
-                case 1:
-                    $response->setContent('first response');
-                    break;
-                case 2:
-                    $response->setContent('second response');
-                    break;
-                case 3:
-                    $response->setContent('');
-                    $response->setStatusCode(304);
-                    break;
-            }
-        });
-
-        // first request should fetch from backend and store in cache
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('first response', $this->response->getContent());
-
-        // second request is validated, is invalid, and replaces cached entry
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('second response', $this->response->getContent());
-
-        // third response is validated, valid, and returns cached entry
-        $this->request('GET', '/');
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('second response', $this->response->getContent());
-
-        $this->assertEquals(3, $count);
-    }
-
-    public function testPassesHeadRequestsThroughDirectlyOnPass()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->setContent('');
-            $response->setStatusCode(200);
-            $this->assertEquals('HEAD', $request->getMethod());
-        });
-
-        $this->request('HEAD', '/', ['HTTP_EXPECT' => 'something ...']);
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('', $this->response->getContent());
-    }
-
-    public function testUsesCacheToRespondToHeadRequestsWhenFresh()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->setContent('Hello World');
-            $response->setStatusCode(200);
-            $this->assertNotEquals('HEAD', $request->getMethod());
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('HEAD', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->getContent());
-        $this->assertEquals(\strlen('Hello World'), $this->response->headers->get('Content-Length'));
-    }
-
-    public function testSendsNoContentWhenFresh()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) use ($time) {
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('Last-Modified', $time->format(DATE_RFC2822));
-        });
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('Hello World', $this->response->getContent());
-
-        $this->request('GET', '/', ['HTTP_IF_MODIFIED_SINCE' => $time->format(DATE_RFC2822)]);
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(304, $this->response->getStatusCode());
-        $this->assertEquals('', $this->response->getContent());
-    }
-
-    public function testInvalidatesCachedResponsesOnPost()
-    {
-        $this->setNextResponse(200, [], 'Hello World', function ($request, $response) {
-            if ('GET' == $request->getMethod()) {
-                $response->setStatusCode(200);
-                $response->headers->set('Cache-Control', 'public, max-age=500');
-                $response->setContent('Hello World');
-            } elseif ('POST' == $request->getMethod()) {
-                $response->setStatusCode(303);
-                $response->headers->set('Location', '/');
-                $response->headers->remove('Cache-Control');
-                $response->setContent('');
-            }
-        });
-
-        // build initial request to enter into the cache
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        // make sure it is valid
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-
-        // now POST to same URL
-        $this->request('POST', '/helloworld');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals('/', $this->response->headers->get('Location'));
-        $this->assertTraceContains('invalidate');
-        $this->assertTraceContains('pass');
-        $this->assertEquals('', $this->response->getContent());
-
-        // now make sure it was actually invalidated
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Hello World', $this->response->getContent());
-        $this->assertTraceContains('stale');
-        $this->assertTraceContains('invalid');
-        $this->assertTraceContains('store');
-    }
-
-    public function testServesFromCacheWhenHeadersMatch()
-    {
-        $count = 0;
-        $this->setNextResponse(200, ['Cache-Control' => 'max-age=10000'], '', function ($request, $response) use (&$count) {
-            $response->headers->set('Vary', 'Accept User-Agent Foo');
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('X-Response-Count', ++$count);
-            $response->setContent($request->headers->get('USER_AGENT'));
-        });
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertTraceContains('fresh');
-        $this->assertTraceNotContains('store');
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-    }
-
-    public function testStoresMultipleResponsesWhenHeadersDiffer()
-    {
-        $count = 0;
-        $this->setNextResponse(200, ['Cache-Control' => 'max-age=10000'], '', function ($request, $response) use (&$count) {
-            $response->headers->set('Vary', 'Accept User-Agent Foo');
-            $response->headers->set('Cache-Control', 'public, max-age=10');
-            $response->headers->set('X-Response-Count', ++$count);
-            $response->setContent($request->headers->get('USER_AGENT'));
-        });
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertEquals(1, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertEquals(200, $this->response->getStatusCode());
-        $this->assertTraceContains('miss');
-        $this->assertTraceContains('store');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(2, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/1.0']);
-        $this->assertTraceContains('fresh');
-        $this->assertEquals('Bob/1.0', $this->response->getContent());
-        $this->assertEquals(1, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_ACCEPT' => 'text/html', 'HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertTraceContains('fresh');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(2, $this->response->headers->get('X-Response-Count'));
-
-        $this->request('GET', '/', ['HTTP_USER_AGENT' => 'Bob/2.0']);
-        $this->assertTraceContains('miss');
-        $this->assertEquals('Bob/2.0', $this->response->getContent());
-        $this->assertEquals(3, $this->response->headers->get('X-Response-Count'));
-    }
-
-    public function testShouldCatchExceptions()
-    {
-        $this->catchExceptions();
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertExceptionsAreCaught();
-    }
-
-    public function testShouldCatchExceptionsWhenReloadingAndNoCacheRequest()
-    {
-        $this->catchExceptions();
-
-        $this->setNextResponse();
-        $this->cacheConfig['allow_reload'] = true;
-        $this->request('GET', '/', [], [], false, ['Pragma' => 'no-cache']);
-
-        $this->assertExceptionsAreCaught();
-    }
-
-    public function testShouldNotCatchExceptions()
-    {
-        $this->catchExceptions(false);
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertExceptionsAreNotCaught();
-    }
-
-    public function testEsiCacheSendsTheLowestTtl()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" /> <esi:include src="/bar" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => ['Cache-Control' => 's-maxage=200'],
-            ],
-            [
-                'status' => 200,
-                'body' => 'My name is Bobby.',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World! My name is Bobby.', $this->response->getContent());
-
-        $this->assertEquals(100, $this->response->getTtl());
-    }
-
-    public function testEsiCacheSendsTheLowestTtlForHeadRequests()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => 'I am a long-lived master response, but I embed a short-lived resource: <esi:include src="/foo" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'I am a short-lived resource',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        $this->assertEmpty($this->response->getContent());
-        $this->assertEquals(100, $this->response->getTtl());
-    }
-
-    public function testEsiCacheForceValidation()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" /> <esi:include src="/bar" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => ['ETag' => 'foobar'],
-            ],
-            [
-                'status' => 200,
-                'body' => 'My name is Bobby.',
-                'headers' => ['Cache-Control' => 's-maxage=100'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World! My name is Bobby.', $this->response->getContent());
-        $this->assertNull($this->response->getTtl());
-        $this->assertTrue($this->response->mustRevalidate());
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testEsiCacheForceValidationForHeadRequests()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => 'I am the master response and use expiration caching, but I embed another resource: <esi:include src="/foo" />',
-                'headers' => [
-                    'Cache-Control' => 's-maxage=300',
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'I am the embedded resource and use validation caching',
-                'headers' => ['ETag' => 'foobar'],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        // The response has been assembled from expiration and validation based resources
-        // This can neither be cached nor revalidated, so it should be private/no cache
-        $this->assertEmpty($this->response->getContent());
-        $this->assertNull($this->response->getTtl());
-        $this->assertTrue($this->response->mustRevalidate());
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
-        $this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
-    }
-
-    public function testEsiRecalculateContentLengthHeader()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" />',
-                'headers' => [
-                    'Content-Length' => 26,
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertEquals('Hello World!', $this->response->getContent());
-        $this->assertEquals(12, $this->response->headers->get('Content-Length'));
-    }
-
-    public function testEsiRecalculateContentLengthHeaderForHeadRequest()
-    {
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/foo" />',
-                'headers' => [
-                    'Content-Length' => 26,
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hello World!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-
-        // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
-        // "The Content-Length entity-header field indicates the size of the entity-body,
-        // in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD
-        // method, the size of the entity-body that would have been sent had the request
-        // been a GET."
-        $this->assertEmpty($this->response->getContent());
-        $this->assertEquals(12, $this->response->headers->get('Content-Length'));
-    }
-
-    public function testClientIpIsAlwaysLocalhostForForwardedRequests()
-    {
-        $this->setNextResponse();
-        $this->request('GET', '/', ['REMOTE_ADDR' => '10.0.0.1']);
-
-        $this->kernel->assert(function ($backendRequest) {
-            $this->assertSame('127.0.0.1', $backendRequest->server->get('REMOTE_ADDR'));
-        });
-    }
-
-    /**
-     * @dataProvider getTrustedProxyData
-     */
-    public function testHttpCacheIsSetAsATrustedProxy(array $existing)
-    {
-        Request::setTrustedProxies($existing, Request::HEADER_X_FORWARDED_ALL);
-
-        $this->setNextResponse();
-        $this->request('GET', '/', ['REMOTE_ADDR' => '10.0.0.1']);
-        $this->assertSame($existing, Request::getTrustedProxies());
-
-        $existing = array_unique(array_merge($existing, ['127.0.0.1']));
-        $this->kernel->assert(function ($backendRequest) use ($existing) {
-            $this->assertSame($existing, Request::getTrustedProxies());
-            $this->assertsame('10.0.0.1', $backendRequest->getClientIp());
-        });
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function getTrustedProxyData()
-    {
-        return [
-            [[]],
-            [['10.0.0.2']],
-            [['10.0.0.2', '127.0.0.1']],
-        ];
-    }
-
-    /**
-     * @dataProvider getForwardedData
-     */
-    public function testForwarderHeaderForForwardedRequests($forwarded, $expected)
-    {
-        $this->setNextResponse();
-        $server = ['REMOTE_ADDR' => '10.0.0.1'];
-        if (null !== $forwarded) {
-            Request::setTrustedProxies($server, -1);
-            $server['HTTP_FORWARDED'] = $forwarded;
-        }
-        $this->request('GET', '/', $server);
-
-        $this->kernel->assert(function ($backendRequest) use ($expected) {
-            $this->assertSame($expected, $backendRequest->headers->get('Forwarded'));
-        });
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    public function getForwardedData()
-    {
-        return [
-            [null, 'for="10.0.0.1";host="localhost";proto=http'],
-            ['for=10.0.0.2', 'for="10.0.0.2";host="localhost";proto=http, for="10.0.0.1"'],
-            ['for=10.0.0.2, for=10.0.0.3', 'for="10.0.0.2";host="localhost";proto=http, for="10.0.0.3", for="10.0.0.1"'],
-        ];
-    }
-
-    public function testEsiCacheRemoveValidationHeadersIfEmbeddedResponses()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/hey" />',
-                'headers' => [
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                    'ETag' => 'hey',
-                    'Last-Modified' => $time->format(DATE_RFC2822),
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hey!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('GET', '/', [], [], true);
-        $this->assertNull($this->response->getETag());
-        $this->assertNull($this->response->getLastModified());
-    }
-
-    public function testEsiCacheRemoveValidationHeadersIfEmbeddedResponsesAndHeadRequest()
-    {
-        $time = \DateTime::createFromFormat('U', time());
-
-        $responses = [
-            [
-                'status' => 200,
-                'body' => '<esi:include src="/hey" />',
-                'headers' => [
-                    'Surrogate-Control' => 'content="ESI/1.0"',
-                    'ETag' => 'hey',
-                    'Last-Modified' => $time->format(DATE_RFC2822),
-                ],
-            ],
-            [
-                'status' => 200,
-                'body' => 'Hey!',
-                'headers' => [],
-            ],
-        ];
-
-        $this->setNextResponses($responses);
-
-        $this->request('HEAD', '/', [], [], true);
-        $this->assertEmpty($this->response->getContent());
-        $this->assertNull($this->response->getETag());
-        $this->assertNull($this->response->getLastModified());
-    }
-
-    public function testDoesNotCacheOptionsRequest()
-    {
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=60'], 'get');
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsCalled();
-
-        $this->setNextResponse(200, ['Cache-Control' => 'public, s-maxage=60'], 'options');
-        $this->request('OPTIONS', '/');
-        $this->assertHttpKernelIsCalled();
-
-        $this->request('GET', '/');
-        $this->assertHttpKernelIsNotCalled();
-        $this->assertSame('get', $this->response->getContent());
-    }
-
-    public function testUsesOriginalRequestForSurrogate()
-    {
-        $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
-        $store = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\StoreInterface')->getMock();
-
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('handle')
-            ->willReturnCallback(function (Request $request) {
-                $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-
-                return new Response();
-            });
-
-        $cache = new HttpCache($kernel,
-            $store,
-            new Esi()
-        );
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-
-        // Main request
-        $cache->handle($request, HttpKernelInterface::MASTER_REQUEST);
-
-        // Main request was now modified by HttpCache
-        // The surrogate will ask for the request using $this->cache->getRequest()
-        // which MUST return the original request so the surrogate
-        // can actually behave like a reverse proxy like e.g. Varnish would.
-        $this->assertSame('10.0.0.1', $cache->getRequest()->getClientIp());
-        $this->assertSame('10.0.0.1', $cache->getRequest()->server->get('REMOTE_ADDR'));
-
-        // Surrogate request
-        $cache->handle($request, HttpKernelInterface::SUB_REQUEST);
-    }
-
-    public function testTraceHeaderNameCanBeChanged()
-    {
-        $this->cacheConfig['trace_header'] = 'X-My-Header';
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-My-Header'));
-    }
-
-    public function testTraceLevelDefaultsToFullIfDebug()
-    {
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-Symfony-Cache'));
-        $this->assertEquals('GET /: miss', $this->response->headers->get('X-Symfony-Cache'));
-    }
-
-    public function testTraceLevelDefaultsToNoneIfNotDebug()
-    {
-        $this->cacheConfig['debug'] = false;
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertFalse($this->response->headers->has('X-Symfony-Cache'));
-    }
-
-    public function testTraceLevelShort()
-    {
-        $this->cacheConfig['trace_level'] = 'short';
-
-        $this->setNextResponse();
-        $this->request('GET', '/');
-
-        $this->assertTrue($this->response->headers->has('X-Symfony-Cache'));
-        $this->assertEquals('miss', $this->response->headers->get('X-Symfony-Cache'));
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public $terminateCalled = false;
-
-    public function terminate(Request $request, Response $response)
-    {
-        $this->terminateCalled = true;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php b/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php
deleted file mode 100644
index a73a327b..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/HttpCacheTestCase.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\HttpKernel\HttpCache\HttpCache;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class HttpCacheTestCase extends TestCase
-{
-    protected $kernel;
-    protected $cache;
-    protected $caches;
-    protected $cacheConfig;
-    protected $request;
-    protected $response;
-    protected $responses;
-    protected $catch;
-    protected $esi;
-
-    /**
-     * @var Store
-     */
-    protected $store;
-
-    protected function setUp(): void
-    {
-        $this->kernel = null;
-
-        $this->cache = null;
-        $this->esi = null;
-        $this->caches = [];
-        $this->cacheConfig = [];
-
-        $this->request = null;
-        $this->response = null;
-        $this->responses = [];
-
-        $this->catch = false;
-
-        $this->clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    protected function tearDown(): void
-    {
-        if ($this->cache) {
-            $this->cache->getStore()->cleanup();
-        }
-        $this->kernel = null;
-        $this->cache = null;
-        $this->caches = null;
-        $this->request = null;
-        $this->response = null;
-        $this->responses = null;
-        $this->cacheConfig = null;
-        $this->catch = null;
-        $this->esi = null;
-
-        $this->clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    public function assertHttpKernelIsCalled()
-    {
-        $this->assertTrue($this->kernel->hasBeenCalled());
-    }
-
-    public function assertHttpKernelIsNotCalled()
-    {
-        $this->assertFalse($this->kernel->hasBeenCalled());
-    }
-
-    public function assertResponseOk()
-    {
-        $this->assertEquals(200, $this->response->getStatusCode());
-    }
-
-    public function assertTraceContains($trace)
-    {
-        $traces = $this->cache->getTraces();
-        $traces = current($traces);
-
-        $this->assertRegExp('/'.$trace.'/', implode(', ', $traces));
-    }
-
-    public function assertTraceNotContains($trace)
-    {
-        $traces = $this->cache->getTraces();
-        $traces = current($traces);
-
-        $this->assertNotRegExp('/'.$trace.'/', implode(', ', $traces));
-    }
-
-    public function assertExceptionsAreCaught()
-    {
-        $this->assertTrue($this->kernel->isCatchingExceptions());
-    }
-
-    public function assertExceptionsAreNotCaught()
-    {
-        $this->assertFalse($this->kernel->isCatchingExceptions());
-    }
-
-    public function request($method, $uri = '/', $server = [], $cookies = [], $esi = false, $headers = [])
-    {
-        if (null === $this->kernel) {
-            throw new \LogicException('You must call setNextResponse() before calling request().');
-        }
-
-        $this->kernel->reset();
-
-        $this->store = new Store(sys_get_temp_dir().'/http_cache');
-
-        if (!isset($this->cacheConfig['debug'])) {
-            $this->cacheConfig['debug'] = true;
-        }
-
-        $this->esi = $esi ? new Esi() : null;
-        $this->cache = new HttpCache($this->kernel, $this->store, $this->esi, $this->cacheConfig);
-        $this->request = Request::create($uri, $method, [], $cookies, [], $server);
-        $this->request->headers->add($headers);
-
-        $this->response = $this->cache->handle($this->request, HttpKernelInterface::MASTER_REQUEST, $this->catch);
-
-        $this->responses[] = $this->response;
-    }
-
-    public function getMetaStorageValues()
-    {
-        $values = [];
-        foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator(sys_get_temp_dir().'/http_cache/md', \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
-            $values[] = file_get_contents($file);
-        }
-
-        return $values;
-    }
-
-    // A basic response with 200 status code and a tiny body.
-    public function setNextResponse($statusCode = 200, array $headers = [], $body = 'Hello World', \Closure $customizer = null)
-    {
-        $this->kernel = new TestHttpKernel($body, $statusCode, $headers, $customizer);
-    }
-
-    public function setNextResponses($responses)
-    {
-        $this->kernel = new TestMultipleHttpKernel($responses);
-    }
-
-    public function catchExceptions($catch = true)
-    {
-        $this->catch = $catch;
-    }
-
-    public static function clearDirectory($directory)
-    {
-        if (!is_dir($directory)) {
-            return;
-        }
-
-        $fp = opendir($directory);
-        while (false !== $file = readdir($fp)) {
-            if (!\in_array($file, ['.', '..'])) {
-                if (is_link($directory.'/'.$file)) {
-                    unlink($directory.'/'.$file);
-                } elseif (is_dir($directory.'/'.$file)) {
-                    self::clearDirectory($directory.'/'.$file);
-                    rmdir($directory.'/'.$file);
-                } else {
-                    unlink($directory.'/'.$file);
-                }
-            }
-        }
-
-        closedir($fp);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php
deleted file mode 100644
index 22cadf71..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/ResponseCacheStrategyTest.php
+++ /dev/null
@@ -1,469 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This code is partially based on the Rack-Cache library by Ryan Tomayko,
- * which is released under the MIT license.
- * (based on commit 02d2b48d75bcb63cf1c0c7149c077ad256542801)
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy;
-
-class ResponseCacheStrategyTest extends TestCase
-{
-    public function testMinimumSharedMaxAgeWins()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $response2->setSharedMaxAge(3600);
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $response->setSharedMaxAge(86400);
-        $cacheStrategy->update($response);
-
-        $this->assertSame('60', $response->headers->getCacheControlDirective('s-maxage'));
-    }
-
-    public function testSharedMaxAgeNotSetIfNotSetInAnyEmbeddedRequest()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $response->setSharedMaxAge(86400);
-        $cacheStrategy->update($response);
-
-        $this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
-    }
-
-    public function testSharedMaxAgeNotSetIfNotSetInMasterRequest()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $response1 = new Response();
-        $response1->setSharedMaxAge(60);
-        $cacheStrategy->add($response1);
-
-        $response2 = new Response();
-        $response2->setSharedMaxAge(3600);
-        $cacheStrategy->add($response2);
-
-        $response = new Response();
-        $cacheStrategy->update($response);
-
-        $this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
-    }
-
-    public function testMasterResponseNotCacheableWhenEmbeddedResponseRequiresValidation()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setLastModified(new \DateTime());
-        $cacheStrategy->add($embeddedResponse);
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($masterResponse->isFresh());
-    }
-
-    public function testValidationOnMasterResponseIsNotPossibleWhenItContainsEmbeddedResponses()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        // This master response uses the "validation" model
-        $masterResponse = new Response();
-        $masterResponse->setLastModified(new \DateTime());
-        $masterResponse->setEtag('foo');
-
-        // Embedded response uses "expiry" model
-        $embeddedResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->add($embeddedResponse);
-
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertFalse($masterResponse->isValidateable());
-        $this->assertFalse($masterResponse->headers->has('Last-Modified'));
-        $this->assertFalse($masterResponse->headers->has('ETag'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-    }
-
-    public function testMasterResponseWithValidationIsUnchangedWhenThereIsNoEmbeddedResponse()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setLastModified(new \DateTime());
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->isValidateable());
-    }
-
-    public function testMasterResponseWithExpirationIsUnchangedWhenThereIsNoEmbeddedResponse()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->isFresh());
-    }
-
-    public function testMasterResponseIsNotCacheableWhenEmbeddedResponseIsNotCacheable()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600); // Public, cacheable
-
-        /* This response has no validation or expiration information.
-           That makes it uncacheable, it is always stale.
-           (It does *not* make this private, though.) */
-        $embeddedResponse = new Response();
-        $this->assertFalse($embeddedResponse->isFresh()); // not fresh, as no lifetime is provided
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
-        $this->assertFalse($masterResponse->isFresh());
-    }
-
-    public function testEmbeddingPrivateResponseMakesMainResponsePrivate()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600); // public, cacheable
-
-        // The embedded response might for example contain per-user data that remains valid for 60 seconds
-        $embeddedResponse = new Response();
-        $embeddedResponse->setPrivate();
-        $embeddedResponse->setMaxAge(60); // this would implicitly set "private" as well, but let's be explicit
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
-    }
-
-    public function testEmbeddingPublicResponseDoesNotMakeMainResponsePublic()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setPrivate(); // this is the default, but let's be explicit
-        $masterResponse->setMaxAge(100);
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setPublic();
-        $embeddedResponse->setSharedMaxAge(100);
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
-        $this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
-    }
-
-    public function testResponseIsExiprableWhenEmbeddedResponseCombinesExpiryAndValidation()
-    {
-        /* When "expiration wins over validation" (https://symfony.com/doc/current/http_cache/validation.html)
-         * and both the main and embedded response provide s-maxage, then the more restricting value of both
-         * should be fine, regardless of whether the embedded response can be validated later on or must be
-         * completely regenerated.
-         */
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setSharedMaxAge(60);
-        $embeddedResponse->setEtag('foo');
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertSame('60', $masterResponse->headers->getCacheControlDirective('s-maxage'));
-    }
-
-    public function testResponseIsExpirableButNotValidateableWhenMasterResponseCombinesExpirationAndValidation()
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-
-        $masterResponse = new Response();
-        $masterResponse->setSharedMaxAge(3600);
-        $masterResponse->setEtag('foo');
-        $masterResponse->setLastModified(new \DateTime());
-
-        $embeddedResponse = new Response();
-        $embeddedResponse->setSharedMaxAge(60);
-
-        $cacheStrategy->add($embeddedResponse);
-        $cacheStrategy->update($masterResponse);
-
-        $this->assertSame('60', $masterResponse->headers->getCacheControlDirective('s-maxage'));
-        $this->assertFalse($masterResponse->isValidateable());
-    }
-
-    /**
-     * @dataProvider cacheControlMergingProvider
-     */
-    public function testCacheControlMerging(array $expects, array $master, array $surrogates)
-    {
-        $cacheStrategy = new ResponseCacheStrategy();
-        $buildResponse = function ($config) {
-            $response = new Response();
-
-            foreach ($config as $key => $value) {
-                switch ($key) {
-                    case 'age':
-                        $response->headers->set('Age', $value);
-                        break;
-
-                    case 'expires':
-                        $expires = clone $response->getDate();
-                        $expires->modify('+'.$value.' seconds');
-                        $response->setExpires($expires);
-                        break;
-
-                    case 'max-age':
-                        $response->setMaxAge($value);
-                        break;
-
-                    case 's-maxage':
-                        $response->setSharedMaxAge($value);
-                        break;
-
-                    case 'private':
-                        $response->setPrivate();
-                        break;
-
-                    case 'public':
-                        $response->setPublic();
-                        break;
-
-                    default:
-                        $response->headers->addCacheControlDirective($key, $value);
-                }
-            }
-
-            return $response;
-        };
-
-        foreach ($surrogates as $config) {
-            $cacheStrategy->add($buildResponse($config));
-        }
-
-        $response = $buildResponse($master);
-        $cacheStrategy->update($response);
-
-        foreach ($expects as $key => $value) {
-            if ('expires' === $key) {
-                $this->assertSame($value, $response->getExpires()->format('U') - $response->getDate()->format('U'));
-            } elseif ('age' === $key) {
-                $this->assertSame($value, $response->getAge());
-            } elseif (true === $value) {
-                $this->assertTrue($response->headers->hasCacheControlDirective($key), sprintf('Cache-Control header must have "%s" flag', $key));
-            } elseif (false === $value) {
-                $this->assertFalse(
-                    $response->headers->hasCacheControlDirective($key),
-                    sprintf('Cache-Control header must NOT have "%s" flag', $key)
-                );
-            } else {
-                $this->assertSame($value, $response->headers->getCacheControlDirective($key), sprintf('Cache-Control flag "%s" should be "%s"', $key, $value));
-            }
-        }
-    }
-
-    public function cacheControlMergingProvider()
-    {
-        yield 'result is public if all responses are public' => [
-            ['private' => false, 'public' => true],
-            ['public' => true],
-            [
-                ['public' => true],
-            ],
-        ];
-
-        yield 'result is private by default' => [
-            ['private' => true, 'public' => false],
-            ['public' => true],
-            [
-                [],
-            ],
-        ];
-
-        yield 'combines public and private responses' => [
-            ['must-revalidate' => false, 'private' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['private' => true],
-            ],
-        ];
-
-        yield 'inherits no-cache from surrogates' => [
-            ['no-cache' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['no-cache' => true],
-            ],
-        ];
-
-        yield 'inherits no-store from surrogate' => [
-            ['no-store' => true, 'public' => false],
-            ['public' => true],
-            [
-                ['no-store' => true],
-            ],
-        ];
-
-        yield 'resolve to lowest possible max-age' => [
-            ['public' => false, 'private' => true, 's-maxage' => false, 'max-age' => '60'],
-            ['public' => true, 'max-age' => 3600],
-            [
-                ['private' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'resolves multiple max-age' => [
-            ['public' => false, 'private' => true, 's-maxage' => false, 'max-age' => '60'],
-            ['private' => true, 'max-age' => 100],
-            [
-                ['private' => true, 'max-age' => 3600],
-                ['public' => true, 'max-age' => 60, 's-maxage' => 60],
-                ['private' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'merge max-age and s-maxage' => [
-            ['public' => true, 's-maxage' => '60', 'max-age' => null],
-            ['public' => true, 's-maxage' => 3600],
-            [
-                ['public' => true, 'max-age' => 60],
-            ],
-        ];
-
-        yield 'result is private when combining private responses' => [
-            ['no-cache' => false, 'must-revalidate' => false, 'private' => true],
-            ['s-maxage' => 60, 'private' => true],
-            [
-                ['s-maxage' => 60, 'private' => true],
-            ],
-        ];
-
-        yield 'result can have s-maxage and max-age' => [
-            ['public' => true, 'private' => false, 's-maxage' => '60', 'max-age' => '30'],
-            ['s-maxage' => 100, 'max-age' => 2000],
-            [
-                ['s-maxage' => 1000, 'max-age' => 30],
-                ['s-maxage' => 500, 'max-age' => 500],
-                ['s-maxage' => 60, 'max-age' => 1000],
-            ],
-        ];
-
-        yield 'does not set headers without value' => [
-            ['max-age' => null, 's-maxage' => null, 'public' => null],
-            ['private' => true],
-            [
-                ['private' => true],
-            ],
-        ];
-
-        yield 'max-age 0 is sent to the client' => [
-            ['private' => true, 'max-age' => '0'],
-            ['max-age' => 0, 'private' => true],
-            [
-                ['max-age' => 60, 'private' => true],
-            ],
-        ];
-
-        yield 'max-age is relative to age' => [
-            ['max-age' => '240', 'age' => 60],
-            ['max-age' => 180],
-            [
-                ['max-age' => 600, 'age' => 60],
-            ],
-        ];
-
-        yield 'retains lowest age of all responses' => [
-            ['max-age' => '160', 'age' => 60],
-            ['max-age' => 600, 'age' => 60],
-            [
-                ['max-age' => 120, 'age' => 20],
-            ],
-        ];
-
-        yield 'max-age can be less than age, essentially expiring the response' => [
-            ['age' => 120, 'max-age' => '90'],
-            ['max-age' => 90, 'age' => 120],
-            [
-                ['max-age' => 120, 'age' => 60],
-            ],
-        ];
-
-        yield 'max-age is 0 regardless of age' => [
-            ['max-age' => '0'],
-            ['max-age' => 60],
-            [
-                ['max-age' => 0, 'age' => 60],
-            ],
-        ];
-
-        yield 'max-age is not negative' => [
-            ['max-age' => '0'],
-            ['max-age' => 0],
-            [
-                ['max-age' => 0, 'age' => 60],
-            ],
-        ];
-
-        yield 'calculates lowest Expires header' => [
-            ['expires' => 60],
-            ['expires' => 60],
-            [
-                ['expires' => 120],
-            ],
-        ];
-
-        yield 'calculates Expires header relative to age' => [
-            ['expires' => 210, 'age' => 120],
-            ['expires' => 90],
-            [
-                ['expires' => 600, 'age' => '120'],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php
deleted file mode 100644
index 3d68052c..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/SsiTest.php
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Ssi;
-
-class SsiTest extends TestCase
-{
-    public function testHasSurrogateSsiCapability()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'abc="SSI/1.0"');
-        $this->assertTrue($ssi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $request->headers->set('Surrogate-Capability', 'foobar');
-        $this->assertFalse($ssi->hasSurrogateCapability($request));
-
-        $request = Request::create('/');
-        $this->assertFalse($ssi->hasSurrogateCapability($request));
-    }
-
-    public function testAddSurrogateSsiCapability()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $ssi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="SSI/1.0"', $request->headers->get('Surrogate-Capability'));
-
-        $ssi->addSurrogateCapability($request);
-        $this->assertEquals('symfony="SSI/1.0", symfony="SSI/1.0"', $request->headers->get('Surrogate-Capability'));
-    }
-
-    public function testAddSurrogateControl()
-    {
-        $ssi = new Ssi();
-
-        $response = new Response('foo <!--#include virtual="" -->');
-        $ssi->addSurrogateControl($response);
-        $this->assertEquals('content="SSI/1.0"', $response->headers->get('Surrogate-Control'));
-
-        $response = new Response('foo');
-        $ssi->addSurrogateControl($response);
-        $this->assertEquals('', $response->headers->get('Surrogate-Control'));
-    }
-
-    public function testNeedsSsiParsing()
-    {
-        $ssi = new Ssi();
-
-        $response = new Response();
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        $this->assertTrue($ssi->needsParsing($response));
-
-        $response = new Response();
-        $this->assertFalse($ssi->needsParsing($response));
-    }
-
-    public function testRenderIncludeTag()
-    {
-        $ssi = new Ssi();
-
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/', '/alt', true));
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/', '/alt', false));
-        $this->assertEquals('<!--#include virtual="/" -->', $ssi->renderIncludeTag('/'));
-    }
-
-    public function testProcessDoesNothingIfContentTypeIsNotHtml()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response();
-        $response->headers->set('Content-Type', 'text/plain');
-        $ssi->process($request, $response);
-
-        $this->assertFalse($response->headers->has('x-body-eval'));
-    }
-
-    public function testProcess()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include virtual="..." -->');
-        $ssi->process($request, $response);
-
-        $this->assertEquals('foo <?php echo $this->surrogate->handle($this, \'...\', \'\', false) ?>'."\n", $response->getContent());
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-
-        $response = new Response('foo <!--#include virtual="foo\'" -->');
-        $ssi->process($request, $response);
-
-        $this->assertEquals("foo <?php echo \$this->surrogate->handle(\$this, 'foo\\'', '', false) ?>"."\n", $response->getContent());
-    }
-
-    public function testProcessEscapesPhpTags()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('<?php <? <% <script language=php>');
-        $ssi->process($request, $response);
-
-        $this->assertEquals('<?php echo "<?"; ?>php <?php echo "<?"; ?> <?php echo "<%"; ?> <?php echo "<s"; ?>cript language=php>', $response->getContent());
-    }
-
-    public function testProcessWhenNoSrcInAnSsi()
-    {
-        $this->expectException('RuntimeException');
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include -->');
-        $ssi->process($request, $response);
-    }
-
-    public function testProcessRemoveSurrogateControlHeader()
-    {
-        $ssi = new Ssi();
-
-        $request = Request::create('/');
-        $response = new Response('foo <!--#include virtual="..." -->');
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0"');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-
-        $response->headers->set('Surrogate-Control', 'no-store, content="SSI/1.0"');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-
-        $response->headers->set('Surrogate-Control', 'content="SSI/1.0", no-store');
-        $ssi->process($request, $response);
-        $this->assertEquals('SSI', $response->headers->get('x-body-eval'));
-        $this->assertEquals('no-store', $response->headers->get('surrogate-control'));
-    }
-
-    public function testHandle()
-    {
-        $ssi = new Ssi();
-        $cache = $this->getCache(Request::create('/'), new Response('foo'));
-        $this->assertEquals('foo', $ssi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200()
-    {
-        $this->expectException('RuntimeException');
-        $ssi = new Ssi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $ssi->handle($cache, '/', '/alt', false);
-    }
-
-    public function testHandleWhenResponseIsNot200AndErrorsAreIgnored()
-    {
-        $ssi = new Ssi();
-        $response = new Response('foo');
-        $response->setStatusCode(404);
-        $cache = $this->getCache(Request::create('/'), $response);
-        $this->assertEquals('', $ssi->handle($cache, '/', '/alt', true));
-    }
-
-    public function testHandleWhenResponseIsNot200AndAltIsPresent()
-    {
-        $ssi = new Ssi();
-        $response1 = new Response('foo');
-        $response1->setStatusCode(404);
-        $response2 = new Response('bar');
-        $cache = $this->getCache(Request::create('/'), [$response1, $response2]);
-        $this->assertEquals('bar', $ssi->handle($cache, '/', '/alt', false));
-    }
-
-    protected function getCache($request, $response)
-    {
-        $cache = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\HttpCache')->setMethods(['getRequest', 'handle'])->disableOriginalConstructor()->getMock();
-        $cache->expects($this->any())
-              ->method('getRequest')
-              ->willReturn($request)
-        ;
-        if (\is_array($response)) {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->will($this->onConsecutiveCalls(...$response))
-            ;
-        } else {
-            $cache->expects($this->any())
-                  ->method('handle')
-                  ->willReturn($response)
-            ;
-        }
-
-        return $cache;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php
deleted file mode 100644
index 2887c14f..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/StoreTest.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\Store;
-
-class StoreTest extends TestCase
-{
-    protected $request;
-    protected $response;
-
-    /**
-     * @var Store
-     */
-    protected $store;
-
-    protected function setUp(): void
-    {
-        $this->request = Request::create('/');
-        $this->response = new Response('hello world', 200, []);
-
-        HttpCacheTestCase::clearDirectory(sys_get_temp_dir().'/http_cache');
-
-        $this->store = new Store(sys_get_temp_dir().'/http_cache');
-    }
-
-    protected function tearDown(): void
-    {
-        $this->store = null;
-        $this->request = null;
-        $this->response = null;
-
-        HttpCacheTestCase::clearDirectory(sys_get_temp_dir().'/http_cache');
-    }
-
-    public function testReadsAnEmptyArrayWithReadWhenNothingCachedAtKey()
-    {
-        $this->assertEmpty($this->getStoreMetadata('/nothing'));
-    }
-
-    public function testUnlockFileThatDoesExist()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-        $this->store->lock($this->request);
-
-        $this->assertTrue($this->store->unlock($this->request));
-    }
-
-    public function testUnlockFileThatDoesNotExist()
-    {
-        $this->assertFalse($this->store->unlock($this->request));
-    }
-
-    public function testRemovesEntriesForKeyWithPurge()
-    {
-        $request = Request::create('/foo');
-        $this->store->write($request, new Response('foo'));
-
-        $metadata = $this->getStoreMetadata($request);
-        $this->assertNotEmpty($metadata);
-
-        $this->assertTrue($this->store->purge('/foo'));
-        $this->assertEmpty($this->getStoreMetadata($request));
-
-        // cached content should be kept after purging
-        $path = $this->store->getPath($metadata[0][1]['x-content-digest'][0]);
-        $this->assertTrue(is_file($path));
-
-        $this->assertFalse($this->store->purge('/bar'));
-    }
-
-    public function testStoresACacheEntry()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-
-        $this->assertNotEmpty($this->getStoreMetadata($cacheKey));
-    }
-
-    public function testSetsTheXContentDigestResponseHeaderBeforeStoring()
-    {
-        $cacheKey = $this->storeSimpleEntry();
-        $entries = $this->getStoreMetadata($cacheKey);
-        list($req, $res) = $entries[0];
-
-        $this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
-    }
-
-    public function testFindsAStoredEntryWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-
-        $this->assertNotNull($response);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-    }
-
-    public function testDoesNotFindAnEntryWithLookupWhenNoneExists()
-    {
-        $request = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-
-        $this->assertNull($this->store->lookup($request));
-    }
-
-    public function testCanonizesUrlsForCacheKeys()
-    {
-        $this->storeSimpleEntry($path = '/test?x=y&p=q');
-        $hitsReq = Request::create($path);
-        $missReq = Request::create('/test?p=x');
-
-        $this->assertNotNull($this->store->lookup($hitsReq));
-        $this->assertNull($this->store->lookup($missReq));
-    }
-
-    public function testDoesNotFindAnEntryWithLookupWhenTheBodyDoesNotExist()
-    {
-        $this->storeSimpleEntry();
-        $this->assertNotNull($this->response->headers->get('X-Content-Digest'));
-        $path = $this->getStorePath($this->response->headers->get('X-Content-Digest'));
-        @unlink($path);
-        $this->assertNull($this->store->lookup($this->request));
-    }
-
-    public function testRestoresResponseHeadersProperlyWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-
-        $this->assertEquals($response->headers->all(), array_merge(['content-length' => 4, 'x-body-file' => [$this->getStorePath($response->headers->get('X-Content-Digest'))]], $this->response->headers->all()));
-    }
-
-    public function testRestoresResponseContentFromEntityStoreWithLookup()
-    {
-        $this->storeSimpleEntry();
-        $response = $this->store->lookup($this->request);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test')), $response->getContent());
-    }
-
-    public function testInvalidatesMetaAndEntityStoreEntriesWithInvalidate()
-    {
-        $this->storeSimpleEntry();
-        $this->store->invalidate($this->request);
-        $response = $this->store->lookup($this->request);
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $response);
-        $this->assertFalse($response->isFresh());
-    }
-
-    public function testSucceedsQuietlyWhenInvalidateCalledWithNoMatchingEntries()
-    {
-        $req = Request::create('/test');
-        $this->store->invalidate($req);
-        $this->assertNull($this->store->lookup($this->request));
-    }
-
-    public function testDoesNotReturnEntriesThatVaryWithLookup()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res = new Response('test', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req1, $res);
-
-        $this->assertNull($this->store->lookup($req2));
-    }
-
-    public function testDoesNotReturnEntriesThatSlightlyVaryWithLookup()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bam']);
-        $res = new Response('test', 200, ['Vary' => ['Foo', 'Bar']]);
-        $this->store->write($req1, $res);
-
-        $this->assertNull($this->store->lookup($req2));
-    }
-
-    public function testStoresMultipleResponsesForEachVaryCombination()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res1 = new Response('test 1', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req1, $res1);
-
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res2 = new Response('test 2', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req2, $res2);
-
-        $req3 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Baz', 'HTTP_BAR' => 'Boom']);
-        $res3 = new Response('test 3', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req3, $res3);
-
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 3')), $this->store->lookup($req3)->getContent());
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 2')), $this->store->lookup($req2)->getContent());
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 1')), $this->store->lookup($req1)->getContent());
-
-        $this->assertCount(3, $this->getStoreMetadata($key));
-    }
-
-    public function testOverwritesNonVaryingResponseWithStore()
-    {
-        $req1 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res1 = new Response('test 1', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req1, $res1);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 1')), $this->store->lookup($req1)->getContent());
-
-        $req2 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam']);
-        $res2 = new Response('test 2', 200, ['Vary' => 'Foo Bar']);
-        $this->store->write($req2, $res2);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 2')), $this->store->lookup($req2)->getContent());
-
-        $req3 = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $res3 = new Response('test 3', 200, ['Vary' => 'Foo Bar']);
-        $key = $this->store->write($req3, $res3);
-        $this->assertEquals($this->getStorePath('en'.hash('sha256', 'test 3')), $this->store->lookup($req3)->getContent());
-
-        $this->assertCount(2, $this->getStoreMetadata($key));
-    }
-
-    public function testLocking()
-    {
-        $req = Request::create('/test', 'get', [], [], [], ['HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar']);
-        $this->assertTrue($this->store->lock($req));
-
-        $path = $this->store->lock($req);
-        $this->assertTrue($this->store->isLocked($req));
-
-        $this->store->unlock($req);
-        $this->assertFalse($this->store->isLocked($req));
-    }
-
-    public function testPurgeHttps()
-    {
-        $request = Request::create('https://example.com/foo');
-        $this->store->write($request, new Response('foo'));
-
-        $this->assertNotEmpty($this->getStoreMetadata($request));
-
-        $this->assertTrue($this->store->purge('https://example.com/foo'));
-        $this->assertEmpty($this->getStoreMetadata($request));
-    }
-
-    public function testPurgeHttpAndHttps()
-    {
-        $requestHttp = Request::create('https://example.com/foo');
-        $this->store->write($requestHttp, new Response('foo'));
-
-        $requestHttps = Request::create('http://example.com/foo');
-        $this->store->write($requestHttps, new Response('foo'));
-
-        $this->assertNotEmpty($this->getStoreMetadata($requestHttp));
-        $this->assertNotEmpty($this->getStoreMetadata($requestHttps));
-
-        $this->assertTrue($this->store->purge('http://example.com/foo'));
-        $this->assertEmpty($this->getStoreMetadata($requestHttp));
-        $this->assertEmpty($this->getStoreMetadata($requestHttps));
-    }
-
-    protected function storeSimpleEntry($path = null, $headers = [])
-    {
-        if (null === $path) {
-            $path = '/test';
-        }
-
-        $this->request = Request::create($path, 'get', [], [], [], $headers);
-        $this->response = new Response('test', 200, ['Cache-Control' => 'max-age=420']);
-
-        return $this->store->write($this->request, $this->response);
-    }
-
-    protected function getStoreMetadata($key)
-    {
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('getMetadata');
-        $m->setAccessible(true);
-
-        if ($key instanceof Request) {
-            $m1 = $r->getMethod('getCacheKey');
-            $m1->setAccessible(true);
-            $key = $m1->invoke($this->store, $key);
-        }
-
-        return $m->invoke($this->store, $key);
-    }
-
-    protected function getStorePath($key)
-    {
-        $r = new \ReflectionObject($this->store);
-        $m = $r->getMethod('getPath');
-        $m->setAccessible(true);
-
-        return $m->invoke($this->store, $key);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php b/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php
deleted file mode 100644
index 61e6bede..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/SubRequestHandlerTest.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpCache\SubRequestHandler;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class SubRequestHandlerTest extends TestCase
-{
-    private static $globalState;
-
-    protected function setUp(): void
-    {
-        self::$globalState = $this->getGlobalState();
-    }
-
-    protected function tearDown(): void
-    {
-        Request::setTrustedProxies(self::$globalState[0], self::$globalState[1]);
-    }
-
-    public function testTrustedHeadersAreKept()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'Good');
-        $request->headers->set('X-Forwarded-Port', '1234');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('Good', $request->headers->get('X-Forwarded-Host'));
-            $this->assertSame('1234', $request->headers->get('X-Forwarded-Port'));
-            $this->assertSame('https', $request->headers->get('X-Forwarded-Proto'));
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    public function testUntrustedHeadersAreRemoved()
-    {
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'Evil');
-        $request->headers->set('X-Forwarded-Port', '1234');
-        $request->headers->set('X-Forwarded-Proto', 'http');
-        $request->headers->set('Forwarded', 'Evil2');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.1', $request->getClientIp());
-            $this->assertFalse($request->headers->has('X-Forwarded-Host'));
-            $this->assertFalse($request->headers->has('X-Forwarded-Port'));
-            $this->assertFalse($request->headers->has('X-Forwarded-Proto'));
-            $this->assertSame('for="10.0.0.1";host="localhost";proto=http', $request->headers->get('Forwarded'));
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame(self::$globalState, $this->getGlobalState());
-    }
-
-    public function testTrustedForwardedHeader()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('Forwarded', 'for="10.0.0.2";host="foo.bar:1234";proto=https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('foo.bar:1234', $request->getHttpHost());
-            $this->assertSame('https', $request->getScheme());
-            $this->assertSame(1234, $request->getPort());
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    public function testTrustedXForwardedForHeader()
-    {
-        Request::setTrustedProxies(['10.0.0.1'], -1);
-        $globalState = $this->getGlobalState();
-
-        $request = Request::create('/');
-        $request->server->set('REMOTE_ADDR', '10.0.0.1');
-        $request->headers->set('X-Forwarded-For', '10.0.0.2');
-        $request->headers->set('X-Forwarded-Host', 'foo.bar');
-        $request->headers->set('X-Forwarded-Proto', 'https');
-
-        $kernel = new TestSubRequestHandlerKernel(function ($request, $type, $catch) {
-            $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR'));
-            $this->assertSame('10.0.0.2', $request->getClientIp());
-            $this->assertSame('foo.bar', $request->getHttpHost());
-            $this->assertSame('https', $request->getScheme());
-        });
-
-        SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertSame($globalState, $this->getGlobalState());
-    }
-
-    private function getGlobalState()
-    {
-        return [
-            Request::getTrustedProxies(),
-            Request::getTrustedHeaderSet(),
-        ];
-    }
-}
-
-class TestSubRequestHandlerKernel implements HttpKernelInterface
-{
-    private $assertCallback;
-
-    public function __construct(\Closure $assertCallback)
-    {
-        $this->assertCallback = $assertCallback;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-        $assertCallback = $this->assertCallback;
-        $assertCallback($request, $type, $catch);
-
-        return new Response();
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php b/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
deleted file mode 100644
index 304ff9d9..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class TestHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    protected $body;
-    protected $status;
-    protected $headers;
-    protected $called = false;
-    protected $customizer;
-    protected $catch = false;
-    protected $backendRequest;
-
-    public function __construct($body, $status, $headers, \Closure $customizer = null)
-    {
-        $this->body = $body;
-        $this->status = $status;
-        $this->headers = $headers;
-        $this->customizer = $customizer;
-
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function assert(\Closure $callback)
-    {
-        $trustedConfig = [Request::getTrustedProxies(), Request::getTrustedHeaderSet()];
-
-        list($trustedProxies, $trustedHeaderSet, $backendRequest) = $this->backendRequest;
-        Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
-
-        try {
-            $callback($backendRequest);
-        } finally {
-            list($trustedProxies, $trustedHeaderSet) = $trustedConfig;
-            Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
-        }
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
-    {
-        $this->catch = $catch;
-        $this->backendRequest = [Request::getTrustedProxies(), Request::getTrustedHeaderSet(), $request];
-
-        return parent::handle($request, $type, $catch);
-    }
-
-    public function isCatchingExceptions()
-    {
-        return $this->catch;
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        $this->called = true;
-
-        $response = new Response($this->body, $this->status, $this->headers);
-
-        if (null !== $customizer = $this->customizer) {
-            $customizer($request, $response);
-        }
-
-        return $response;
-    }
-
-    public function hasBeenCalled()
-    {
-        return $this->called;
-    }
-
-    public function reset()
-    {
-        $this->called = false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php b/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
deleted file mode 100644
index 010bee86..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\HttpCache;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-
-class TestMultipleHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    protected $bodies = [];
-    protected $statuses = [];
-    protected $headers = [];
-    protected $called = false;
-    protected $backendRequest;
-
-    public function __construct($responses)
-    {
-        foreach ($responses as $response) {
-            $this->bodies[] = $response['body'];
-            $this->statuses[] = $response['status'];
-            $this->headers[] = $response['headers'];
-        }
-
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function getBackendRequest()
-    {
-        return $this->backendRequest;
-    }
-
-    public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
-    {
-        $this->backendRequest = $request;
-
-        return parent::handle($request, $type, $catch);
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        $this->called = true;
-
-        $response = new Response(array_shift($this->bodies), array_shift($this->statuses), array_shift($this->headers));
-
-        return $response;
-    }
-
-    public function hasBeenCalled()
-    {
-        return $this->called;
-    }
-
-    public function reset()
-    {
-        $this->called = false;
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php b/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php
deleted file mode 100644
index fdcfc266..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpKernelBrowserTest.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Cookie;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\HttpKernelBrowser;
-use Symfony\Component\HttpKernel\Tests\Fixtures\TestClient;
-
-/**
- * @group time-sensitive
- */
-class HttpKernelBrowserTest extends TestCase
-{
-    public function testDoRequest()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $client->request('GET', '/');
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->doRequest() uses the request handler to make the request');
-        $this->assertInstanceOf('Symfony\Component\BrowserKit\Request', $client->getInternalRequest());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Request', $client->getRequest());
-        $this->assertInstanceOf('Symfony\Component\BrowserKit\Response', $client->getInternalResponse());
-        $this->assertInstanceOf('Symfony\Component\HttpFoundation\Response', $client->getResponse());
-
-        $client->request('GET', 'http://www.example.com/');
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->doRequest() uses the request handler to make the request');
-        $this->assertEquals('www.example.com', $client->getRequest()->getHost(), '->doRequest() uses the request handler to make the request');
-
-        $client->request('GET', 'http://www.example.com/?parameter=http://example.com');
-        $this->assertEquals('http://www.example.com/?parameter='.urlencode('http://example.com'), $client->getRequest()->getUri(), '->doRequest() uses the request handler to make the request');
-    }
-
-    public function testGetScript()
-    {
-        $client = new TestClient(new TestHttpKernel());
-        $client->insulate();
-        $client->request('GET', '/');
-
-        $this->assertEquals('Request: /', $client->getResponse()->getContent(), '->getScript() returns a script that uses the request handler to make the request');
-    }
-
-    public function testFilterResponseConvertsCookies()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $r = new \ReflectionObject($client);
-        $m = $r->getMethod('filterResponse');
-        $m->setAccessible(true);
-
-        $response = new Response();
-        $response->headers->setCookie($cookie1 = new Cookie('foo', 'bar', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $domResponse = $m->invoke($client, $response);
-        $this->assertSame((string) $cookie1, $domResponse->getHeader('Set-Cookie'));
-
-        $response = new Response();
-        $response->headers->setCookie($cookie1 = new Cookie('foo', 'bar', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $response->headers->setCookie($cookie2 = new Cookie('foo1', 'bar1', \DateTime::createFromFormat('j-M-Y H:i:s T', '15-Feb-2009 20:00:00 GMT')->format('U'), '/foo', 'http://example.com', true, true, false, null));
-        $domResponse = $m->invoke($client, $response);
-        $this->assertSame((string) $cookie1, $domResponse->getHeader('Set-Cookie'));
-        $this->assertSame([(string) $cookie1, (string) $cookie2], $domResponse->getHeader('Set-Cookie', false));
-    }
-
-    public function testFilterResponseSupportsStreamedResponses()
-    {
-        $client = new HttpKernelBrowser(new TestHttpKernel());
-
-        $r = new \ReflectionObject($client);
-        $m = $r->getMethod('filterResponse');
-        $m->setAccessible(true);
-
-        $response = new StreamedResponse(function () {
-            echo 'foo';
-        });
-
-        $domResponse = $m->invoke($client, $response);
-        $this->assertEquals('foo', $domResponse->getContent());
-    }
-
-    public function testUploadedFile()
-    {
-        $source = tempnam(sys_get_temp_dir(), 'source');
-        file_put_contents($source, '1');
-        $target = sys_get_temp_dir().'/sf.moved.file';
-        @unlink($target);
-
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $files = [
-            ['tmp_name' => $source, 'name' => 'original', 'type' => 'mime/original', 'size' => null, 'error' => UPLOAD_ERR_OK],
-            new UploadedFile($source, 'original', 'mime/original', UPLOAD_ERR_OK, true),
-        ];
-
-        $file = null;
-        foreach ($files as $file) {
-            $client->request('POST', '/', [], ['foo' => $file]);
-
-            $files = $client->getRequest()->files->all();
-
-            $this->assertCount(1, $files);
-
-            $file = $files['foo'];
-
-            $this->assertEquals('original', $file->getClientOriginalName());
-            $this->assertEquals('mime/original', $file->getClientMimeType());
-            $this->assertEquals(1, $file->getSize());
-        }
-
-        $file->move(\dirname($target), basename($target));
-
-        $this->assertFileExists($target);
-        unlink($target);
-    }
-
-    public function testUploadedFileWhenNoFileSelected()
-    {
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $file = ['tmp_name' => '', 'name' => '', 'type' => '', 'size' => 0, 'error' => UPLOAD_ERR_NO_FILE];
-
-        $client->request('POST', '/', [], ['foo' => $file]);
-
-        $files = $client->getRequest()->files->all();
-
-        $this->assertCount(1, $files);
-        $this->assertNull($files['foo']);
-    }
-
-    public function testUploadedFileWhenSizeExceedsUploadMaxFileSize()
-    {
-        $source = tempnam(sys_get_temp_dir(), 'source');
-
-        $kernel = new TestHttpKernel();
-        $client = new HttpKernelBrowser($kernel);
-
-        $file = $this
-            ->getMockBuilder('Symfony\Component\HttpFoundation\File\UploadedFile')
-            ->setConstructorArgs([$source, 'original', 'mime/original', UPLOAD_ERR_OK, true])
-            ->setMethods(['getSize', 'getClientSize'])
-            ->getMock()
-        ;
-        /* should be modified when the getClientSize will be removed */
-        $file->expects($this->any())
-            ->method('getSize')
-            ->willReturn(INF)
-        ;
-        $file->expects($this->any())
-            ->method('getClientSize')
-            ->willReturn(PHP_INT_MAX)
-        ;
-
-        $client->request('POST', '/', [], [$file]);
-
-        $files = $client->getRequest()->files->all();
-
-        $this->assertCount(1, $files);
-
-        $file = $files[0];
-
-        $this->assertFalse($file->isValid());
-        $this->assertEquals(UPLOAD_ERR_INI_SIZE, $file->getError());
-        $this->assertEquals('mime/original', $file->getClientMimeType());
-        $this->assertEquals('original', $file->getClientOriginalName());
-        $this->assertEquals(0, $file->getSize());
-
-        unlink($source);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/HttpKernelTest.php b/vendor/symfony/http-kernel/Tests/HttpKernelTest.php
deleted file mode 100644
index 9a6170c0..00000000
--- a/vendor/symfony/http-kernel/Tests/HttpKernelTest.php
+++ /dev/null
@@ -1,385 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
-use Symfony\Component\HttpKernel\Exception\ControllerDoesNotReturnResponseException;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-
-class HttpKernelTest extends TestCase
-{
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrue()
-    {
-        $this->expectException('RuntimeException');
-        $kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
-
-        $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered()
-    {
-        $this->expectException('RuntimeException');
-        $kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
-
-        $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, false);
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithAHandlingListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new Response($event->getException()->getMessage()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException('foo'); });
-        $response = $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-
-        $this->assertEquals('500', $response->getStatusCode());
-        $this->assertEquals('foo', $response->getContent());
-    }
-
-    public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithANonHandlingListener()
-    {
-        $exception = new \RuntimeException();
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            // should set a response, but does not
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () use ($exception) { throw $exception; });
-
-        try {
-            $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
-            $this->fail('LogicException expected');
-        } catch (\RuntimeException $e) {
-            $this->assertSame($exception, $e);
-        }
-    }
-
-    public function testHandleExceptionWithARedirectionResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new RedirectResponse('/login', 301));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new AccessDeniedHttpException(); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals('301', $response->getStatusCode());
-        $this->assertEquals('/login', $response->headers->get('Location'));
-    }
-
-    public function testHandleHttpException()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) {
-            $event->setResponse(new Response($event->getException()->getMessage()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new MethodNotAllowedHttpException(['POST']); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals('405', $response->getStatusCode());
-        $this->assertEquals('POST', $response->headers->get('Allow'));
-    }
-
-    public function getStatusCodes()
-    {
-        return [
-            [200, 404],
-            [404, 200],
-            [301, 200],
-            [500, 200],
-        ];
-    }
-
-    /**
-     * @dataProvider getSpecificStatusCodes
-     */
-    public function testHandleWhenAnExceptionIsHandledWithASpecificStatusCode($expectedStatusCode)
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event) use ($expectedStatusCode) {
-            $event->allowCustomResponseCode();
-            $event->setResponse(new Response('', $expectedStatusCode));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException(); });
-        $response = $kernel->handle(new Request());
-
-        $this->assertEquals($expectedStatusCode, $response->getStatusCode());
-    }
-
-    public function getSpecificStatusCodes()
-    {
-        return [
-            [200],
-            [302],
-            [403],
-        ];
-    }
-
-    public function testHandleWhenAListenerReturnsAResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::REQUEST, function ($event) {
-            $event->setResponse(new Response('hello'));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher);
-
-        $this->assertEquals('hello', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleWhenNoControllerIsFound()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\NotFoundHttpException');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, false);
-
-        $kernel->handle(new Request());
-    }
-
-    public function testHandleWhenTheControllerIsAClosure()
-    {
-        $response = new Response('foo');
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, function () use ($response) { return $response; });
-
-        $this->assertSame($response, $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAnObjectWithInvoke()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, new TestController());
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAFunction()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, 'Symfony\Component\HttpKernel\Tests\controller_func');
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAnArray()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, [new TestController(), 'controller']);
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerIsAStaticArray()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, ['Symfony\Component\HttpKernel\Tests\TestController', 'staticcontroller']);
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleWhenTheControllerDoesNotReturnAResponse()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, function () {});
-
-        try {
-            $kernel->handle(new Request());
-
-            $this->fail('The kernel should throw an exception.');
-        } catch (ControllerDoesNotReturnResponseException $e) {
-            $first = $e->getTrace()[0];
-
-            // `file` index the array starting at 0, and __FILE__ starts at 1
-            $line = file($first['file'])[$first['line'] - 2];
-            $this->assertStringContainsString('// call controller', $line);
-        }
-    }
-
-    public function testHandleWhenTheControllerDoesNotReturnAResponseButAViewIsRegistered()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::VIEW, function ($event) {
-            $event->setResponse(new Response($event->getControllerResult()));
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function () { return 'foo'; });
-
-        $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleWithAResponseListener()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::RESPONSE, function ($event) {
-            $event->setResponse(new Response('foo'));
-        });
-        $kernel = $this->getHttpKernel($dispatcher);
-
-        $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
-    }
-
-    public function testHandleAllowChangingControllerArguments()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function ($event) {
-            $event->setArguments(['foo']);
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); });
-
-        $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
-    }
-
-    public function testHandleAllowChangingControllerAndArguments()
-    {
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function ($event) {
-            $oldController = $event->getController();
-            $oldArguments = $event->getArguments();
-
-            $newController = function ($id) use ($oldController, $oldArguments) {
-                $response = $oldController(...$oldArguments);
-
-                $response->headers->set('X-Id', $id);
-
-                return $response;
-            };
-
-            $event->setController($newController);
-            $event->setArguments(['bar']);
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); }, null, ['foo']);
-
-        $this->assertResponseEquals(new Response('foo', 200, ['X-Id' => 'bar']), $kernel->handle(new Request()));
-    }
-
-    public function testTerminate()
-    {
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher);
-        $dispatcher->addListener(KernelEvents::TERMINATE, function ($event) use (&$called, &$capturedKernel, &$capturedRequest, &$capturedResponse) {
-            $called = true;
-            $capturedKernel = $event->getKernel();
-            $capturedRequest = $event->getRequest();
-            $capturedResponse = $event->getResponse();
-        });
-
-        $kernel->terminate($request = Request::create('/'), $response = new Response());
-        $this->assertTrue($called);
-        $this->assertEquals($kernel, $capturedKernel);
-        $this->assertEquals($request, $capturedRequest);
-        $this->assertEquals($response, $capturedResponse);
-    }
-
-    public function testVerifyRequestStackPushPopDuringHandle()
-    {
-        $request = new Request();
-
-        $stack = $this->getMockBuilder('Symfony\Component\HttpFoundation\RequestStack')->setMethods(['push', 'pop'])->getMock();
-        $stack->expects($this->at(0))->method('push')->with($this->equalTo($request));
-        $stack->expects($this->at(1))->method('pop');
-
-        $dispatcher = new EventDispatcher();
-        $kernel = $this->getHttpKernel($dispatcher, null, $stack);
-
-        $kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
-    }
-
-    public function testInconsistentClientIpsOnMasterRequests()
-    {
-        $this->expectException('Symfony\Component\HttpKernel\Exception\BadRequestHttpException');
-        $request = new Request();
-        $request->setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_FOR | Request::HEADER_FORWARDED);
-        $request->server->set('REMOTE_ADDR', '1.1.1.1');
-        $request->headers->set('FORWARDED', 'for=2.2.2.2');
-        $request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
-
-        $dispatcher = new EventDispatcher();
-        $dispatcher->addListener(KernelEvents::REQUEST, function ($event) {
-            $event->getRequest()->getClientIp();
-        });
-
-        $kernel = $this->getHttpKernel($dispatcher);
-        $kernel->handle($request, $kernel::MASTER_REQUEST, false);
-
-        Request::setTrustedProxies([], -1);
-    }
-
-    private function getHttpKernel(EventDispatcherInterface $eventDispatcher, $controller = null, RequestStack $requestStack = null, array $arguments = [])
-    {
-        if (null === $controller) {
-            $controller = function () { return new Response('Hello'); };
-        }
-
-        $controllerResolver = $this->getMockBuilder(ControllerResolverInterface::class)->getMock();
-        $controllerResolver
-            ->expects($this->any())
-            ->method('getController')
-            ->willReturn($controller);
-
-        $argumentResolver = $this->getMockBuilder(ArgumentResolverInterface::class)->getMock();
-        $argumentResolver
-            ->expects($this->any())
-            ->method('getArguments')
-            ->willReturn($arguments);
-
-        return new HttpKernel($eventDispatcher, $controllerResolver, $requestStack, $argumentResolver);
-    }
-
-    private function assertResponseEquals(Response $expected, Response $actual)
-    {
-        $expected->setDate($actual->getDate());
-        $this->assertEquals($expected, $actual);
-    }
-}
-
-class TestController
-{
-    public function __invoke()
-    {
-        return new Response('foo');
-    }
-
-    public function controller()
-    {
-        return new Response('foo');
-    }
-
-    public static function staticController()
-    {
-        return new Response('foo');
-    }
-}
-
-function controller_func()
-{
-    return new Response('foo');
-}
diff --git a/vendor/symfony/http-kernel/Tests/KernelTest.php b/vendor/symfony/http-kernel/Tests/KernelTest.php
deleted file mode 100644
index 26bf7d8a..00000000
--- a/vendor/symfony/http-kernel/Tests/KernelTest.php
+++ /dev/null
@@ -1,748 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\Filesystem\Filesystem;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Bundle\BundleInterface;
-use Symfony\Component\HttpKernel\DependencyInjection\ResettableServicePass;
-use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Kernel;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForOverrideName;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest;
-use Symfony\Component\HttpKernel\Tests\Fixtures\KernelWithoutBundles;
-use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService;
-
-class KernelTest extends TestCase
-{
-    public static function tearDownAfterClass(): void
-    {
-        $fs = new Filesystem();
-        $fs->remove(__DIR__.'/Fixtures/var');
-    }
-
-    public function testConstructor()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-
-        $this->assertEquals($env, $kernel->getEnvironment());
-        $this->assertEquals($debug, $kernel->isDebug());
-        $this->assertFalse($kernel->isBooted());
-        $this->assertLessThanOrEqual(microtime(true), $kernel->getStartTime());
-        $this->assertNull($kernel->getContainer());
-    }
-
-    public function testClone()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-
-        $clone = clone $kernel;
-
-        $this->assertEquals($env, $clone->getEnvironment());
-        $this->assertEquals($debug, $clone->isDebug());
-        $this->assertFalse($clone->isBooted());
-        $this->assertLessThanOrEqual(microtime(true), $clone->getStartTime());
-        $this->assertNull($clone->getContainer());
-    }
-
-    public function testClassNameValidityGetter()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The environment "test.env" contains invalid characters, it can only contain characters allowed in PHP class names.');
-        // We check the classname that will be generated by using a $env that
-        // contains invalid characters.
-        $env = 'test.env';
-        $kernel = new KernelForTest($env, false);
-
-        $kernel->boot();
-    }
-
-    public function testInitializeContainerClearsOldContainers()
-    {
-        $fs = new Filesystem();
-        $legacyContainerDir = __DIR__.'/Fixtures/var/cache/custom/ContainerA123456';
-        $fs->mkdir($legacyContainerDir);
-        touch($legacyContainerDir.'.legacy');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $containerDir = __DIR__.'/Fixtures/var/cache/custom/'.substr(\get_class($kernel->getContainer()), 0, 16);
-        $this->assertTrue(unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta'));
-        $this->assertFileExists($containerDir);
-        $this->assertFileNotExists($containerDir.'.legacy');
-
-        $kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass')->setPublic(true); });
-        $kernel->boot();
-
-        $this->assertFileExists($containerDir);
-        $this->assertFileExists($containerDir.'.legacy');
-
-        $this->assertFileNotExists($legacyContainerDir);
-        $this->assertFileNotExists($legacyContainerDir.'.legacy');
-    }
-
-    public function testBootInitializesBundlesAndContainer()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->expects($this->once())
-            ->method('initializeBundles');
-        $kernel->expects($this->once())
-            ->method('initializeContainer');
-
-        $kernel->boot();
-    }
-
-    public function testBootSetsTheContainerToTheBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->once())
-            ->method('setContainer');
-
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer', 'getBundles']);
-        $kernel->expects($this->once())
-            ->method('getBundles')
-            ->willReturn([$bundle]);
-
-        $kernel->boot();
-    }
-
-    public function testBootSetsTheBootedFlagToTrue()
-    {
-        // use test kernel to access isBooted()
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->boot();
-
-        $this->assertTrue($kernel->isBooted());
-    }
-
-    public function testClassCacheIsNotLoadedByDefault()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer', 'doLoadClassCache']);
-        $kernel->expects($this->never())
-            ->method('doLoadClassCache');
-
-        $kernel->boot();
-    }
-
-    public function testBootKernelSeveralTimesOnlyInitializesBundlesOnce()
-    {
-        $kernel = $this->getKernel(['initializeBundles', 'initializeContainer']);
-        $kernel->expects($this->once())
-            ->method('initializeBundles');
-
-        $kernel->boot();
-        $kernel->boot();
-    }
-
-    public function testShutdownCallsShutdownOnAllBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->once())
-            ->method('shutdown');
-
-        $kernel = $this->getKernel([], [$bundle]);
-
-        $kernel->boot();
-        $kernel->shutdown();
-    }
-
-    public function testShutdownGivesNullContainerToAllBundles()
-    {
-        $bundle = $this->getMockBuilder('Symfony\Component\HttpKernel\Bundle\Bundle')->getMock();
-        $bundle->expects($this->at(3))
-            ->method('setContainer')
-            ->with(null);
-
-        $kernel = $this->getKernel(['getBundles']);
-        $kernel->expects($this->any())
-            ->method('getBundles')
-            ->willReturn([$bundle]);
-
-        $kernel->boot();
-        $kernel->shutdown();
-    }
-
-    public function testHandleCallsHandleOnHttpKernel()
-    {
-        $type = HttpKernelInterface::MASTER_REQUEST;
-        $catch = true;
-        $request = new Request();
-
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $httpKernelMock
-            ->expects($this->once())
-            ->method('handle')
-            ->with($request, $type, $catch);
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->handle($request, $type, $catch);
-    }
-
-    public function testHandleBootsTheKernel()
-    {
-        $type = HttpKernelInterface::MASTER_REQUEST;
-        $catch = true;
-        $request = new Request();
-
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $kernel = $this->getKernel(['getHttpKernel', 'boot']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->expects($this->once())
-            ->method('boot');
-
-        $kernel->handle($request, $type, $catch);
-    }
-
-    public function testStripComments()
-    {
-        $source = <<<'EOF'
-<?php
-
-$string = 'string should not be   modified';
-
-$string = 'string should not be
-
-modified';
-
-
-$heredoc = <<<HD
-
-
-Heredoc should not be   modified {$a[1+$b]}
-
-
-HD;
-
-$nowdoc = <<<'ND'
-
-
-Nowdoc should not be   modified
-
-
-ND;
-
-/**
- * some class comments to strip
- */
-class TestClass
-{
-    /**
-     * some method comments to strip
-     */
-    public function doStuff()
-    {
-        // inline comment
-    }
-}
-EOF;
-        $expected = <<<'EOF'
-<?php
-$string = 'string should not be   modified';
-$string = 'string should not be
-
-modified';
-$heredoc = <<<HD
-
-
-Heredoc should not be   modified {$a[1+$b]}
-
-
-HD;
-$nowdoc = <<<'ND'
-
-
-Nowdoc should not be   modified
-
-
-ND;
-class TestClass
-{
-    public function doStuff()
-    {
-        }
-}
-EOF;
-
-        $output = Kernel::stripComments($source);
-
-        // Heredocs are preserved, making the output mixing Unix and Windows line
-        // endings, switching to "\n" everywhere on Windows to avoid failure.
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $expected = str_replace("\r\n", "\n", $expected);
-            $output = str_replace("\r\n", "\n", $output);
-        }
-
-        $this->assertEquals($expected, $output);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetRootDir()
-    {
-        $kernel = new KernelForTest('test', true);
-
-        $this->assertEquals(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures', realpath($kernel->getRootDir()));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetName()
-    {
-        $kernel = new KernelForTest('test', true);
-
-        $this->assertEquals('Fixtures', $kernel->getName());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testOverrideGetName()
-    {
-        $kernel = new KernelForOverrideName('test', true);
-
-        $this->assertEquals('overridden', $kernel->getName());
-    }
-
-    public function testSerialize()
-    {
-        $env = 'test_env';
-        $debug = true;
-        $kernel = new KernelForTest($env, $debug);
-        $expected = "O:57:\"Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest\":2:{s:14:\"\0*\0environment\";s:8:\"test_env\";s:8:\"\0*\0debug\";b:1;}";
-        $this->assertEquals($expected, serialize($kernel));
-    }
-
-    public function testLocateResourceThrowsExceptionWhenNameIsNotValid()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->getKernel()->locateResource('Foo');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenNameIsUnsafe()
-    {
-        $this->expectException('RuntimeException');
-        $this->getKernel()->locateResource('@FooBundle/../bar');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenBundleDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->getKernel()->locateResource('@FooBundle/config/routing.xml');
-    }
-
-    public function testLocateResourceThrowsExceptionWhenResourceDoesNotExist()
-    {
-        $this->expectException('InvalidArgumentException');
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $kernel->locateResource('@Bundle1Bundle/config/routing.xml');
-    }
-
-    public function testLocateResourceReturnsTheFirstThatMatches()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(__DIR__.'/Fixtures/Bundle1Bundle/foo.txt', $kernel->locateResource('@Bundle1Bundle/foo.txt'));
-    }
-
-    public function testLocateResourceIgnoresDirOnNonResource()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/foo.txt',
-            $kernel->locateResource('@Bundle1Bundle/foo.txt', __DIR__.'/Fixtures')
-        );
-    }
-
-    public function testLocateResourceReturnsTheDirOneForResources()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->once())
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/FooBundle', null, null, 'FooBundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle/foo.txt',
-            $kernel->locateResource('@FooBundle/Resources/foo.txt', __DIR__.'/Fixtures/Resources')
-        );
-    }
-
-    public function testLocateResourceOnDirectories()
-    {
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/FooBundle', null, null, 'FooBundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle/',
-            $kernel->locateResource('@FooBundle/Resources/', __DIR__.'/Fixtures/Resources')
-        );
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Resources/FooBundle',
-            $kernel->locateResource('@FooBundle/Resources', __DIR__.'/Fixtures/Resources')
-        );
-
-        $kernel = $this->getKernel(['getBundle']);
-        $kernel
-            ->expects($this->exactly(2))
-            ->method('getBundle')
-            ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle', null, null, 'Bundle1Bundle'))
-        ;
-
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/Resources/',
-            $kernel->locateResource('@Bundle1Bundle/Resources/')
-        );
-        $this->assertEquals(
-            __DIR__.'/Fixtures/Bundle1Bundle/Resources',
-            $kernel->locateResource('@Bundle1Bundle/Resources')
-        );
-    }
-
-    public function testInitializeBundleThrowsExceptionWhenRegisteringTwoBundlesWithTheSameName()
-    {
-        $this->expectException('LogicException');
-        $this->expectExceptionMessage('Trying to register two bundles with the same name "DuplicateName"');
-        $fooBundle = $this->getBundle(__DIR__.'/Fixtures/FooBundle', null, 'FooBundle', 'DuplicateName');
-        $barBundle = $this->getBundle(__DIR__.'/Fixtures/BarBundle', null, 'BarBundle', 'DuplicateName');
-
-        $kernel = $this->getKernel([], [$fooBundle, $barBundle]);
-        $kernel->boot();
-    }
-
-    public function testTerminateReturnsSilentlyIfKernelIsNotBooted()
-    {
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->never())
-            ->method('getHttpKernel');
-
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testTerminateDelegatesTerminationOnlyForTerminableInterface()
-    {
-        // does not implement TerminableInterface
-        $httpKernel = new TestKernel();
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->once())
-            ->method('getHttpKernel')
-            ->willReturn($httpKernel);
-
-        $kernel->boot();
-        $kernel->terminate(Request::create('/'), new Response());
-
-        $this->assertFalse($httpKernel->terminateCalled, 'terminate() is never called if the kernel class does not implement TerminableInterface');
-
-        // implements TerminableInterface
-        $httpKernelMock = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernel')
-            ->disableOriginalConstructor()
-            ->setMethods(['terminate'])
-            ->getMock();
-
-        $httpKernelMock
-            ->expects($this->once())
-            ->method('terminate');
-
-        $kernel = $this->getKernel(['getHttpKernel']);
-        $kernel->expects($this->exactly(2))
-            ->method('getHttpKernel')
-            ->willReturn($httpKernelMock);
-
-        $kernel->boot();
-        $kernel->terminate(Request::create('/'), new Response());
-    }
-
-    public function testKernelWithoutBundles()
-    {
-        $kernel = new KernelWithoutBundles('test', true);
-        $kernel->boot();
-
-        $this->assertTrue($kernel->getContainer()->getParameter('test_executed'));
-    }
-
-    public function testProjectDirExtension()
-    {
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $this->assertSame(__DIR__.'/Fixtures', $kernel->getProjectDir());
-        $this->assertSame(__DIR__.\DIRECTORY_SEPARATOR.'Fixtures', $kernel->getContainer()->getParameter('kernel.project_dir'));
-    }
-
-    public function testKernelReset()
-    {
-        (new Filesystem())->remove(__DIR__.'/Fixtures/var/cache');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $containerClass = \get_class($kernel->getContainer());
-        $containerFile = (new \ReflectionClass($kernel->getContainer()))->getFileName();
-        unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
-
-        $kernel = new CustomProjectDirKernel();
-        $kernel->boot();
-
-        $this->assertInstanceOf($containerClass, $kernel->getContainer());
-        $this->assertFileExists($containerFile);
-        unlink(__DIR__.'/Fixtures/var/cache/custom/TestsSymfony_Component_HttpKernel_Tests_CustomProjectDirKernelCustomDebugContainer.php.meta');
-
-        $kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass')->setPublic(true); });
-        $kernel->boot();
-
-        $this->assertNotInstanceOf($containerClass, $kernel->getContainer());
-        $this->assertFileExists($containerFile);
-        $this->assertFileExists(\dirname($containerFile).'.legacy');
-    }
-
-    public function testKernelPass()
-    {
-        $kernel = new PassKernel();
-        $kernel->boot();
-
-        $this->assertTrue($kernel->getContainer()->getParameter('test.processed'));
-    }
-
-    public function testServicesResetter()
-    {
-        $httpKernelMock = $this->getMockBuilder(HttpKernelInterface::class)
-            ->disableOriginalConstructor()
-            ->getMock();
-        $httpKernelMock
-            ->expects($this->exactly(2))
-            ->method('handle');
-
-        $kernel = new CustomProjectDirKernel(function ($container) {
-            $container->addCompilerPass(new ResettableServicePass());
-            $container->register('one', ResettableService::class)
-                ->setPublic(true)
-                ->addTag('kernel.reset', ['method' => 'reset']);
-            $container->register('services_resetter', ServicesResetter::class)->setPublic(true);
-        }, $httpKernelMock, 'resetting');
-
-        ResettableService::$counter = 0;
-
-        $request = new Request();
-
-        $kernel->handle($request);
-        $kernel->getContainer()->get('one');
-
-        $this->assertEquals(0, ResettableService::$counter);
-        $this->assertFalse($kernel->getContainer()->initialized('services_resetter'));
-
-        $kernel->handle($request);
-
-        $this->assertEquals(1, ResettableService::$counter);
-    }
-
-    /**
-     * @group time-sensitive
-     */
-    public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel()
-    {
-        $kernel = $this->getKernel(['initializeBundles'], [], true);
-        $kernel->boot();
-        $preReBoot = $kernel->getStartTime();
-
-        sleep(3600); //Intentionally large value to detect if ClockMock ever breaks
-        $kernel->reboot(null);
-
-        $this->assertGreaterThan($preReBoot, $kernel->getStartTime());
-    }
-
-    /**
-     * Returns a mock for the BundleInterface.
-     *
-     * @return BundleInterface
-     */
-    protected function getBundle($dir = null, $parent = null, $className = null, $bundleName = null)
-    {
-        $bundle = $this
-            ->getMockBuilder('Symfony\Component\HttpKernel\Bundle\BundleInterface')
-            ->setMethods(['getPath', 'getParent', 'getName'])
-            ->disableOriginalConstructor()
-        ;
-
-        if ($className) {
-            $bundle->setMockClassName($className);
-        }
-
-        $bundle = $bundle->getMockForAbstractClass();
-
-        $bundle
-            ->expects($this->any())
-            ->method('getName')
-            ->willReturn(null === $bundleName ? \get_class($bundle) : $bundleName)
-        ;
-
-        $bundle
-            ->expects($this->any())
-            ->method('getPath')
-            ->willReturn($dir)
-        ;
-
-        $bundle
-            ->expects($this->any())
-            ->method('getParent')
-            ->willReturn($parent)
-        ;
-
-        return $bundle;
-    }
-
-    /**
-     * Returns a mock for the abstract kernel.
-     *
-     * @param array $methods Additional methods to mock (besides the abstract ones)
-     * @param array $bundles Bundles to register
-     *
-     * @return Kernel
-     */
-    protected function getKernel(array $methods = [], array $bundles = [], bool $debug = false): Kernel
-    {
-        $methods[] = 'registerBundles';
-
-        $kernel = $this
-            ->getMockBuilder(KernelForTest::class)
-            ->setMethods($methods)
-            ->setConstructorArgs(['test', $debug])
-            ->getMock()
-        ;
-        $kernel->expects($this->any())
-            ->method('registerBundles')
-            ->willReturn($bundles)
-        ;
-
-        return $kernel;
-    }
-}
-
-class TestKernel implements HttpKernelInterface
-{
-    public $terminateCalled = false;
-
-    public function terminate()
-    {
-        $this->terminateCalled = true;
-    }
-
-    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
-    {
-    }
-
-    public function getProjectDir(): string
-    {
-        return __DIR__.'/Fixtures';
-    }
-}
-
-class CustomProjectDirKernel extends Kernel
-{
-    private $baseDir;
-    private $buildContainer;
-    private $httpKernel;
-
-    public function __construct(\Closure $buildContainer = null, HttpKernelInterface $httpKernel = null, $env = 'custom')
-    {
-        parent::__construct($env, true);
-
-        $this->buildContainer = $buildContainer;
-        $this->httpKernel = $httpKernel;
-    }
-
-    public function registerBundles()
-    {
-        return [];
-    }
-
-    public function registerContainerConfiguration(LoaderInterface $loader)
-    {
-    }
-
-    public function getProjectDir()
-    {
-        return __DIR__.'/Fixtures';
-    }
-
-    protected function build(ContainerBuilder $container)
-    {
-        if ($build = $this->buildContainer) {
-            $build($container);
-        }
-    }
-
-    protected function getHttpKernel()
-    {
-        return $this->httpKernel;
-    }
-}
-
-class PassKernel extends CustomProjectDirKernel implements CompilerPassInterface
-{
-    public function __construct()
-    {
-        parent::__construct();
-        Kernel::__construct('pass', true);
-    }
-
-    public function process(ContainerBuilder $container)
-    {
-        $container->setParameter('test.processed', true);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php b/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
deleted file mode 100644
index 79b79cc6..00000000
--- a/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Log;
-
-use PHPUnit\Framework\TestCase;
-use Psr\Log\LoggerInterface;
-use Psr\Log\LogLevel;
-use Symfony\Component\HttpKernel\Log\Logger;
-
-/**
- * @author Kévin Dunglas <dunglas@gmail.com>
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class LoggerTest extends TestCase
-{
-    /**
-     * @var LoggerInterface
-     */
-    private $logger;
-
-    /**
-     * @var string
-     */
-    private $tmpFile;
-
-    protected function setUp(): void
-    {
-        $this->tmpFile = tempnam(sys_get_temp_dir(), 'log');
-        $this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile);
-    }
-
-    protected function tearDown(): void
-    {
-        if (!@unlink($this->tmpFile)) {
-            file_put_contents($this->tmpFile, '');
-        }
-    }
-
-    public static function assertLogsMatch(array $expected, array $given)
-    {
-        foreach ($given as $k => $line) {
-            self::assertThat(1 === preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), self::isTrue(), "\"$line\" do not match expected pattern \"$expected[$k]\"");
-        }
-    }
-
-    /**
-     * Return the log messages in order.
-     *
-     * @return string[]
-     */
-    public function getLogs()
-    {
-        return file($this->tmpFile, FILE_IGNORE_NEW_LINES);
-    }
-
-    public function testImplements()
-    {
-        $this->assertInstanceOf(LoggerInterface::class, $this->logger);
-    }
-
-    /**
-     * @dataProvider provideLevelsAndMessages
-     */
-    public function testLogsAtAllLevels($level, $message)
-    {
-        $this->logger->{$level}($message, ['user' => 'Bob']);
-        $this->logger->log($level, $message, ['user' => 'Bob']);
-
-        $expected = [
-            "[$level] message of level $level with context: Bob",
-            "[$level] message of level $level with context: Bob",
-        ];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function provideLevelsAndMessages()
-    {
-        return [
-            LogLevel::EMERGENCY => [LogLevel::EMERGENCY, 'message of level emergency with context: {user}'],
-            LogLevel::ALERT => [LogLevel::ALERT, 'message of level alert with context: {user}'],
-            LogLevel::CRITICAL => [LogLevel::CRITICAL, 'message of level critical with context: {user}'],
-            LogLevel::ERROR => [LogLevel::ERROR, 'message of level error with context: {user}'],
-            LogLevel::WARNING => [LogLevel::WARNING, 'message of level warning with context: {user}'],
-            LogLevel::NOTICE => [LogLevel::NOTICE, 'message of level notice with context: {user}'],
-            LogLevel::INFO => [LogLevel::INFO, 'message of level info with context: {user}'],
-            LogLevel::DEBUG => [LogLevel::DEBUG, 'message of level debug with context: {user}'],
-        ];
-    }
-
-    public function testLogLevelDisabled()
-    {
-        $this->logger = new Logger(LogLevel::INFO, $this->tmpFile);
-
-        $this->logger->debug('test', ['user' => 'Bob']);
-        $this->logger->log(LogLevel::DEBUG, 'test', ['user' => 'Bob']);
-
-        // Will always be true, but asserts than an exception isn't thrown
-        $this->assertSame([], $this->getLogs());
-    }
-
-    public function testThrowsOnInvalidLevel()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        $this->logger->log('invalid level', 'Foo');
-    }
-
-    public function testThrowsOnInvalidMinLevel()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        new Logger('invalid');
-    }
-
-    public function testInvalidOutput()
-    {
-        $this->expectException('Psr\Log\InvalidArgumentException');
-        new Logger(LogLevel::DEBUG, '/');
-    }
-
-    public function testContextReplacement()
-    {
-        $logger = $this->logger;
-        $logger->info('{Message {nothing} {user} {foo.bar} a}', ['user' => 'Bob', 'foo.bar' => 'Bar']);
-
-        $expected = ['[info] {Message {nothing} Bob Bar a}'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testObjectCastToString()
-    {
-        if (method_exists($this, 'createPartialMock')) {
-            $dummy = $this->createPartialMock(DummyTest::class, ['__toString']);
-        } else {
-            $dummy = $this->createPartialMock(DummyTest::class, ['__toString']);
-        }
-        $dummy->expects($this->atLeastOnce())
-            ->method('__toString')
-            ->willReturn('DUMMY');
-
-        $this->logger->warning($dummy);
-
-        $expected = ['[warning] DUMMY'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testContextCanContainAnything()
-    {
-        $context = [
-            'bool' => true,
-            'null' => null,
-            'string' => 'Foo',
-            'int' => 0,
-            'float' => 0.5,
-            'nested' => ['with object' => new DummyTest()],
-            'object' => new \DateTime(),
-            'resource' => fopen('php://memory', 'r'),
-        ];
-
-        $this->logger->warning('Crazy context data', $context);
-
-        $expected = ['[warning] Crazy context data'];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testContextExceptionKeyCanBeExceptionOrOtherValues()
-    {
-        $logger = $this->logger;
-        $logger->warning('Random message', ['exception' => 'oops']);
-        $logger->critical('Uncaught Exception!', ['exception' => new \LogicException('Fail')]);
-
-        $expected = [
-            '[warning] Random message',
-            '[critical] Uncaught Exception!',
-        ];
-        $this->assertLogsMatch($expected, $this->getLogs());
-    }
-
-    public function testFormatter()
-    {
-        $this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile, function ($level, $message, $context) {
-            return json_encode(['level' => $level, 'message' => $message, 'context' => $context]).\PHP_EOL;
-        });
-
-        $this->logger->error('An error', ['foo' => 'bar']);
-        $this->logger->warning('A warning', ['baz' => 'bar']);
-        $this->assertSame([
-            '{"level":"error","message":"An error","context":{"foo":"bar"}}',
-            '{"level":"warning","message":"A warning","context":{"baz":"bar"}}',
-        ], $this->getLogs());
-    }
-}
-
-class DummyTest
-{
-    public function __toString()
-    {
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Logger.php b/vendor/symfony/http-kernel/Tests/Logger.php
deleted file mode 100644
index 8453cfbd..00000000
--- a/vendor/symfony/http-kernel/Tests/Logger.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use Psr\Log\LoggerInterface;
-
-class Logger implements LoggerInterface
-{
-    protected $logs;
-
-    public function __construct()
-    {
-        $this->clear();
-    }
-
-    public function getLogs($level = false): array
-    {
-        return false === $level ? $this->logs : $this->logs[$level];
-    }
-
-    public function clear()
-    {
-        $this->logs = [
-            'emergency' => [],
-            'alert' => [],
-            'critical' => [],
-            'error' => [],
-            'warning' => [],
-            'notice' => [],
-            'info' => [],
-            'debug' => [],
-        ];
-    }
-
-    public function log($level, $message, array $context = [])
-    {
-        $this->logs[$level][] = $message;
-    }
-
-    public function emergency($message, array $context = [])
-    {
-        $this->log('emergency', $message, $context);
-    }
-
-    public function alert($message, array $context = [])
-    {
-        $this->log('alert', $message, $context);
-    }
-
-    public function critical($message, array $context = [])
-    {
-        $this->log('critical', $message, $context);
-    }
-
-    public function error($message, array $context = [])
-    {
-        $this->log('error', $message, $context);
-    }
-
-    public function warning($message, array $context = [])
-    {
-        $this->log('warning', $message, $context);
-    }
-
-    public function notice($message, array $context = [])
-    {
-        $this->log('notice', $message, $context);
-    }
-
-    public function info($message, array $context = [])
-    {
-        $this->log('info', $message, $context);
-    }
-
-    public function debug($message, array $context = [])
-    {
-        $this->log('debug', $message, $context);
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php b/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
deleted file mode 100644
index f088fe04..00000000
--- a/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
+++ /dev/null
@@ -1,350 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Profiler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\Profiler\FileProfilerStorage;
-use Symfony\Component\HttpKernel\Profiler\Profile;
-
-class FileProfilerStorageTest extends TestCase
-{
-    private $tmpDir;
-    private $storage;
-
-    protected function setUp(): void
-    {
-        $this->tmpDir = sys_get_temp_dir().'/sf_profiler_file_storage';
-        if (is_dir($this->tmpDir)) {
-            self::cleanDir();
-        }
-        $this->storage = new FileProfilerStorage('file:'.$this->tmpDir);
-        $this->storage->purge();
-    }
-
-    protected function tearDown(): void
-    {
-        self::cleanDir();
-    }
-
-    public function testStore()
-    {
-        for ($i = 0; $i < 10; ++$i) {
-            $profile = new Profile('token_'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://foo.bar');
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-        $this->assertCount(10, $this->storage->find('127.0.0.1', 'http://foo.bar', 20, 'GET'), '->write() stores data in the storage');
-    }
-
-    public function testChildren()
-    {
-        $parentProfile = new Profile('token_parent');
-        $parentProfile->setIp('127.0.0.1');
-        $parentProfile->setUrl('http://foo.bar/parent');
-
-        $childProfile = new Profile('token_child');
-        $childProfile->setIp('127.0.0.1');
-        $childProfile->setUrl('http://foo.bar/child');
-
-        $parentProfile->addChild($childProfile);
-
-        $this->storage->write($parentProfile);
-        $this->storage->write($childProfile);
-
-        // Load them from storage
-        $parentProfile = $this->storage->read('token_parent');
-        $childProfile = $this->storage->read('token_child');
-
-        // Check child has link to parent
-        $this->assertNotNull($childProfile->getParent());
-        $this->assertEquals($parentProfile->getToken(), $childProfile->getParentToken());
-
-        // Check parent has child
-        $children = $parentProfile->getChildren();
-        $this->assertCount(1, $children);
-        $this->assertEquals($childProfile->getToken(), $children[0]->getToken());
-    }
-
-    public function testStoreSpecialCharsInUrl()
-    {
-        // The storage accepts special characters in URLs (Even though URLs are not
-        // supposed to contain them)
-        $profile = new Profile('simple_quote');
-        $profile->setUrl('http://foo.bar/\'');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('simple_quote'), '->write() accepts single quotes in URL');
-
-        $profile = new Profile('double_quote');
-        $profile->setUrl('http://foo.bar/"');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('double_quote'), '->write() accepts double quotes in URL');
-
-        $profile = new Profile('backslash');
-        $profile->setUrl('http://foo.bar/\\');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('backslash'), '->write() accepts backslash in URL');
-
-        $profile = new Profile('comma');
-        $profile->setUrl('http://foo.bar/,');
-        $this->storage->write($profile);
-        $this->assertNotFalse($this->storage->read('comma'), '->write() accepts comma in URL');
-    }
-
-    public function testStoreDuplicateToken()
-    {
-        $profile = new Profile('token');
-        $profile->setUrl('http://example.com/');
-
-        $this->assertTrue($this->storage->write($profile), '->write() returns true when the token is unique');
-
-        $profile->setUrl('http://example.net/');
-
-        $this->assertTrue($this->storage->write($profile), '->write() returns true when the token is already present in the storage');
-        $this->assertEquals('http://example.net/', $this->storage->read('token')->getUrl(), '->write() overwrites the current profile data');
-
-        $this->assertCount(1, $this->storage->find('', '', 1000, ''), '->find() does not return the same profile twice');
-    }
-
-    public function testRetrieveByIp()
-    {
-        $profile = new Profile('token');
-        $profile->setIp('127.0.0.1');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertCount(1, $this->storage->find('127.0.0.1', '', 10, 'GET'), '->find() retrieve a record by IP');
-        $this->assertCount(0, $this->storage->find('127.0.%.1', '', 10, 'GET'), '->find() does not interpret a "%" as a wildcard in the IP');
-        $this->assertCount(0, $this->storage->find('127.0._.1', '', 10, 'GET'), '->find() does not interpret a "_" as a wildcard in the IP');
-    }
-
-    public function testRetrieveByStatusCode()
-    {
-        $profile200 = new Profile('statuscode200');
-        $profile200->setStatusCode(200);
-        $this->storage->write($profile200);
-
-        $profile404 = new Profile('statuscode404');
-        $profile404->setStatusCode(404);
-        $this->storage->write($profile404);
-
-        $this->assertCount(1, $this->storage->find(null, null, 10, null, null, null, '200'), '->find() retrieve a record by Status code 200');
-        $this->assertCount(1, $this->storage->find(null, null, 10, null, null, null, '404'), '->find() retrieve a record by Status code 404');
-    }
-
-    public function testRetrieveByUrl()
-    {
-        $profile = new Profile('simple_quote');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/\'');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('double_quote');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/"');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('backslash');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo\\bar/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('percent');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/%');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('underscore');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/_');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $profile = new Profile('semicolon');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://foo.bar/;');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/\'', 10, 'GET'), '->find() accepts single quotes in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/"', 10, 'GET'), '->find() accepts double quotes in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo\\bar/', 10, 'GET'), '->find() accepts backslash in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/;', 10, 'GET'), '->find() accepts semicolon in URLs');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/%', 10, 'GET'), '->find() does not interpret a "%" as a wildcard in the URL');
-        $this->assertCount(1, $this->storage->find('127.0.0.1', 'http://foo.bar/_', 10, 'GET'), '->find() does not interpret a "_" as a wildcard in the URL');
-    }
-
-    public function testStoreTime()
-    {
-        $dt = new \DateTime('now');
-        $start = $dt->getTimestamp();
-
-        for ($i = 0; $i < 3; ++$i) {
-            $dt->modify('+1 minute');
-            $profile = new Profile('time_'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://foo.bar');
-            $profile->setTime($dt->getTimestamp());
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-
-        $records = $this->storage->find('', '', 3, 'GET', $start, time() + 3 * 60);
-        $this->assertCount(3, $records, '->find() returns all previously added records');
-        $this->assertEquals($records[0]['token'], 'time_2', '->find() returns records ordered by time in descendant order');
-        $this->assertEquals($records[1]['token'], 'time_1', '->find() returns records ordered by time in descendant order');
-        $this->assertEquals($records[2]['token'], 'time_0', '->find() returns records ordered by time in descendant order');
-
-        $records = $this->storage->find('', '', 3, 'GET', $start, time() + 2 * 60);
-        $this->assertCount(2, $records, '->find() should return only first two of the previously added records');
-    }
-
-    public function testRetrieveByEmptyUrlAndIp()
-    {
-        for ($i = 0; $i < 5; ++$i) {
-            $profile = new Profile('token_'.$i);
-            $profile->setMethod('GET');
-            $this->storage->write($profile);
-        }
-        $this->assertCount(5, $this->storage->find('', '', 10, 'GET'), '->find() returns all previously added records');
-        $this->storage->purge();
-    }
-
-    public function testRetrieveByMethodAndLimit()
-    {
-        foreach (['POST', 'GET'] as $method) {
-            for ($i = 0; $i < 5; ++$i) {
-                $profile = new Profile('token_'.$i.$method);
-                $profile->setMethod($method);
-                $this->storage->write($profile);
-            }
-        }
-
-        $this->assertCount(5, $this->storage->find('', '', 5, 'POST'));
-
-        $this->storage->purge();
-    }
-
-    public function testPurge()
-    {
-        $profile = new Profile('token1');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://example.com/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertNotFalse($this->storage->read('token1'));
-        $this->assertCount(1, $this->storage->find('127.0.0.1', '', 10, 'GET'));
-
-        $profile = new Profile('token2');
-        $profile->setIp('127.0.0.1');
-        $profile->setUrl('http://example.net/');
-        $profile->setMethod('GET');
-        $this->storage->write($profile);
-
-        $this->assertNotFalse($this->storage->read('token2'));
-        $this->assertCount(2, $this->storage->find('127.0.0.1', '', 10, 'GET'));
-
-        $this->storage->purge();
-
-        $this->assertEmpty($this->storage->read('token'), '->purge() removes all data stored by profiler');
-        $this->assertCount(0, $this->storage->find('127.0.0.1', '', 10, 'GET'), '->purge() removes all items from index');
-    }
-
-    public function testDuplicates()
-    {
-        for ($i = 1; $i <= 5; ++$i) {
-            $profile = new Profile('foo'.$i);
-            $profile->setIp('127.0.0.1');
-            $profile->setUrl('http://example.net/');
-            $profile->setMethod('GET');
-
-            ///three duplicates
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-        }
-        $this->assertCount(3, $this->storage->find('127.0.0.1', 'http://example.net/', 3, 'GET'), '->find() method returns incorrect number of entries');
-    }
-
-    public function testStatusCode()
-    {
-        $profile = new Profile('token1');
-        $profile->setStatusCode(200);
-        $this->storage->write($profile);
-
-        $profile = new Profile('token2');
-        $profile->setStatusCode(404);
-        $this->storage->write($profile);
-
-        $tokens = $this->storage->find('', '', 10, '');
-        $this->assertCount(2, $tokens);
-        $this->assertContains($tokens[0]['status_code'], [200, 404]);
-        $this->assertContains($tokens[1]['status_code'], [200, 404]);
-    }
-
-    public function testMultiRowIndexFile()
-    {
-        $iteration = 3;
-        for ($i = 0; $i < $iteration; ++$i) {
-            $profile = new Profile('token'.$i);
-            $profile->setIp('127.0.0.'.$i);
-            $profile->setUrl('http://foo.bar/'.$i);
-
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-            $this->storage->write($profile);
-        }
-
-        $handle = fopen($this->tmpDir.'/index.csv', 'r');
-        for ($i = 0; $i < $iteration; ++$i) {
-            $row = fgetcsv($handle);
-            $this->assertEquals('token'.$i, $row[0]);
-            $this->assertEquals('127.0.0.'.$i, $row[1]);
-            $this->assertEquals('http://foo.bar/'.$i, $row[3]);
-        }
-        $this->assertFalse(fgetcsv($handle));
-    }
-
-    public function testReadLineFromFile()
-    {
-        $r = new \ReflectionMethod($this->storage, 'readLineFromFile');
-
-        $r->setAccessible(true);
-
-        $h = tmpfile();
-
-        fwrite($h, "line1\n\n\nline2\n");
-        fseek($h, 0, SEEK_END);
-
-        $this->assertEquals('line2', $r->invoke($this->storage, $h));
-        $this->assertEquals('line1', $r->invoke($this->storage, $h));
-    }
-
-    protected function cleanDir()
-    {
-        $flags = \FilesystemIterator::SKIP_DOTS;
-        $iterator = new \RecursiveDirectoryIterator($this->tmpDir, $flags);
-        $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
-
-        foreach ($iterator as $file) {
-            if (is_file($file)) {
-                unlink($file);
-            }
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php b/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
deleted file mode 100644
index 2128ea9b..00000000
--- a/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests\Profiler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
-use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
-use Symfony\Component\HttpKernel\Profiler\FileProfilerStorage;
-use Symfony\Component\HttpKernel\Profiler\Profiler;
-
-class ProfilerTest extends TestCase
-{
-    private $tmp;
-    private $storage;
-
-    public function testCollect()
-    {
-        $request = new Request();
-        $request->query->set('foo', 'bar');
-        $response = new Response('', 204);
-        $collector = new RequestDataCollector();
-
-        $profiler = new Profiler($this->storage);
-        $profiler->add($collector);
-        $profile = $profiler->collect($request, $response);
-        $profiler->saveProfile($profile);
-
-        $this->assertSame(204, $profile->getStatusCode());
-        $this->assertSame('GET', $profile->getMethod());
-        $this->assertSame('bar', $profile->getCollector('request')->getRequestQuery()->all()['foo']->getValue());
-    }
-
-    public function testReset()
-    {
-        $collector = $this->getMockBuilder(DataCollectorInterface::class)
-            ->setMethods(['collect', 'getName', 'reset'])
-            ->getMock();
-        $collector->expects($this->any())->method('getName')->willReturn('mock');
-        $collector->expects($this->once())->method('reset');
-
-        $profiler = new Profiler($this->storage);
-        $profiler->add($collector);
-        $profiler->reset();
-    }
-
-    public function testFindWorksWithDates()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, '7th April 2014', '9th April 2014'));
-    }
-
-    public function testFindWorksWithTimestamps()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, '1396828800', '1397001600'));
-    }
-
-    public function testFindWorksWithInvalidDates()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, 'some string', ''));
-    }
-
-    public function testFindWorksWithStatusCode()
-    {
-        $profiler = new Profiler($this->storage);
-
-        $this->assertCount(0, $profiler->find(null, null, null, null, null, null, '204'));
-    }
-
-    protected function setUp(): void
-    {
-        $this->tmp = tempnam(sys_get_temp_dir(), 'sf_profiler');
-        if (file_exists($this->tmp)) {
-            @unlink($this->tmp);
-        }
-
-        $this->storage = new FileProfilerStorage('file:'.$this->tmp);
-        $this->storage->purge();
-    }
-
-    protected function tearDown(): void
-    {
-        if (null !== $this->storage) {
-            $this->storage->purge();
-            $this->storage = null;
-
-            @unlink($this->tmp);
-        }
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/TestHttpKernel.php b/vendor/symfony/http-kernel/Tests/TestHttpKernel.php
deleted file mode 100644
index 27ba2d6f..00000000
--- a/vendor/symfony/http-kernel/Tests/TestHttpKernel.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
-use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
-use Symfony\Component\HttpKernel\HttpKernel;
-
-class TestHttpKernel extends HttpKernel implements ControllerResolverInterface, ArgumentResolverInterface
-{
-    public function __construct()
-    {
-        parent::__construct(new EventDispatcher(), $this, null, $this);
-    }
-
-    public function getController(Request $request)
-    {
-        return [$this, 'callController'];
-    }
-
-    public function getArguments(Request $request, $controller)
-    {
-        return [$request];
-    }
-
-    public function callController(Request $request)
-    {
-        return new Response('Request: '.$request->getRequestUri());
-    }
-}
diff --git a/vendor/symfony/http-kernel/Tests/UriSignerTest.php b/vendor/symfony/http-kernel/Tests/UriSignerTest.php
deleted file mode 100644
index b2eb5920..00000000
--- a/vendor/symfony/http-kernel/Tests/UriSignerTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpKernel\UriSigner;
-
-class UriSignerTest extends TestCase
-{
-    public function testSign()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertStringContainsString('?_hash=', $signer->sign('http://example.com/foo'));
-        $this->assertStringContainsString('?_hash=', $signer->sign('http://example.com/foo?foo=bar'));
-        $this->assertStringContainsString('&foo=', $signer->sign('http://example.com/foo?foo=bar'));
-    }
-
-    public function testCheck()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertFalse($signer->check('http://example.com/foo?_hash=foo'));
-        $this->assertFalse($signer->check('http://example.com/foo?foo=bar&_hash=foo'));
-        $this->assertFalse($signer->check('http://example.com/foo?foo=bar&_hash=foo&bar=foo'));
-
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo')));
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar')));
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&0=integer')));
-
-        $this->assertSame($signer->sign('http://example.com/foo?foo=bar&bar=foo'), $signer->sign('http://example.com/foo?bar=foo&foo=bar'));
-    }
-
-    public function testCheckWithDifferentArgSeparator()
-    {
-        $this->iniSet('arg_separator.output', '&amp;');
-        $signer = new UriSigner('foobar');
-
-        $this->assertSame(
-            'http://example.com/foo?_hash=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D&baz=bay&foo=bar',
-            $signer->sign('http://example.com/foo?foo=bar&baz=bay')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay')));
-    }
-
-    public function testCheckWithDifferentParameter()
-    {
-        $signer = new UriSigner('foobar', 'qux');
-
-        $this->assertSame(
-            'http://example.com/foo?baz=bay&foo=bar&qux=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D',
-            $signer->sign('http://example.com/foo?foo=bar&baz=bay')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay')));
-    }
-
-    public function testSignerWorksWithFragments()
-    {
-        $signer = new UriSigner('foobar');
-
-        $this->assertSame(
-            'http://example.com/foo?_hash=EhpAUyEobiM3QTrKxoLOtQq5IsWyWedoXDPqIjzNj5o%3D&bar=foo&foo=bar#foobar',
-            $signer->sign('http://example.com/foo?bar=foo&foo=bar#foobar')
-        );
-        $this->assertTrue($signer->check($signer->sign('http://example.com/foo?bar=foo&foo=bar#foobar')));
-    }
-}
diff --git a/vendor/symfony/http-kernel/UriSigner.php b/vendor/symfony/http-kernel/UriSigner.php
index 1dd56ffd..a11a05f8 100644
--- a/vendor/symfony/http-kernel/UriSigner.php
+++ b/vendor/symfony/http-kernel/UriSigner.php
@@ -79,17 +79,17 @@ class UriSigner
         $hash = $params[$this->parameter];
         unset($params[$this->parameter]);
 
-        return $this->computeHash($this->buildUrl($url, $params)) === $hash;
+        return hash_equals($this->computeHash($this->buildUrl($url, $params)), $hash);
     }
 
-    private function computeHash($uri)
+    private function computeHash(string $uri): string
     {
         return base64_encode(hash_hmac('sha256', $uri, $this->secret, true));
     }
 
-    private function buildUrl(array $url, array $params = [])
+    private function buildUrl(array $url, array $params = []): string
     {
-        ksort($params, SORT_STRING);
+        ksort($params, \SORT_STRING);
         $url['query'] = http_build_query($params, '', '&');
 
         $scheme = isset($url['scheme']) ? $url['scheme'].'://' : '';
diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json
index e07b453b..59dd77b6 100644
--- a/vendor/symfony/http-kernel/composer.json
+++ b/vendor/symfony/http-kernel/composer.json
@@ -16,32 +16,33 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
-        "symfony/event-dispatcher": "^4.3",
-        "symfony/http-foundation": "^4.1.1",
-        "symfony/debug": "~3.4|~4.0",
-        "symfony/polyfill-ctype": "~1.8",
+        "php": ">=7.1.3",
+        "symfony/error-handler": "^4.4",
+        "symfony/event-dispatcher": "^4.4",
+        "symfony/http-client-contracts": "^1.1|^2",
+        "symfony/http-foundation": "^4.4|^5.0",
+        "symfony/polyfill-ctype": "^1.8",
         "symfony/polyfill-php73": "^1.9",
+        "symfony/polyfill-php80": "^1.15",
         "psr/log": "~1.0"
     },
     "require-dev": {
-        "symfony/browser-kit": "^4.3",
-        "symfony/config": "~3.4|~4.0",
-        "symfony/console": "~3.4|~4.0",
-        "symfony/css-selector": "~3.4|~4.0",
-        "symfony/dependency-injection": "^4.3",
-        "symfony/dom-crawler": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/finder": "~3.4|~4.0",
-        "symfony/process": "~3.4|~4.0",
-        "symfony/routing": "~3.4|~4.0",
-        "symfony/stopwatch": "~3.4|~4.0",
-        "symfony/templating": "~3.4|~4.0",
-        "symfony/translation": "~4.2",
-        "symfony/translation-contracts": "^1.1",
-        "symfony/var-dumper": "^4.1.1",
+        "symfony/browser-kit": "^4.3|^5.0",
+        "symfony/config": "^3.4|^4.0|^5.0",
+        "symfony/console": "^3.4|^4.0",
+        "symfony/css-selector": "^3.4|^4.0|^5.0",
+        "symfony/dependency-injection": "^4.3|^5.0",
+        "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/finder": "^3.4|^4.0|^5.0",
+        "symfony/process": "^3.4|^4.0|^5.0",
+        "symfony/routing": "^3.4|^4.0|^5.0",
+        "symfony/stopwatch": "^3.4|^4.0|^5.0",
+        "symfony/templating": "^3.4|^4.0|^5.0",
+        "symfony/translation": "^4.2|^5.0",
+        "symfony/translation-contracts": "^1.1|^2",
         "psr/cache": "~1.0",
-        "twig/twig": "^1.34|^2.4"
+        "twig/twig": "^1.34|^2.4|^3.0"
     },
     "provide": {
         "psr/log-implementation": "1.0"
@@ -49,17 +50,16 @@
     "conflict": {
         "symfony/browser-kit": "<4.3",
         "symfony/config": "<3.4",
+        "symfony/console": ">=5",
         "symfony/dependency-injection": "<4.3",
         "symfony/translation": "<4.2",
-        "symfony/var-dumper": "<4.1.1",
         "twig/twig": "<1.34|<2.4,>=2"
     },
     "suggest": {
         "symfony/browser-kit": "",
         "symfony/config": "",
         "symfony/console": "",
-        "symfony/dependency-injection": "",
-        "symfony/var-dumper": ""
+        "symfony/dependency-injection": ""
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\HttpKernel\\": "" },
@@ -67,10 +67,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/http-kernel/phpunit.xml.dist b/vendor/symfony/http-kernel/phpunit.xml.dist
deleted file mode 100644
index 3fc07707..00000000
--- a/vendor/symfony/http-kernel/phpunit.xml.dist
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony HttpKernel Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-
-    <listeners>
-        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
-            <arguments>
-                <array>
-                    <element key="time-sensitive"><string>Symfony\Component\HttpFoundation</string></element>
-                </array>
-            </arguments>
-        </listener>
-    </listeners>
-</phpunit>
diff --git a/vendor/symfony/mime/.gitignore b/vendor/symfony/mime/.gitignore
deleted file mode 100644
index 5414c2c6..00000000
--- a/vendor/symfony/mime/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-phpunit.xml
-vendor/
diff --git a/vendor/symfony/mime/Address.php b/vendor/symfony/mime/Address.php
index be1ca760..9847712b 100644
--- a/vendor/symfony/mime/Address.php
+++ b/vendor/symfony/mime/Address.php
@@ -20,17 +20,25 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
-class Address
+final class Address
 {
+    /**
+     * A regex that matches a structure like 'Name <email@address.com>'.
+     * It matches anything between the first < and last > as email address.
+     * This allows to use a single string to construct an Address, which can be convenient to use in
+     * config, and allows to have more readable config.
+     * This does not try to cover all edge cases for address.
+     */
+    private const FROM_STRING_PATTERN = '~(?<displayName>[^<]*)<(?<addrSpec>.*)>[^>]*~';
+
     private static $validator;
     private static $encoder;
 
     private $address;
+    private $name;
 
-    public function __construct(string $address)
+    public function __construct(string $address, string $name = '')
     {
         if (!class_exists(EmailValidator::class)) {
             throw new LogicException(sprintf('The "%s" class cannot be used as it needs "%s"; try running "composer require egulias/email-validator".', __CLASS__, EmailValidator::class));
@@ -41,6 +49,7 @@ class Address
         }
 
         $this->address = trim($address);
+        $this->name = trim(str_replace(["\n", "\r"], '', $name));
 
         if (!self::$validator->isValid($this->address, new RFCValidation())) {
             throw new RfcComplianceException(sprintf('Email "%s" does not comply with addr-spec of RFC 2822.', $address));
@@ -52,6 +61,11 @@ class Address
         return $this->address;
     }
 
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
     public function getEncodedAddress(): string
     {
         if (null === self::$encoder) {
@@ -63,7 +77,7 @@ class Address
 
     public function toString(): string
     {
-        return $this->getEncodedAddress();
+        return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
     }
 
     /**
@@ -75,10 +89,10 @@ class Address
             return $address;
         }
         if (\is_string($address)) {
-            return new self($address);
+            return self::fromString($address);
         }
 
-        throw new InvalidArgumentException(sprintf('An address can be an instance of Address or a string ("%s") given).', \is_object($address) ? \get_class($address) : \gettype($address)));
+        throw new InvalidArgumentException(sprintf('An address can be an instance of Address or a string ("%s") given).', get_debug_type($address)));
     }
 
     /**
@@ -95,4 +109,17 @@ class Address
 
         return $addrs;
     }
+
+    public static function fromString(string $string): self
+    {
+        if (false === strpos($string, '<')) {
+            return new self($string, '');
+        }
+
+        if (!preg_match(self::FROM_STRING_PATTERN, $string, $matches)) {
+            throw new InvalidArgumentException(sprintf('Could not parse "%s" to a "%s" instance.', $string, static::class));
+        }
+
+        return new self($matches['addrSpec'], trim($matches['displayName'], ' \'"'));
+    }
 }
diff --git a/vendor/symfony/mime/BodyRendererInterface.php b/vendor/symfony/mime/BodyRendererInterface.php
index 8fcc4015..d6921726 100644
--- a/vendor/symfony/mime/BodyRendererInterface.php
+++ b/vendor/symfony/mime/BodyRendererInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface BodyRendererInterface
 {
diff --git a/vendor/symfony/mime/CHANGELOG.md b/vendor/symfony/mime/CHANGELOG.md
index 796cfdd1..6148360d 100644
--- a/vendor/symfony/mime/CHANGELOG.md
+++ b/vendor/symfony/mime/CHANGELOG.md
@@ -1,6 +1,14 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * [BC BREAK] Removed `NamedAddress` (`Address` now supports a name)
+ * Added PHPUnit constraints
+ * Added `AbstractPart::asDebugString()`
+ * Added `Address::fromString()`
+
 4.3.3
 -----
 
diff --git a/vendor/symfony/mime/CharacterStream.php b/vendor/symfony/mime/CharacterStream.php
index 9b80b2ef..9d0a9c66 100644
--- a/vendor/symfony/mime/CharacterStream.php
+++ b/vendor/symfony/mime/CharacterStream.php
@@ -16,8 +16,6 @@ namespace Symfony\Component\Mime;
  * @author Xavier De Cock <xdecock@gmail.com>
  *
  * @internal
- *
- * @experimental in 4.3
  */
 final class CharacterStream
 {
@@ -99,10 +97,7 @@ final class CharacterStream
             }
         }
         if (\is_resource($input)) {
-            $blocks = 512;
-            if (stream_get_meta_data($input)['seekable'] ?? false) {
-                rewind($input);
-            }
+            $blocks = 16372;
             while (false !== $read = fread($input, $blocks)) {
                 $this->write($read);
             }
@@ -116,7 +111,6 @@ final class CharacterStream
         if ($this->currentPos >= $this->charCount) {
             return null;
         }
-        $ret = null;
         $length = ($this->currentPos + $length > $this->charCount) ? $this->charCount - $this->currentPos : $length;
         if ($this->fixedWidth > 0) {
             $len = $length * $this->fixedWidth;
@@ -177,7 +171,7 @@ final class CharacterStream
         $this->dataSize = \strlen($this->data) - \strlen($ignored);
     }
 
-    private function getUtf8CharPositions(string $string, int $startOffset, &$ignoredChars): int
+    private function getUtf8CharPositions(string $string, int $startOffset, string &$ignoredChars): int
     {
         $strlen = \strlen($string);
         $charPos = \count($this->map['p']);
diff --git a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php b/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
index 78450b91..e24beb0d 100644
--- a/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
+++ b/vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php
@@ -19,8 +19,6 @@ use Symfony\Component\DependencyInjection\Reference;
  * Registers custom mime types guessers.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class AddMimeTypeGuesserPass implements CompilerPassInterface
 {
diff --git a/vendor/symfony/mime/Email.php b/vendor/symfony/mime/Email.php
index 1bcdc8a1..e5f9f11b 100644
--- a/vendor/symfony/mime/Email.php
+++ b/vendor/symfony/mime/Email.php
@@ -21,8 +21,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class Email extends Message
 {
@@ -103,7 +101,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -113,7 +111,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -123,7 +121,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getFrom(): array
     {
@@ -159,7 +157,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -169,7 +167,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -179,7 +177,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getTo(): array
     {
@@ -187,7 +185,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -207,7 +205,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getCc(): array
     {
@@ -215,7 +213,7 @@ class Email extends Message
     }
 
     /**
-     * @param Address|NamedAddress|string ...$addresses
+     * @param Address|string ...$addresses
      *
      * @return $this
      */
@@ -235,7 +233,7 @@ class Email extends Message
     }
 
     /**
-     * @return (Address|NamedAddress)[]
+     * @return Address[]
      */
     public function getBcc(): array
     {
@@ -401,6 +399,15 @@ class Email extends Message
         return $this->generateBody();
     }
 
+    public function ensureValidity()
+    {
+        if (null === $this->text && null === $this->html && !$this->attachments) {
+            throw new LogicException('A message must have a text or an HTML part or attachments.');
+        }
+
+        parent::ensureValidity();
+    }
+
     /**
      * Generates an AbstractPart based on the raw body of a message.
      *
@@ -423,10 +430,9 @@ class Email extends Message
      */
     private function generateBody(): AbstractPart
     {
+        $this->ensureValidity();
+
         [$htmlPart, $attachmentParts, $inlineParts] = $this->prepareParts();
-        if (null === $this->text && null === $this->html && !$attachmentParts) {
-            throw new LogicException('A message must have a text or an HTML part or attachments.');
-        }
 
         $part = null === $this->text ? null : new TextPart($this->text, $this->textCharset);
         if (null !== $htmlPart) {
@@ -458,14 +464,8 @@ class Email extends Message
         $htmlPart = null;
         $html = $this->html;
         if (null !== $this->html) {
-            if (\is_resource($html)) {
-                if (stream_get_meta_data($html)['seekable'] ?? false) {
-                    rewind($html);
-                }
-
-                $html = stream_get_contents($html);
-            }
             $htmlPart = new TextPart($html, $this->htmlCharset, 'html');
+            $html = $htmlPart->getBody();
             preg_match_all('(<img\s+[^>]*src\s*=\s*(?:([\'"])cid:([^"]+)\\1|cid:([^>\s]+)))i', $html, $names);
             $names = array_filter(array_unique(array_merge($names[2], $names[3])));
         }
@@ -517,29 +517,29 @@ class Email extends Message
     /**
      * @return $this
      */
-    private function setHeaderBody(string $type, string $name, $body)
+    private function setHeaderBody(string $type, string $name, $body): object
     {
         $this->getHeaders()->setHeaderBody($type, $name, $body);
 
         return $this;
     }
 
-    private function addListAddressHeaderBody($name, array $addresses)
+    private function addListAddressHeaderBody(string $name, array $addresses)
     {
-        if (!$to = $this->getHeaders()->get($name)) {
+        if (!$header = $this->getHeaders()->get($name)) {
             return $this->setListAddressHeaderBody($name, $addresses);
         }
-        $to->addAddresses(Address::createArray($addresses));
+        $header->addAddresses(Address::createArray($addresses));
 
         return $this;
     }
 
-    private function setListAddressHeaderBody($name, array $addresses)
+    private function setListAddressHeaderBody(string $name, array $addresses)
     {
         $addresses = Address::createArray($addresses);
         $headers = $this->getHeaders();
-        if ($to = $headers->get($name)) {
-            $to->setAddresses($addresses);
+        if ($header = $headers->get($name)) {
+            $header->setAddresses($addresses);
         } else {
             $headers->addMailboxListHeader($name, $addresses);
         }
@@ -553,28 +553,16 @@ class Email extends Message
     public function __serialize(): array
     {
         if (\is_resource($this->text)) {
-            if (stream_get_meta_data($this->text)['seekable'] ?? false) {
-                rewind($this->text);
-            }
-
-            $this->text = stream_get_contents($this->text);
+            $this->text = (new TextPart($this->text))->getBody();
         }
 
         if (\is_resource($this->html)) {
-            if (stream_get_meta_data($this->html)['seekable'] ?? false) {
-                rewind($this->html);
-            }
-
-            $this->html = stream_get_contents($this->html);
+            $this->html = (new TextPart($this->html))->getBody();
         }
 
         foreach ($this->attachments as $i => $attachment) {
             if (isset($attachment['body']) && \is_resource($attachment['body'])) {
-                if (stream_get_meta_data($attachment['body'])['seekable'] ?? false) {
-                    rewind($attachment['body']);
-                }
-
-                $this->attachments[$i]['body'] = stream_get_contents($attachment['body']);
+                $this->attachments[$i]['body'] = (new TextPart($attachment['body']))->getBody();
             }
         }
 
diff --git a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php b/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
index 5d6ea3c6..de477d88 100644
--- a/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/AddressEncoderInterface.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Exception\AddressEncoderException;
 
 /**
  * @author Christian Schmidt
- *
- * @experimental in 4.3
  */
 interface AddressEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php b/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
index e9c352e2..440868af 100644
--- a/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/Base64ContentEncoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Exception\RuntimeException;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class Base64ContentEncoder extends Base64Encoder implements ContentEncoderInterface
 {
@@ -34,11 +32,8 @@ final class Base64ContentEncoder extends Base64Encoder implements ContentEncoder
             throw new RuntimeException('Unable to set the base64 content encoder to the filter.');
         }
 
-        if (stream_get_meta_data($stream)['seekable'] ?? false) {
-            rewind($stream);
-        }
         while (!feof($stream)) {
-            yield fread($stream, 8192);
+            yield fread($stream, 16372);
         }
         stream_filter_remove($filter);
     }
diff --git a/vendor/symfony/mime/Encoder/Base64Encoder.php b/vendor/symfony/mime/Encoder/Base64Encoder.php
index 25dae670..71064785 100644
--- a/vendor/symfony/mime/Encoder/Base64Encoder.php
+++ b/vendor/symfony/mime/Encoder/Base64Encoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class Base64Encoder implements EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
index 8baee5b0..5c06f6d9 100644
--- a/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
+++ b/vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class Base64MimeHeaderEncoder extends Base64Encoder implements MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php b/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
index b44e1a4a..a45ad04c 100644
--- a/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/ContentEncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface ContentEncoderInterface extends EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php b/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
index 94b838ce..82831209 100644
--- a/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/EightBitContentEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class EightBitContentEncoder implements ContentEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/EncoderInterface.php b/vendor/symfony/mime/Encoder/EncoderInterface.php
index 3c2ef198..bbf6d488 100644
--- a/vendor/symfony/mime/Encoder/EncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/EncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface EncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php b/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
index 8936047c..69ab8872 100644
--- a/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
+++ b/vendor/symfony/mime/Encoder/IdnAddressEncoder.php
@@ -20,13 +20,9 @@ use Symfony\Component\Mime\Exception\AddressEncoderException;
  * SMTP servers.
  *
  * This encoder does not support email addresses with non-ASCII characters in
- * local-part (the substring before @). To send to such addresses, use
- * Utf8AddressEncoder together with SmtpUtf8Handler. Your outbound SMTP server must support
- * the SMTPUTF8 extension.
+ * local-part (the substring before @).
  *
  * @author Christian Schmidt
- *
- * @experimental in 4.3
  */
 final class IdnAddressEncoder implements AddressEncoderInterface
 {
@@ -47,7 +43,7 @@ final class IdnAddressEncoder implements AddressEncoderInterface
             }
 
             if (preg_match('/[^\x00-\x7F]/', $domain)) {
-                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46));
+                $address = sprintf('%s@%s', $local, idn_to_ascii($domain, 0, \INTL_IDNA_VARIANT_UTS46));
             }
         }
 
diff --git a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php b/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
index f5756650..fff2c782 100644
--- a/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
+++ b/vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/QpContentEncoder.php b/vendor/symfony/mime/Encoder/QpContentEncoder.php
index ef2de46f..4703cc2e 100644
--- a/vendor/symfony/mime/Encoder/QpContentEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpContentEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Lars Strojny
- *
- * @experimental in 4.3
  */
 final class QpContentEncoder implements ContentEncoderInterface
 {
@@ -25,10 +23,6 @@ final class QpContentEncoder implements ContentEncoderInterface
         }
 
         // we don't use PHP stream filters here as the content should be small enough
-        if (stream_get_meta_data($stream)['seekable'] ?? false) {
-            rewind($stream);
-        }
-
         yield $this->encodeString(stream_get_contents($stream), 'utf-8', 0, $maxLineLength);
     }
 
diff --git a/vendor/symfony/mime/Encoder/QpEncoder.php b/vendor/symfony/mime/Encoder/QpEncoder.php
index 4ffbaed7..4f249e06 100644
--- a/vendor/symfony/mime/Encoder/QpEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpEncoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\CharacterStream;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class QpEncoder implements EncoderInterface
 {
@@ -91,7 +89,7 @@ class QpEncoder implements EncoderInterface
 
     public function __construct()
     {
-        $id = \get_class($this);
+        $id = static::class;
         if (!isset(self::$safeMapShare[$id])) {
             $this->initSafeMap();
             self::$safeMapShare[$id] = $this->safeMap;
diff --git a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php b/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
index 04139595..d1d38375 100644
--- a/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
+++ b/vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class QpMimeHeaderEncoder extends QpEncoder implements MimeHeaderEncoderInterface
 {
diff --git a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php b/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
index 4743a721..aa3e062f 100644
--- a/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
+++ b/vendor/symfony/mime/Encoder/Rfc2231Encoder.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\CharacterStream;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class Rfc2231Encoder implements EncoderInterface
 {
diff --git a/vendor/symfony/mime/Exception/AddressEncoderException.php b/vendor/symfony/mime/Exception/AddressEncoderException.php
index 73ef7f32..51ee2e06 100644
--- a/vendor/symfony/mime/Exception/AddressEncoderException.php
+++ b/vendor/symfony/mime/Exception/AddressEncoderException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class AddressEncoderException extends RfcComplianceException
 {
diff --git a/vendor/symfony/mime/Exception/ExceptionInterface.php b/vendor/symfony/mime/Exception/ExceptionInterface.php
index 7dbcdc72..11933900 100644
--- a/vendor/symfony/mime/Exception/ExceptionInterface.php
+++ b/vendor/symfony/mime/Exception/ExceptionInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface ExceptionInterface extends \Throwable
 {
diff --git a/vendor/symfony/mime/Exception/InvalidArgumentException.php b/vendor/symfony/mime/Exception/InvalidArgumentException.php
index 59d04e23..e89ebae2 100644
--- a/vendor/symfony/mime/Exception/InvalidArgumentException.php
+++ b/vendor/symfony/mime/Exception/InvalidArgumentException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/LogicException.php b/vendor/symfony/mime/Exception/LogicException.php
index 07cb0440..0508ee73 100644
--- a/vendor/symfony/mime/Exception/LogicException.php
+++ b/vendor/symfony/mime/Exception/LogicException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class LogicException extends \LogicException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/RfcComplianceException.php b/vendor/symfony/mime/Exception/RfcComplianceException.php
index 5dc4cf5f..26e4a509 100644
--- a/vendor/symfony/mime/Exception/RfcComplianceException.php
+++ b/vendor/symfony/mime/Exception/RfcComplianceException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RfcComplianceException extends \InvalidArgumentException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/Exception/RuntimeException.php b/vendor/symfony/mime/Exception/RuntimeException.php
index 84b11fba..fb018b00 100644
--- a/vendor/symfony/mime/Exception/RuntimeException.php
+++ b/vendor/symfony/mime/Exception/RuntimeException.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime\Exception;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RuntimeException extends \RuntimeException implements ExceptionInterface
 {
diff --git a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php b/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
index a25ebe4d..fe1e0cde 100644
--- a/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
+++ b/vendor/symfony/mime/FileBinaryMimeTypeGuesser.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  * Guesses the MIME type with the binary "file" (only available on *nix).
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @experimental in 4.3
  */
 class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 {
@@ -33,7 +31,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
      *
      * @param string $cmd The command to run to get the MIME type of a file
      */
-    public function __construct(string $cmd = 'file -b --mime %s 2>/dev/null')
+    public function __construct(string $cmd = 'file -b --mime -- %s 2>/dev/null')
     {
         $this->cmd = $cmd;
     }
@@ -76,7 +74,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
         ob_start();
 
         // need to use --mime instead of -i. see #6641
-        passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
+        passthru(sprintf($this->cmd, escapeshellarg((0 === strpos($path, '-') ? './' : '').$path)), $return);
         if ($return > 0) {
             ob_end_clean();
 
@@ -85,7 +83,7 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
 
         $type = trim(ob_get_clean());
 
-        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\.]+)#i', $type, $match)) {
+        if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-\+\.]+)#i', $type, $match)) {
             // it's not a type, but an error message
             return null;
         }
diff --git a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php b/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
index 81c62ee2..c6c7559a 100644
--- a/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
+++ b/vendor/symfony/mime/FileinfoMimeTypeGuesser.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  * Guesses the MIME type using the PECL extension FileInfo.
  *
  * @author Bernhard Schussek <bschussek@gmail.com>
- *
- * @experimental in 4.3
  */
 class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
 {
@@ -56,10 +54,16 @@ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
             throw new LogicException(sprintf('The "%s" guesser is not supported.', __CLASS__));
         }
 
-        if (false === $finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
+        if (false === $finfo = new \finfo(\FILEINFO_MIME_TYPE, $this->magicFile)) {
             return null;
         }
+        $mimeType = $finfo->file($path);
+
+        if ($mimeType && 0 === (\strlen($mimeType) % 2)) {
+            $mimeStart = substr($mimeType, 0, \strlen($mimeType) >> 1);
+            $mimeType = $mimeStart.$mimeStart === $mimeType ? $mimeStart : $mimeType;
+        }
 
-        return $finfo->file($path);
+        return $mimeType;
     }
 }
diff --git a/vendor/symfony/mime/Header/AbstractHeader.php b/vendor/symfony/mime/Header/AbstractHeader.php
index 517ee8df..e93b87ae 100644
--- a/vendor/symfony/mime/Header/AbstractHeader.php
+++ b/vendor/symfony/mime/Header/AbstractHeader.php
@@ -17,8 +17,6 @@ use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder;
  * An abstract base MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 abstract class AbstractHeader implements HeaderInterface
 {
@@ -222,7 +220,7 @@ abstract class AbstractHeader implements HeaderInterface
      */
     protected function generateTokenLines(string $token): array
     {
-        return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE);
+        return preg_split('~(\r\n)~', $token, -1, \PREG_SPLIT_DELIM_CAPTURE);
     }
 
     /**
diff --git a/vendor/symfony/mime/Header/DateHeader.php b/vendor/symfony/mime/Header/DateHeader.php
index 1e1a9795..a7385d4c 100644
--- a/vendor/symfony/mime/Header/DateHeader.php
+++ b/vendor/symfony/mime/Header/DateHeader.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A Date MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class DateHeader extends AbstractHeader
 {
@@ -37,10 +35,7 @@ final class DateHeader extends AbstractHeader
         $this->setDateTime($body);
     }
 
-    /**
-     * @return \DateTimeImmutable
-     */
-    public function getBody()
+    public function getBody(): \DateTimeImmutable
     {
         return $this->getDateTime();
     }
diff --git a/vendor/symfony/mime/Header/HeaderInterface.php b/vendor/symfony/mime/Header/HeaderInterface.php
index b0638bca..4546947c 100644
--- a/vendor/symfony/mime/Header/HeaderInterface.php
+++ b/vendor/symfony/mime/Header/HeaderInterface.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 interface HeaderInterface
 {
diff --git a/vendor/symfony/mime/Header/Headers.php b/vendor/symfony/mime/Header/Headers.php
index 57f02b25..57c99c41 100644
--- a/vendor/symfony/mime/Header/Headers.php
+++ b/vendor/symfony/mime/Header/Headers.php
@@ -13,14 +13,11 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\LogicException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A collection of headers.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class Headers
 {
@@ -62,21 +59,21 @@ final class Headers
     }
 
     /**
-     * @param (NamedAddress|Address|string)[] $addresses
+     * @param (Address|string)[] $addresses
      *
      * @return $this
      */
-    public function addMailboxListHeader(string $name, array $addresses)
+    public function addMailboxListHeader(string $name, array $addresses): self
     {
         return $this->add(new MailboxListHeader($name, Address::createArray($addresses)));
     }
 
     /**
-     * @param NamedAddress|Address|string $address
+     * @param Address|string $address
      *
      * @return $this
      */
-    public function addMailboxHeader(string $name, $address)
+    public function addMailboxHeader(string $name, $address): self
     {
         return $this->add(new MailboxHeader($name, Address::create($address)));
     }
@@ -86,7 +83,7 @@ final class Headers
      *
      * @return $this
      */
-    public function addIdHeader(string $name, $ids)
+    public function addIdHeader(string $name, $ids): self
     {
         return $this->add(new IdentificationHeader($name, $ids));
     }
@@ -96,7 +93,7 @@ final class Headers
      *
      * @return $this
      */
-    public function addPathHeader(string $name, $path)
+    public function addPathHeader(string $name, $path): self
     {
         return $this->add(new PathHeader($name, $path instanceof Address ? $path : new Address($path)));
     }
@@ -104,7 +101,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addDateHeader(string $name, \DateTimeInterface $dateTime)
+    public function addDateHeader(string $name, \DateTimeInterface $dateTime): self
     {
         return $this->add(new DateHeader($name, $dateTime));
     }
@@ -112,7 +109,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addTextHeader(string $name, string $value)
+    public function addTextHeader(string $name, string $value): self
     {
         return $this->add(new UnstructuredHeader($name, $value));
     }
@@ -120,7 +117,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function addParameterizedHeader(string $name, string $value, array $params = [])
+    public function addParameterizedHeader(string $name, string $value, array $params = []): self
     {
         return $this->add(new ParameterizedHeader($name, $value, $params));
     }
@@ -133,7 +130,7 @@ final class Headers
     /**
      * @return $this
      */
-    public function add(HeaderInterface $header)
+    public function add(HeaderInterface $header): self
     {
         static $map = [
             'date' => DateHeader::class,
@@ -153,7 +150,7 @@ final class Headers
         $name = strtolower($header->getName());
 
         if (isset($map[$name]) && !$header instanceof $map[$name]) {
-            throw new LogicException(sprintf('The "%s" header must be an instance of "%s" (got "%s").', $header->getName(), $map[$name], \get_class($header)));
+            throw new LogicException(sprintf('The "%s" header must be an instance of "%s" (got "%s").', $header->getName(), $map[$name], get_debug_type($header)));
         }
 
         if (\in_array($name, self::$uniqueHeaders, true) && isset($this->headers[$name]) && \count($this->headers[$name]) > 0) {
diff --git a/vendor/symfony/mime/Header/IdentificationHeader.php b/vendor/symfony/mime/Header/IdentificationHeader.php
index 0695b688..8a94574e 100644
--- a/vendor/symfony/mime/Header/IdentificationHeader.php
+++ b/vendor/symfony/mime/Header/IdentificationHeader.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
  * An ID MIME Header for something like Message-ID or Content-ID (one or more addresses).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class IdentificationHeader extends AbstractHeader
 {
@@ -46,10 +44,7 @@ final class IdentificationHeader extends AbstractHeader
         $this->setId($body);
     }
 
-    /**
-     * @return array
-     */
-    public function getBody()
+    public function getBody(): array
     {
         return $this->getIds();
     }
diff --git a/vendor/symfony/mime/Header/MailboxHeader.php b/vendor/symfony/mime/Header/MailboxHeader.php
index c6649232..b58c8252 100644
--- a/vendor/symfony/mime/Header/MailboxHeader.php
+++ b/vendor/symfony/mime/Header/MailboxHeader.php
@@ -13,14 +13,11 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\RfcComplianceException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A Mailbox MIME Header for something like Sender (one named address).
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MailboxHeader extends AbstractHeader
 {
@@ -45,10 +42,8 @@ final class MailboxHeader extends AbstractHeader
 
     /**
      * @throws RfcComplianceException
-     *
-     * @return Address
      */
-    public function getBody()
+    public function getBody(): Address
     {
         return $this->getAddress();
     }
@@ -69,7 +64,7 @@ final class MailboxHeader extends AbstractHeader
     public function getBodyAsString(): string
     {
         $str = $this->address->getEncodedAddress();
-        if ($this->address instanceof NamedAddress && $name = $this->address->getName()) {
+        if ($name = $this->address->getName()) {
             $str = $this->createPhrase($this, $name, $this->getCharset(), true).' <'.$str.'>';
         }
 
diff --git a/vendor/symfony/mime/Header/MailboxListHeader.php b/vendor/symfony/mime/Header/MailboxListHeader.php
index 51af2da8..1d00fdb1 100644
--- a/vendor/symfony/mime/Header/MailboxListHeader.php
+++ b/vendor/symfony/mime/Header/MailboxListHeader.php
@@ -13,21 +13,18 @@ namespace Symfony\Component\Mime\Header;
 
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\RfcComplianceException;
-use Symfony\Component\Mime\NamedAddress;
 
 /**
  * A Mailbox list MIME Header for something like From, To, Cc, and Bcc (one or more named addresses).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class MailboxListHeader extends AbstractHeader
 {
     private $addresses = [];
 
     /**
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      */
     public function __construct(string $name, array $addresses)
     {
@@ -37,7 +34,7 @@ final class MailboxListHeader extends AbstractHeader
     }
 
     /**
-     * @param (NamedAddress|Address)[] $body
+     * @param Address[] $body
      *
      * @throws RfcComplianceException
      */
@@ -49,9 +46,9 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * @throws RfcComplianceException
      *
-     * @return (NamedAddress|Address)[]
+     * @return Address[]
      */
-    public function getBody()
+    public function getBody(): array
     {
         return $this->getAddresses();
     }
@@ -59,7 +56,7 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * Sets a list of addresses to be shown in this Header.
      *
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      *
      * @throws RfcComplianceException
      */
@@ -72,7 +69,7 @@ final class MailboxListHeader extends AbstractHeader
     /**
      * Sets a list of addresses to be shown in this Header.
      *
-     * @param (NamedAddress|Address)[] $addresses
+     * @param Address[] $addresses
      *
      * @throws RfcComplianceException
      */
@@ -92,7 +89,7 @@ final class MailboxListHeader extends AbstractHeader
     }
 
     /**
-     * @return (NamedAddress|Address)[]
+     * @return Address[]
      */
     public function getAddresses(): array
     {
@@ -111,8 +108,8 @@ final class MailboxListHeader extends AbstractHeader
         $strings = [];
         foreach ($this->addresses as $address) {
             $str = $address->getEncodedAddress();
-            if ($address instanceof NamedAddress && $name = $address->getName()) {
-                $str = $this->createPhrase($this, $name, $this->getCharset(), empty($strings)).' <'.$str.'>';
+            if ($name = $address->getName()) {
+                $str = $this->createPhrase($this, $name, $this->getCharset(), !$strings).' <'.$str.'>';
             }
             $strings[] = $str;
         }
diff --git a/vendor/symfony/mime/Header/ParameterizedHeader.php b/vendor/symfony/mime/Header/ParameterizedHeader.php
index 811a969b..9d3b905a 100644
--- a/vendor/symfony/mime/Header/ParameterizedHeader.php
+++ b/vendor/symfony/mime/Header/ParameterizedHeader.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Encoder\Rfc2231Encoder;
 
 /**
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class ParameterizedHeader extends UnstructuredHeader
 {
@@ -160,7 +158,8 @@ final class ParameterizedHeader extends UnstructuredHeader
      */
     private function getEndOfParameterValue(string $value, bool $encoded = false, bool $firstLine = false): string
     {
-        if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
+        $forceHttpQuoting = 'content-disposition' === strtolower($this->getName()) && 'form-data' === $this->getValue();
+        if ($forceHttpQuoting || !preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) {
             $value = '"'.$value.'"';
         }
         $prepend = '=';
diff --git a/vendor/symfony/mime/Header/PathHeader.php b/vendor/symfony/mime/Header/PathHeader.php
index 6d16500a..5101ad0f 100644
--- a/vendor/symfony/mime/Header/PathHeader.php
+++ b/vendor/symfony/mime/Header/PathHeader.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Exception\RfcComplianceException;
  * A Path Header, such a Return-Path (one address).
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 final class PathHeader extends AbstractHeader
 {
@@ -42,10 +40,7 @@ final class PathHeader extends AbstractHeader
         $this->setAddress($body);
     }
 
-    /**
-     * @return Address
-     */
-    public function getBody()
+    public function getBody(): Address
     {
         return $this->getAddress();
     }
diff --git a/vendor/symfony/mime/Header/UnstructuredHeader.php b/vendor/symfony/mime/Header/UnstructuredHeader.php
index afb96152..2085ddfd 100644
--- a/vendor/symfony/mime/Header/UnstructuredHeader.php
+++ b/vendor/symfony/mime/Header/UnstructuredHeader.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime\Header;
  * A Simple MIME Header.
  *
  * @author Chris Corbyn
- *
- * @experimental in 4.3
  */
 class UnstructuredHeader extends AbstractHeader
 {
diff --git a/vendor/symfony/mime/LICENSE b/vendor/symfony/mime/LICENSE
index 9a9a61b1..d53be683 100644
--- a/vendor/symfony/mime/LICENSE
+++ b/vendor/symfony/mime/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2019 Fabien Potencier
+Copyright (c) 2010-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/mime/Message.php b/vendor/symfony/mime/Message.php
index 4d6af1c9..b7ddb76b 100644
--- a/vendor/symfony/mime/Message.php
+++ b/vendor/symfony/mime/Message.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class Message extends RawMessage
 {
@@ -34,9 +32,7 @@ class Message extends RawMessage
 
     public function __clone()
     {
-        if (null !== $this->headers) {
-            $this->headers = clone $this->headers;
-        }
+        $this->headers = clone $this->headers;
 
         if (null !== $this->body) {
             $this->body = clone $this->body;
@@ -78,7 +74,10 @@ class Message extends RawMessage
         $headers = clone $this->headers;
 
         if (!$headers->has('From')) {
-            throw new LogicException('An email must have a "From" header.');
+            if (!$headers->has('Sender')) {
+                throw new LogicException('An email must have a "From" or a "Sender" header.');
+            }
+            $headers->addMailboxListHeader('From', [$headers->get('Sender')->getAddress()]);
         }
 
         $headers->addTextHeader('MIME-Version', '1.0');
@@ -88,16 +87,12 @@ class Message extends RawMessage
         }
 
         // determine the "real" sender
-        $senders = $headers->get('From')->getAddresses();
-        $sender = $senders[0];
-        if ($headers->has('Sender')) {
-            $sender = $headers->get('Sender')->getAddress();
-        } elseif (\count($senders) > 1) {
-            $headers->addMailboxHeader('Sender', $sender);
+        if (!$headers->has('Sender') && \count($froms = $headers->get('From')->getAddresses()) > 1) {
+            $headers->addMailboxHeader('Sender', $froms[0]);
         }
 
         if (!$headers->has('Message-ID')) {
-            $headers->addIdHeader('Message-ID', $this->generateMessageId($sender->getAddress()));
+            $headers->addIdHeader('Message-ID', $this->generateMessageId());
         }
 
         // remove the Bcc field which should NOT be part of the sent message
@@ -125,9 +120,30 @@ class Message extends RawMessage
         yield from $body->toIterable();
     }
 
-    private function generateMessageId(string $email): string
+    public function ensureValidity()
     {
-        return bin2hex(random_bytes(16)).strstr($email, '@');
+        if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) {
+            throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.');
+        }
+
+        if (!$this->headers->has('From') && !$this->headers->has('Sender')) {
+            throw new LogicException('An email must have a "From" or a "Sender" header.');
+        }
+
+        parent::ensureValidity();
+    }
+
+    public function generateMessageId(): string
+    {
+        if ($this->headers->has('Sender')) {
+            $sender = $this->headers->get('Sender')->getAddress();
+        } elseif ($this->headers->has('From')) {
+            $sender = $this->headers->get('From')->getAddresses()[0];
+        } else {
+            throw new LogicException('An email must have a "From" or a "Sender" header.');
+        }
+
+        return bin2hex(random_bytes(16)).strstr($sender->getAddress(), '@');
     }
 
     public function __serialize(): array
diff --git a/vendor/symfony/mime/MessageConverter.php b/vendor/symfony/mime/MessageConverter.php
index b139f1c0..788a5ff9 100644
--- a/vendor/symfony/mime/MessageConverter.php
+++ b/vendor/symfony/mime/MessageConverter.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Part\TextPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MessageConverter
 {
@@ -57,13 +55,13 @@ final class MessageConverter
             } elseif ($parts[0] instanceof TextPart) {
                 $email = self::createEmailFromTextPart($message, $parts[0]);
             } else {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
             }
 
             return self::attachParts($email, \array_slice($parts, 1));
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromTextPart(Message $message, TextPart $part): Email
@@ -75,7 +73,7 @@ final class MessageConverter
             return (new Email(clone $message->getHeaders()))->html($part->getBody(), $part->getPreparedHeaders()->getHeaderParameter('Content-Type', 'charset') ?: 'utf-8');
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromAlternativePart(Message $message, AlternativePart $part): Email
@@ -92,7 +90,7 @@ final class MessageConverter
             ;
         }
 
-        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+        throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
     }
 
     private static function createEmailFromRelatedPart(Message $message, RelatedPart $part): Email
@@ -103,7 +101,7 @@ final class MessageConverter
         } elseif ($parts[0] instanceof TextPart) {
             $email = self::createEmailFromTextPart($message, $parts[0]);
         } else {
-            throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($message)));
+            throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($message)));
         }
 
         return self::attachParts($email, \array_slice($parts, 1));
@@ -113,7 +111,7 @@ final class MessageConverter
     {
         foreach ($parts as $part) {
             if (!$part instanceof DataPart) {
-                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', \get_class($email)));
+                throw new RuntimeException(sprintf('Unable to create an Email from an instance of "%s" as the body is too complex.', get_debug_type($email)));
             }
 
             $headers = $part->getPreparedHeaders();
diff --git a/vendor/symfony/mime/MimeTypeGuesserInterface.php b/vendor/symfony/mime/MimeTypeGuesserInterface.php
index b7d27f53..68b05055 100644
--- a/vendor/symfony/mime/MimeTypeGuesserInterface.php
+++ b/vendor/symfony/mime/MimeTypeGuesserInterface.php
@@ -15,8 +15,6 @@ namespace Symfony\Component\Mime;
  * Guesses the MIME type of a file.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface MimeTypeGuesserInterface
 {
diff --git a/vendor/symfony/mime/MimeTypes.php b/vendor/symfony/mime/MimeTypes.php
index 02e8fe50..d6260b59 100644
--- a/vendor/symfony/mime/MimeTypes.php
+++ b/vendor/symfony/mime/MimeTypes.php
@@ -33,8 +33,6 @@ use Symfony\Component\Mime\Exception\LogicException;
  *     $guesser->registerGuesser(new FileinfoMimeTypeGuesser('/path/to/magic/file'));
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MimeTypes implements MimeTypesInterface
 {
@@ -53,7 +51,7 @@ final class MimeTypes implements MimeTypesInterface
             $this->extensions[$mimeType] = $extensions;
 
             foreach ($extensions as $extension) {
-                $this->mimeTypes[$extension] = $mimeType;
+                $this->mimeTypes[$extension][] = $mimeType;
             }
         }
         $this->registerGuesser(new FileBinaryMimeTypeGuesser());
@@ -139,7 +137,7 @@ final class MimeTypes implements MimeTypesInterface
         }
 
         if (!$this->isGuesserSupported()) {
-            throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?).');
+            throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).');
         }
 
         return null;
@@ -528,6 +526,7 @@ final class MimeTypes implements MimeTypesInterface
         'application/vnd.ms-ims' => ['ims'],
         'application/vnd.ms-lrm' => ['lrm'],
         'application/vnd.ms-officetheme' => ['thmx'],
+        'application/vnd.ms-outlook' => ['msg'],
         'application/vnd.ms-pki.seccat' => ['cat'],
         'application/vnd.ms-pki.stl' => ['stl'],
         'application/vnd.ms-powerpoint' => ['ppt', 'pps', 'pot', 'ppz'],
@@ -1115,7 +1114,7 @@ final class MimeTypes implements MimeTypesInterface
         'audio/mp2' => ['mp2'],
         'audio/mp3' => ['mp3', 'mpga'],
         'audio/mp4' => ['m4a', 'mp4a', 'f4a'],
-        'audio/mpeg' => ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'],
+        'audio/mpeg' => ['mp3', 'mpga', 'mp2', 'mp2a', 'm2a', 'm3a'],
         'audio/mpegurl' => ['m3u', 'm3u8', 'vlc'],
         'audio/ogg' => ['oga', 'ogg', 'spx', 'opus'],
         'audio/prs.sid' => ['sid', 'psid'],
@@ -1253,6 +1252,7 @@ final class MimeTypes implements MimeTypesInterface
         'image/psd' => ['psd'],
         'image/rle' => ['rle'],
         'image/sgi' => ['sgi'],
+        'image/svg' => ['svg'],
         'image/svg+xml' => ['svg', 'svgz'],
         'image/svg+xml-compressed' => ['svgz'],
         'image/tiff' => ['tiff', 'tif'],
@@ -2375,6 +2375,7 @@ final class MimeTypes implements MimeTypesInterface
         'mseed' => ['application/vnd.fdsn.mseed'],
         'mseq' => ['application/vnd.mseq'],
         'msf' => ['application/vnd.epson.msf'],
+        'msg' => ['application/vnd.ms-outlook'],
         'msh' => ['model/mesh'],
         'msi' => ['application/x-msdownload', 'application/x-msi'],
         'msl' => ['application/vnd.mobius.msl'],
@@ -2810,7 +2811,7 @@ final class MimeTypes implements MimeTypesInterface
         'sv4crc' => ['application/x-sv4crc'],
         'svc' => ['application/vnd.dvb.service'],
         'svd' => ['application/vnd.svd'],
-        'svg' => ['image/svg+xml'],
+        'svg' => ['image/svg+xml', 'image/svg'],
         'svgz' => ['image/svg+xml', 'image/svg+xml-compressed'],
         'svh' => ['text/x-svhdr'],
         'swa' => ['application/x-director'],
diff --git a/vendor/symfony/mime/MimeTypesInterface.php b/vendor/symfony/mime/MimeTypesInterface.php
index bdf20429..9fbd2cc2 100644
--- a/vendor/symfony/mime/MimeTypesInterface.php
+++ b/vendor/symfony/mime/MimeTypesInterface.php
@@ -13,8 +13,6 @@ namespace Symfony\Component\Mime;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 interface MimeTypesInterface extends MimeTypeGuesserInterface
 {
diff --git a/vendor/symfony/mime/NamedAddress.php b/vendor/symfony/mime/NamedAddress.php
deleted file mode 100644
index b13fd735..00000000
--- a/vendor/symfony/mime/NamedAddress.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
- */
-final class NamedAddress extends Address
-{
-    private $name;
-
-    public function __construct(string $address, string $name)
-    {
-        parent::__construct($address);
-
-        $this->name = trim(str_replace(["\n", "\r"], '', $name));
-    }
-
-    public function getName(): string
-    {
-        return $this->name;
-    }
-
-    public function getEncodedNamedAddress(): string
-    {
-        return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
-    }
-
-    public function toString(): string
-    {
-        return $this->getEncodedNamedAddress();
-    }
-}
diff --git a/vendor/symfony/mime/Part/AbstractMultipartPart.php b/vendor/symfony/mime/Part/AbstractMultipartPart.php
index 34a94d25..685d2506 100644
--- a/vendor/symfony/mime/Part/AbstractMultipartPart.php
+++ b/vendor/symfony/mime/Part/AbstractMultipartPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 abstract class AbstractMultipartPart extends AbstractPart
 {
@@ -76,10 +74,24 @@ abstract class AbstractMultipartPart extends AbstractPart
         yield '--'.$this->getBoundary()."--\r\n";
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        foreach ($this->getParts() as $part) {
+            $lines = explode("\n", $part->asDebugString());
+            $str .= "\n  â”” ".array_shift($lines);
+            foreach ($lines as $line) {
+                $str .= "\n  |".$line;
+            }
+        }
+
+        return $str;
+    }
+
     private function getBoundary(): string
     {
         if (null === $this->boundary) {
-            $this->boundary = '_=_symfony_'.time().'_'.bin2hex(random_bytes(16)).'_=_';
+            $this->boundary = strtr(base64_encode(random_bytes(6)), '+/', '-_');
         }
 
         return $this->boundary;
diff --git a/vendor/symfony/mime/Part/AbstractPart.php b/vendor/symfony/mime/Part/AbstractPart.php
index 29eaa1eb..93892d9d 100644
--- a/vendor/symfony/mime/Part/AbstractPart.php
+++ b/vendor/symfony/mime/Part/AbstractPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 abstract class AbstractPart
 {
@@ -52,6 +50,11 @@ abstract class AbstractPart
         yield from $this->bodyToIterable();
     }
 
+    public function asDebugString(): string
+    {
+        return $this->getMediaType().'/'.$this->getMediaSubtype();
+    }
+
     abstract public function bodyToString(): string;
 
     abstract public function bodyToIterable(): iterable;
diff --git a/vendor/symfony/mime/Part/DataPart.php b/vendor/symfony/mime/Part/DataPart.php
index 1cfb1e69..5d1d9106 100644
--- a/vendor/symfony/mime/Part/DataPart.php
+++ b/vendor/symfony/mime/Part/DataPart.php
@@ -17,8 +17,6 @@ use Symfony\Component\Mime\MimeTypes;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class DataPart extends TextPart
 {
@@ -58,8 +56,12 @@ class DataPart extends TextPart
             $contentType = self::$mimeTypes->getMimeTypes($ext)[0] ?? 'application/octet-stream';
         }
 
+        if (false === is_readable($path)) {
+            throw new InvalidArgumentException(sprintf('Path "%s" is not readable.', $path));
+        }
+
         if (false === $handle = @fopen($path, 'r', false)) {
-            throw new InvalidArgumentException(sprintf('Unable to open path "%s"', $path));
+            throw new InvalidArgumentException(sprintf('Unable to open path "%s".', $path));
         }
         $p = new self($handle, $name ?: basename($path), $contentType);
         $p->handle = $handle;
@@ -105,6 +107,16 @@ class DataPart extends TextPart
         return $headers;
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        if (null !== $this->filename) {
+            $str .= ' filename: '.$this->filename;
+        }
+
+        return $str;
+    }
+
     private function generateContentId(): string
     {
         return bin2hex(random_bytes(16)).'@symfony';
@@ -117,6 +129,9 @@ class DataPart extends TextPart
         }
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         // converts the body to a string
diff --git a/vendor/symfony/mime/Part/MessagePart.php b/vendor/symfony/mime/Part/MessagePart.php
index 64a53404..1b5c23e2 100644
--- a/vendor/symfony/mime/Part/MessagePart.php
+++ b/vendor/symfony/mime/Part/MessagePart.php
@@ -18,8 +18,6 @@ use Symfony\Component\Mime\RawMessage;
  * @final
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class MessagePart extends DataPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/AlternativePart.php b/vendor/symfony/mime/Part/Multipart/AlternativePart.php
index ad316a49..fd754234 100644
--- a/vendor/symfony/mime/Part/Multipart/AlternativePart.php
+++ b/vendor/symfony/mime/Part/Multipart/AlternativePart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Part\AbstractMultipartPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class AlternativePart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/DigestPart.php b/vendor/symfony/mime/Part/Multipart/DigestPart.php
index 6199e5b8..27537f15 100644
--- a/vendor/symfony/mime/Part/Multipart/DigestPart.php
+++ b/vendor/symfony/mime/Part/Multipart/DigestPart.php
@@ -16,8 +16,6 @@ use Symfony\Component\Mime\Part\MessagePart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class DigestPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/FormDataPart.php b/vendor/symfony/mime/Part/Multipart/FormDataPart.php
index 75d69a88..9e3c9a2a 100644
--- a/vendor/symfony/mime/Part/Multipart/FormDataPart.php
+++ b/vendor/symfony/mime/Part/Multipart/FormDataPart.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Part\TextPart;
  * Implements RFC 7578.
  *
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class FormDataPart extends AbstractMultipartPart
 {
@@ -36,13 +34,13 @@ final class FormDataPart extends AbstractMultipartPart
 
         foreach ($fields as $name => $value) {
             if (!\is_string($value) && !\is_array($value) && !$value instanceof TextPart) {
-                throw new InvalidArgumentException(sprintf('A form field value can only be a string, an array, or an instance of TextPart ("%s" given).', \is_object($value) ? \get_class($value) : \gettype($value)));
+                throw new InvalidArgumentException(sprintf('A form field value can only be a string, an array, or an instance of TextPart ("%s" given).', get_debug_type($value)));
             }
 
             $this->fields[$name] = $value;
         }
         // HTTP does not support \r\n in header values
-        $this->getHeaders()->setMaxLineLength(PHP_INT_MAX);
+        $this->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
     }
 
     public function getMediaSubtype(): string
@@ -58,16 +56,25 @@ final class FormDataPart extends AbstractMultipartPart
     private function prepareFields(array $fields): array
     {
         $values = [];
-        array_walk_recursive($fields, function ($item, $key) use (&$values) {
-            if (!\is_array($item)) {
-                $values[] = $this->preparePart($key, $item);
+
+        $prepare = function ($item, $key, $root = null) use (&$values, &$prepare) {
+            $fieldName = $root ? sprintf('%s[%s]', $root, $key) : $key;
+
+            if (\is_array($item)) {
+                array_walk($item, $prepare, $fieldName);
+
+                return;
             }
-        });
+
+            $values[] = $this->preparePart($fieldName, $item);
+        };
+
+        array_walk($fields, $prepare);
 
         return $values;
     }
 
-    private function preparePart($name, $value): TextPart
+    private function preparePart(string $name, $value): TextPart
     {
         if (\is_string($value)) {
             return $this->configurePart($name, new TextPart($value, 'utf-8', 'plain', '8bit'));
@@ -88,7 +95,7 @@ final class FormDataPart extends AbstractMultipartPart
         $part->setDisposition('form-data');
         $part->setName($name);
         // HTTP does not support \r\n in header values
-        $part->getHeaders()->setMaxLineLength(PHP_INT_MAX);
+        $part->getHeaders()->setMaxLineLength(\PHP_INT_MAX);
         $r->setValue($part, '8bit');
 
         return $part;
diff --git a/vendor/symfony/mime/Part/Multipart/MixedPart.php b/vendor/symfony/mime/Part/Multipart/MixedPart.php
index eaa869fb..c8d7028c 100644
--- a/vendor/symfony/mime/Part/Multipart/MixedPart.php
+++ b/vendor/symfony/mime/Part/Multipart/MixedPart.php
@@ -15,8 +15,6 @@ use Symfony\Component\Mime\Part\AbstractMultipartPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class MixedPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/Multipart/RelatedPart.php b/vendor/symfony/mime/Part/Multipart/RelatedPart.php
index 2d556307..08fdd5fa 100644
--- a/vendor/symfony/mime/Part/Multipart/RelatedPart.php
+++ b/vendor/symfony/mime/Part/Multipart/RelatedPart.php
@@ -16,8 +16,6 @@ use Symfony\Component\Mime\Part\AbstractPart;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 final class RelatedPart extends AbstractMultipartPart
 {
diff --git a/vendor/symfony/mime/Part/TextPart.php b/vendor/symfony/mime/Part/TextPart.php
index 6a041853..2a12fab6 100644
--- a/vendor/symfony/mime/Part/TextPart.php
+++ b/vendor/symfony/mime/Part/TextPart.php
@@ -20,8 +20,6 @@ use Symfony\Component\Mime\Header\Headers;
 
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class TextPart extends AbstractPart
 {
@@ -33,6 +31,7 @@ class TextPart extends AbstractPart
     private $disposition;
     private $name;
     private $encoding;
+    private $seekable;
 
     /**
      * @param resource|string $body
@@ -42,12 +41,13 @@ class TextPart extends AbstractPart
         parent::__construct();
 
         if (!\is_string($body) && !\is_resource($body)) {
-            throw new \TypeError(sprintf('The body of "%s" must be a string or a resource (got "%s").', self::class, \is_object($body) ? \get_class($body) : \gettype($body)));
+            throw new \TypeError(sprintf('The body of "%s" must be a string or a resource (got "%s").', self::class, get_debug_type($body)));
         }
 
         $this->body = $body;
         $this->charset = $charset;
         $this->subtype = $subtype;
+        $this->seekable = \is_resource($body) ? stream_get_meta_data($body)['seekable'] && 0 === fseek($body, 0, \SEEK_CUR) : null;
 
         if (null === $encoding) {
             $this->encoding = $this->chooseEncoding();
@@ -95,11 +95,11 @@ class TextPart extends AbstractPart
 
     public function getBody(): string
     {
-        if (!\is_resource($this->body)) {
+        if (null === $this->seekable) {
             return $this->body;
         }
 
-        if (stream_get_meta_data($this->body)['seekable'] ?? false) {
+        if ($this->seekable) {
             rewind($this->body);
         }
 
@@ -113,8 +113,8 @@ class TextPart extends AbstractPart
 
     public function bodyToIterable(): iterable
     {
-        if (\is_resource($this->body)) {
-            if (stream_get_meta_data($this->body)['seekable'] ?? false) {
+        if (null !== $this->seekable) {
+            if ($this->seekable) {
                 rewind($this->body);
             }
             yield from $this->getEncoder()->encodeByteStream($this->body);
@@ -131,7 +131,7 @@ class TextPart extends AbstractPart
         if ($this->charset) {
             $headers->setHeaderParameter('Content-Type', 'charset', $this->charset);
         }
-        if ($this->name) {
+        if ($this->name && 'form-data' !== $this->disposition) {
             $headers->setHeaderParameter('Content-Type', 'name', $this->name);
         }
         $headers->setHeaderBody('Text', 'Content-Transfer-Encoding', $this->encoding);
@@ -146,6 +146,19 @@ class TextPart extends AbstractPart
         return $headers;
     }
 
+    public function asDebugString(): string
+    {
+        $str = parent::asDebugString();
+        if (null !== $this->charset) {
+            $str .= ' charset: '.$this->charset;
+        }
+        if (null !== $this->disposition) {
+            $str .= ' disposition: '.$this->disposition;
+        }
+
+        return $str;
+    }
+
     private function getEncoder(): ContentEncoderInterface
     {
         if ('8bit' === $this->encoding) {
@@ -168,10 +181,13 @@ class TextPart extends AbstractPart
         return 'quoted-printable';
     }
 
+    /**
+     * @return array
+     */
     public function __sleep()
     {
         // convert resources to strings for serialization
-        if (\is_resource($this->body)) {
+        if (null !== $this->seekable) {
             $this->body = $this->getBody();
         }
 
diff --git a/vendor/symfony/mime/README.md b/vendor/symfony/mime/README.md
index 32882461..4d565c92 100644
--- a/vendor/symfony/mime/README.md
+++ b/vendor/symfony/mime/README.md
@@ -3,11 +3,6 @@ MIME Component
 
 The MIME component allows manipulating MIME messages.
 
-**This Component is experimental**.
-[Experimental features](https://symfony.com/doc/current/contributing/code/experimental.html)
-are not covered by Symfony's
-[Backward Compatibility Promise](https://symfony.com/doc/current/contributing/code/bc.html).
-
 Resources
 ---------
 
diff --git a/vendor/symfony/mime/RawMessage.php b/vendor/symfony/mime/RawMessage.php
index 40a2795e..66788d8a 100644
--- a/vendor/symfony/mime/RawMessage.php
+++ b/vendor/symfony/mime/RawMessage.php
@@ -11,10 +11,10 @@
 
 namespace Symfony\Component\Mime;
 
+use Symfony\Component\Mime\Exception\LogicException;
+
 /**
  * @author Fabien Potencier <fabien@symfony.com>
- *
- * @experimental in 4.3
  */
 class RawMessage implements \Serializable
 {
@@ -53,10 +53,17 @@ class RawMessage implements \Serializable
         $this->message = $message;
     }
 
+    /**
+     * @throws LogicException if the message is not valid
+     */
+    public function ensureValidity()
+    {
+    }
+
     /**
      * @internal
      */
-    final public function serialize()
+    final public function serialize(): string
     {
         return serialize($this->__serialize());
     }
@@ -71,7 +78,7 @@ class RawMessage implements \Serializable
 
     public function __serialize(): array
     {
-        return [$this->message];
+        return [$this->toString()];
     }
 
     public function __unserialize(array $data): void
diff --git a/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php
deleted file mode 100644
index 3ac9382f..00000000
--- a/vendor/symfony/mime/Tests/AbstractMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-abstract class AbstractMimeTypeGuesserTest extends TestCase
-{
-    public static function tearDownAfterClass(): void
-    {
-        $path = __DIR__.'/Fixtures/mimetypes/to_delete';
-        if (file_exists($path)) {
-            @chmod($path, 0666);
-            @unlink($path);
-        }
-    }
-
-    abstract protected function getGuesser(): MimeTypeGuesserInterface;
-
-    public function testGuessImageWithoutExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('image/gif', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/test'));
-    }
-
-    public function testGuessImageWithDirectory()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->expectException('\InvalidArgumentException');
-        $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/directory');
-    }
-
-    public function testGuessImageWithKnownExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('image/gif', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/test.gif'));
-    }
-
-    public function testGuessFileWithUnknownExtension()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->assertEquals('application/octet-stream', $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/.unknownextension'));
-    }
-
-    public function testGuessWithIncorrectPath()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        $this->expectException('\InvalidArgumentException');
-        $this->getGuesser()->guessMimeType(__DIR__.'/Fixtures/mimetypes/not_here');
-    }
-
-    public function testGuessWithNonReadablePath()
-    {
-        if (!$this->getGuesser()->isGuesserSupported()) {
-            $this->markTestSkipped('Guesser is not supported');
-        }
-
-        if ('\\' === \DIRECTORY_SEPARATOR) {
-            $this->markTestSkipped('Can not verify chmod operations on Windows');
-        }
-
-        if (!getenv('USER') || 'root' === getenv('USER')) {
-            $this->markTestSkipped('This test will fail if run under superuser');
-        }
-
-        $path = __DIR__.'/Fixtures/mimetypes/to_delete';
-        touch($path);
-        @chmod($path, 0333);
-
-        if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {
-            $this->expectException('\InvalidArgumentException');
-            $this->getGuesser()->guessMimeType($path);
-        } else {
-            $this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');
-        }
-    }
-}
diff --git a/vendor/symfony/mime/Tests/AddressTest.php b/vendor/symfony/mime/Tests/AddressTest.php
deleted file mode 100644
index dd7d3ceb..00000000
--- a/vendor/symfony/mime/Tests/AddressTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\NamedAddress;
-
-class AddressTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new Address('fabien@symfonï.com');
-        $this->assertEquals('fabien@symfonï.com', $a->getAddress());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->toString());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
-    }
-
-    public function testConstructorWithInvalidAddress()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        new Address('fab   pot@symfony.com');
-    }
-
-    public function testCreate()
-    {
-        $this->assertSame($a = new Address('fabien@symfony.com'), Address::create($a));
-        $this->assertSame($b = new NamedAddress('helene@symfony.com', 'Helene'), Address::create($b));
-        $this->assertEquals($a, Address::create('fabien@symfony.com'));
-    }
-
-    public function testCreateWrongArg()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        Address::create(new \stdClass());
-    }
-
-    public function testCreateArray()
-    {
-        $fabien = new Address('fabien@symfony.com');
-        $helene = new NamedAddress('helene@symfony.com', 'Helene');
-        $this->assertSame([$fabien, $helene], Address::createArray([$fabien, $helene]));
-
-        $this->assertEquals([$fabien], Address::createArray(['fabien@symfony.com']));
-    }
-
-    public function testCreateArrayWrongArg()
-    {
-        $this->expectException(\InvalidArgumentException::class);
-        Address::createArray([new \stdClass()]);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/CharacterStreamTest.php b/vendor/symfony/mime/Tests/CharacterStreamTest.php
deleted file mode 100644
index 62f4dc6f..00000000
--- a/vendor/symfony/mime/Tests/CharacterStreamTest.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\CharacterStream;
-
-class CharacterStreamTest extends TestCase
-{
-    public function testReadCharactersAreInTact()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $stream->write(pack('C*',
-            0xD0, 0xBB,
-            0xD1, 0x8E,
-            0xD0, 0xB1,
-            0xD1, 0x8B,
-            0xD1, 0x85
-        ));
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(2));
-        $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->read(3));
-        $this->assertSame(pack('C*', 0xD1, 0x85), $stream->read(1));
-        $this->assertNull($stream->read(1));
-    }
-
-    public function testCharactersCanBeReadAsByteArrays()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $stream->write(pack('C*',
-            0xD0, 0xBB,
-            0xD1, 0x8E,
-            0xD0, 0xB1,
-            0xD1, 0x8B,
-            0xD1, 0x85
-        ));
-        $this->assertEquals([0xD0, 0x94], $stream->readBytes(1));
-        $this->assertEquals([0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(2));
-        $this->assertEquals([0xD0, 0xBB], $stream->readBytes(1));
-        $this->assertEquals([0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B], $stream->readBytes(3));
-        $this->assertEquals([0xD1, 0x85], $stream->readBytes(1));
-        $this->assertNull($stream->readBytes(1));
-    }
-
-    public function testRequestingLargeCharCountPastEndOfStream()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertSame(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(100));
-        $this->assertNull($stream->read(1));
-    }
-
-    public function testRequestingByteArrayCountPastEndOfStream()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertEquals([0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(100));
-        $this->assertNull($stream->readBytes(1));
-    }
-
-    public function testPointerOffsetCanBeSet()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE));
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $stream->setPointer(0);
-        $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1));
-        $stream->setPointer(2);
-        $this->assertSame(pack('C*', 0xD0, 0xBE), $stream->read(1));
-    }
-
-    public function testAlgorithmWithFixedWidthCharsets()
-    {
-        $stream = new CharacterStream(pack('C*', 0xD1, 0x8D, 0xD0, 0xBB, 0xD0, 0xB0));
-        $this->assertSame(pack('C*', 0xD1, 0x8D), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1));
-        $this->assertSame(pack('C*', 0xD0, 0xB0), $stream->read(1));
-        $this->assertNull($stream->read(1));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php b/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php
deleted file mode 100644
index cf40a467..00000000
--- a/vendor/symfony/mime/Tests/DependencyInjection/AddMimeTypeGuesserPassTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Definition;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\Mime\DependencyInjection\AddMimeTypeGuesserPass;
-use Symfony\Component\Mime\FileinfoMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypes;
-
-class AddMimeTypeGuesserPassTest extends TestCase
-{
-    public function testTags()
-    {
-        $container = new ContainerBuilder();
-        $container->addCompilerPass(new AddMimeTypeGuesserPass());
-
-        $definition = new Definition(FileinfoMimeTypeGuesser::class);
-        $definition->addArgument('/path/to/magic/file');
-        $definition->addTag('mime.mime_type_guesser');
-        $container->setDefinition('some_mime_type_guesser', $definition->setPublic(true));
-        $container->register('mime_types', MimeTypes::class)->setPublic(true);
-        $container->compile();
-
-        $router = $container->getDefinition('mime_types');
-        $calls = $router->getMethodCalls();
-        $this->assertCount(1, $calls);
-        $this->assertEquals('registerGuesser', $calls[0][0]);
-        $this->assertEquals(new Reference('some_mime_type_guesser'), $calls[0][1][0]);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/EmailTest.php b/vendor/symfony/mime/Tests/EmailTest.php
deleted file mode 100644
index 764f66b0..00000000
--- a/vendor/symfony/mime/Tests/EmailTest.php
+++ /dev/null
@@ -1,389 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\NamedAddress;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class EmailTest extends TestCase
-{
-    public function testSubject()
-    {
-        $e = new Email();
-        $e->subject('Subject');
-        $this->assertEquals('Subject', $e->getSubject());
-    }
-
-    public function testDate()
-    {
-        $e = new Email();
-        $e->date($d = new \DateTimeImmutable());
-        $this->assertSame($d, $e->getDate());
-    }
-
-    public function testReturnPath()
-    {
-        $e = new Email();
-        $e->returnPath('fabien@symfony.com');
-        $this->assertEquals(new Address('fabien@symfony.com'), $e->getReturnPath());
-    }
-
-    public function testSender()
-    {
-        $e = new Email();
-        $e->sender('fabien@symfony.com');
-        $this->assertEquals(new Address('fabien@symfony.com'), $e->getSender());
-
-        $e->sender($fabien = new Address('fabien@symfony.com'));
-        $this->assertSame($fabien, $e->getSender());
-    }
-
-    public function testFrom()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->from('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getFrom();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addFrom('lucas@symfony.com', $caramel));
-        $v = $e->getFrom();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addFrom('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getFrom());
-
-        $e = new Email();
-        $e->from('lucas@symfony.com');
-        $e->from($caramel);
-        $this->assertSame([$caramel], $e->getFrom());
-    }
-
-    public function testReplyTo()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->replyTo('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getReplyTo();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addReplyTo('lucas@symfony.com', $caramel));
-        $v = $e->getReplyTo();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addReplyTo('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getReplyTo());
-
-        $e = new Email();
-        $e->replyTo('lucas@symfony.com');
-        $e->replyTo($caramel);
-        $this->assertSame([$caramel], $e->getReplyTo());
-    }
-
-    public function testTo()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->to('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getTo();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addTo('lucas@symfony.com', $caramel));
-        $v = $e->getTo();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addTo('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getTo());
-
-        $e = new Email();
-        $e->to('lucas@symfony.com');
-        $e->to($caramel);
-        $this->assertSame([$caramel], $e->getTo());
-    }
-
-    public function testCc()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->cc('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getCc();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addCc('lucas@symfony.com', $caramel));
-        $v = $e->getCc();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addCc('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getCc());
-
-        $e = new Email();
-        $e->cc('lucas@symfony.com');
-        $e->cc($caramel);
-        $this->assertSame([$caramel], $e->getCc());
-    }
-
-    public function testBcc()
-    {
-        $e = new Email();
-        $helene = new Address('helene@symfony.com');
-        $thomas = new NamedAddress('thomas@symfony.com', 'Thomas');
-        $caramel = new Address('caramel@symfony.com');
-
-        $this->assertSame($e, $e->bcc('fabien@symfony.com', $helene, $thomas));
-        $v = $e->getBcc();
-        $this->assertCount(3, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-
-        $this->assertSame($e, $e->addBcc('lucas@symfony.com', $caramel));
-        $v = $e->getBcc();
-        $this->assertCount(5, $v);
-        $this->assertEquals(new Address('fabien@symfony.com'), $v[0]);
-        $this->assertSame($helene, $v[1]);
-        $this->assertSame($thomas, $v[2]);
-        $this->assertEquals(new Address('lucas@symfony.com'), $v[3]);
-        $this->assertSame($caramel, $v[4]);
-
-        $e = new Email();
-        $e->addBcc('lucas@symfony.com', $caramel);
-        $this->assertCount(2, $e->getBcc());
-
-        $e = new Email();
-        $e->bcc('lucas@symfony.com');
-        $e->bcc($caramel);
-        $this->assertSame([$caramel], $e->getBcc());
-    }
-
-    public function testPriority()
-    {
-        $e = new Email();
-        $this->assertEquals(3, $e->getPriority());
-
-        $e->priority(1);
-        $this->assertEquals(1, $e->getPriority());
-        $e->priority(10);
-        $this->assertEquals(5, $e->getPriority());
-        $e->priority(-10);
-        $this->assertEquals(1, $e->getPriority());
-    }
-
-    public function testGenerateBodyThrowsWhenEmptyBody()
-    {
-        $this->expectException(\LogicException::class);
-        (new Email())->getBody();
-    }
-
-    public function testGetBody()
-    {
-        $e = new Email();
-        $e->setBody($text = new TextPart('text content'));
-        $this->assertEquals($text, $e->getBody());
-    }
-
-    public function testGenerateBody()
-    {
-        $text = new TextPart('text content');
-        $html = new TextPart('html content', 'utf-8', 'html');
-        $att = new DataPart($file = fopen(__DIR__.'/Fixtures/mimetypes/test', 'r'));
-        $img = new DataPart($image = fopen(__DIR__.'/Fixtures/mimetypes/test.gif', 'r'), 'test.gif');
-
-        $e = new Email();
-        $e->text('text content');
-        $this->assertEquals($text, $e->getBody());
-        $this->assertEquals('text content', $e->getTextBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $this->assertEquals($html, $e->getBody());
-        $this->assertEquals('html content', $e->getHtmlBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $this->assertEquals(new AlternativePart($text, $html), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content', 'iso-8859-1');
-        $e->text('text content', 'iso-8859-1');
-        $this->assertEquals('iso-8859-1', $e->getTextCharset());
-        $this->assertEquals('iso-8859-1', $e->getHtmlCharset());
-        $this->assertEquals(new AlternativePart(new TextPart('text content', 'iso-8859-1'), new TextPart('html content', 'iso-8859-1', 'html')), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $e->text('text content');
-        $this->assertEquals(new MixedPart($text, $att), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $e->html('html content');
-        $this->assertEquals(new MixedPart($html, $att), $e->getBody());
-
-        $e = new Email();
-        $e->attach($file);
-        $this->assertEquals(new MixedPart($att), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $e->attach($file);
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $html), $att), $e->getBody());
-
-        $e = new Email();
-        $e->html('html content');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $html), $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $this->assertEquals(new MixedPart($text, $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->html($content = 'html content <img src="test.gif">');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $fullhtml = new TextPart($content, 'utf-8', 'html');
-        $this->assertEquals(new MixedPart(new AlternativePart($text, $fullhtml), $att, $img), $e->getBody());
-
-        $e = new Email();
-        $e->html($content = 'html content <img src="cid:test.gif">');
-        $e->text('text content');
-        $e->attach($file);
-        $e->attach($image, 'test.gif');
-        $fullhtml = new TextPart($content, 'utf-8', 'html');
-        $inlinedimg = (new DataPart($image, 'test.gif'))->asInline();
-        $body = $e->getBody();
-        $this->assertInstanceOf(MixedPart::class, $body);
-        $this->assertCount(2, $related = $body->getParts());
-        $this->assertInstanceOf(RelatedPart::class, $related[0]);
-        $this->assertEquals($att, $related[1]);
-        $this->assertCount(2, $parts = $related[0]->getParts());
-        $this->assertInstanceOf(AlternativePart::class, $parts[0]);
-        $generatedHtml = $parts[0]->getParts()[1];
-        $this->assertStringContainsString('cid:'.$parts[1]->getContentId(), $generatedHtml->getBody());
-
-        $content = 'html content <img src="cid:test.gif">';
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, $content);
-        rewind($r);
-
-        $e = new Email();
-        $e->html($r);
-        // embedding the same image twice results in one image only in the email
-        $e->embed($image, 'test.gif');
-        $e->embed($image, 'test.gif');
-        $body = $e->getBody();
-        $this->assertInstanceOf(RelatedPart::class, $body);
-        // 2 parts only, not 3 (text + embedded image once)
-        $this->assertCount(2, $parts = $body->getParts());
-        $this->assertStringMatchesFormat('html content <img src=3D"cid:%s@symfony">', $parts[0]->bodyToString());
-    }
-
-    public function testAttachments()
-    {
-        $contents = file_get_contents($name = __DIR__.'/Fixtures/mimetypes/test', 'r');
-        $att = new DataPart($file = fopen($name, 'r'), 'test');
-        $inline = (new DataPart($contents, 'test'))->asInline();
-        $e = new Email();
-        $e->attach($file, 'test');
-        $e->embed($contents, 'test');
-        $this->assertEquals([$att, $inline], $e->getAttachments());
-
-        $att = DataPart::fromPath($name, 'test');
-        $inline = DataPart::fromPath($name, 'test')->asInline();
-        $e = new Email();
-        $e->attachFromPath($name);
-        $e->embedFromPath($name);
-        $this->assertEquals([$att->bodyToString(), $inline->bodyToString()], array_map(function (DataPart $a) { return $a->bodyToString(); }, $e->getAttachments()));
-        $this->assertEquals([$att->getPreparedHeaders(), $inline->getPreparedHeaders()], array_map(function (DataPart $a) { return $a->getPreparedHeaders(); }, $e->getAttachments()));
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $e = new Email();
-        $e->from('fabien@symfony.com');
-        $e->text($r);
-        $e->html($r);
-        $contents = file_get_contents($name = __DIR__.'/Fixtures/mimetypes/test', 'r');
-        $file = fopen($name, 'r');
-        $e->attach($file, 'test');
-        $expected = clone $e;
-        $n = unserialize(serialize($e));
-        $this->assertEquals($expected->getHeaders(), $n->getHeaders());
-        $this->assertEquals($e->getBody(), $n->getBody());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php
deleted file mode 100644
index a90fbb70..00000000
--- a/vendor/symfony/mime/Tests/Encoder/Base64EncoderTest.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Base64Encoder;
-
-class Base64EncoderTest extends TestCase
-{
-    /*
-    There's really no point in testing the entire base64 encoding to the
-    level QP encoding has been tested.  base64_encode() has been in PHP for
-    years.
-    */
-
-    public function testInputOutputRatioIs3to4Bytes()
-    {
-        /*
-        RFC 2045, 6.8
-
-         The encoding process represents 24-bit groups of input bits as output
-         strings of 4 encoded characters.  Proceeding from left to right, a
-         24-bit input group is formed by concatenating 3 8bit input groups.
-         These 24 bits are then treated as 4 concatenated 6-bit groups, each
-         of which is translated into a single digit in the base64 alphabet.
-         */
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals('MTIz', $encoder->encodeString('123'), '3 bytes of input should yield 4 bytes of output');
-        $this->assertEquals('MTIzNDU2', $encoder->encodeString('123456'), '6 bytes in input should yield 8 bytes of output');
-        $this->assertEquals('MTIzNDU2Nzg5', $encoder->encodeString('123456789'), '%s: 9 bytes in input should yield 12 bytes of output');
-    }
-
-    public function testPadLength()
-    {
-        /*
-        RFC 2045, 6.8
-
-       Special processing is performed if fewer than 24 bits are available
-       at the end of the data being encoded.  A full encoding quantum is
-       always completed at the end of a body.  When fewer than 24 input bits
-       are available in an input group, zero bits are added (on the right)
-       to form an integral number of 6-bit groups.  Padding at the end of
-       the data is performed using the "=" character.  Since all base64
-       input is an integral number of octets, only the following cases can
-       arise: (1) the final quantum of encoding input is an integral
-       multiple of 24 bits; here, the final unit of encoded output will be
-       an integral multiple of 4 characters with no "=" padding, (2) the
-       final quantum of encoding input is exactly 8 bits; here, the final
-       unit of encoded output will be two characters followed by two "="
-       padding characters, or (3) the final quantum of encoding input is
-       exactly 16 bits; here, the final unit of encoded output will be three
-       characters followed by one "=" padding character.
-       */
-
-        $encoder = new Base64Encoder();
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C', random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{2}==$~', $encoder->encodeString($input), 'A single byte should have 2 bytes of padding');
-        }
-
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C*', random_int(0, 255), random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{3}=$~', $encoder->encodeString($input), 'Two bytes should have 1 byte of padding');
-        }
-
-        for ($i = 0; $i < 30; ++$i) {
-            $input = pack('C*', random_int(0, 255), random_int(0, 255), random_int(0, 255));
-            $this->assertRegExp('~^[a-zA-Z0-9/\+]{4}$~', $encoder->encodeString($input), 'Three bytes should have no padding');
-        }
-    }
-
-    public function testMaximumLineLengthIs76Characters()
-    {
-        /*
-         The encoded output stream must be represented in lines of no more
-         than 76 characters each.  All line breaks or other characters not
-         found in Table 1 must be ignored by decoding software.
-         */
-
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0xNTk9QUVJTVFVWV1hZWjEyMzQ1'."\r\n".//76 *
-        'Njc4OTBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3'.//38
-        'h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla'."\r\n".//76 *
-        'MTIzNDU2Nzg5MEFCQ0RFRkdISUpLTE1OT1BRUl'.//38
-        'NUVVZXWFla';                                       //48
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input), 'Lines should be no more than 76 characters');
-    }
-
-    public function testMaximumLineLengthCanBeSpecified()
-    {
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0'."\r\n".//50 *
-        'xNTk9QUVJTVFVWV1hZWjEyMzQ1Njc4OTBhYmNk'.//38
-        'ZWZnaGlqa2xt'."\r\n".//50 *
-        'bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1'.//38
-        'BRUlNUVVZXWF'."\r\n".//50 *
-        'laMTIzNDU2Nzg5MEFCQ0RFRkdISUpLTE1OT1BR'.//38
-        'UlNUVVZXWFla';                                     //50 *
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 0, 50), 'Lines should be no more than 100 characters');
-    }
-
-    public function testFirstLineLengthCanBeDifferent()
-    {
-        $input =
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        '1234567890'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-        $output =
-        'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQk'.//38
-        'NERUZHSElKS0xNTk9QU'."\r\n".//57 *
-        'VJTVFVWV1hZWjEyMzQ1Njc4OTBhYmNkZWZnaGl'.//38
-        'qa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLT'."\r\n".//76 *
-        'E1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MEFCQ0R'.//38
-        'FRkdISUpLTE1OT1BRUlNUVVZXWFla';                    //67
-
-        $encoder = new Base64Encoder();
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 19), 'First line offset is 19 so first line should be 57 chars long');
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php
deleted file mode 100644
index 34bfe0d4..00000000
--- a/vendor/symfony/mime/Tests/Encoder/Base64MimeHeaderEncoderTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Base64MimeHeaderEncoder;
-
-class Base64MimeHeaderEncoderTest extends TestCase
-{
-    public function testNameIsB()
-    {
-        $this->assertEquals('B', (new Base64MimeHeaderEncoder())->getName());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php
deleted file mode 100644
index bf08b2f0..00000000
--- a/vendor/symfony/mime/Tests/Encoder/QpEncoderTest.php
+++ /dev/null
@@ -1,213 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\QpEncoder;
-
-class QpEncoderTest extends TestCase
-{
-    /* -- RFC 2045, 6.7 --
-    (1)   (General 8bit representation) Any octet, except a CR or
-                    LF that is part of a CRLF line break of the canonical
-                    (standard) form of the data being encoded, may be
-                    represented by an "=" followed by a two digit
-                    hexadecimal representation of the octet's value.  The
-                    digits of the hexadecimal alphabet, for this purpose,
-                    are "0123456789ABCDEF".  Uppercase letters must be
-                    used; lowercase letters are not allowed.  Thus, for
-                    example, the decimal value 12 (US-ASCII form feed) can
-                    be represented by "=0C", and the decimal value 61 (US-
-                    ASCII EQUAL SIGN) can be represented by "=3D".  This
-                    rule must be followed except when the following rules
-                    allow an alternative encoding.
-                    */
-
-    public function testPermittedCharactersAreNotEncoded()
-    {
-        /* -- RFC 2045, 6.7 --
-        (2)   (Literal representation) Octets with decimal values of
-                    33 through 60 inclusive, and 62 through 126, inclusive,
-                    MAY be represented as the US-ASCII characters which
-                    correspond to those octets (EXCLAMATION POINT through
-                    LESS THAN, and GREATER THAN through TILDE,
-                    respectively).
-                    */
-
-        $encoder = new QpEncoder();
-        foreach (array_merge(range(33, 60), range(62, 126)) as $ordinal) {
-            $char = \chr($ordinal);
-            $this->assertSame($char, $encoder->encodeString($char));
-        }
-    }
-
-    public function testWhiteSpaceAtLineEndingIsEncoded()
-    {
-        /* -- RFC 2045, 6.7 --
-        (3)   (White Space) Octets with values of 9 and 32 MAY be
-                    represented as US-ASCII TAB (HT) and SPACE characters,
-                    respectively, but MUST NOT be so represented at the end
-                    of an encoded line.  Any TAB (HT) or SPACE characters
-                    on an encoded line MUST thus be followed on that line
-                    by a printable character.  In particular, an "=" at the
-                    end of an encoded line, indicating a soft line break
-                    (see rule #5) may follow one or more TAB (HT) or SPACE
-                    characters.  It follows that an octet with decimal
-                    value 9 or 32 appearing at the end of an encoded line
-                    must be represented according to Rule #1.  This rule is
-                    necessary because some MTAs (Message Transport Agents,
-                    programs which transport messages from one user to
-                    another, or perform a portion of such transfers) are
-                    known to pad lines of text with SPACEs, and others are
-                    known to remove "white space" characters from the end
-                    of a line.  Therefore, when decoding a Quoted-Printable
-                    body, any trailing white space on a line must be
-                    deleted, as it will necessarily have been added by
-                    intermediate transport agents.
-                    */
-
-        $encoder = new QpEncoder();
-
-        $HT = \chr(0x09); // 9
-        $SPACE = \chr(0x20); // 32
-
-        // HT
-        $string = 'a'.$HT.$HT."\r\n".'b';
-        $this->assertEquals('a'.$HT.'=09'."\r\n".'b', $encoder->encodeString($string));
-
-        // SPACE
-        $string = 'a'.$SPACE.$SPACE."\r\n".'b';
-        $this->assertEquals('a'.$SPACE.'=20'."\r\n".'b', $encoder->encodeString($string));
-    }
-
-    public function testCRLFIsLeftAlone()
-    {
-        /*
-        (4)   (Line Breaks) A line break in a text body, represented
-                    as a CRLF sequence in the text canonical form, must be
-                    represented by a (RFC 822) line break, which is also a
-                    CRLF sequence, in the Quoted-Printable encoding.  Since
-                    the canonical representation of media types other than
-                    text do not generally include the representation of
-                    line breaks as CRLF sequences, no hard line breaks
-                    (i.e. line breaks that are intended to be meaningful
-                    and to be displayed to the user) can occur in the
-                    quoted-printable encoding of such types.  Sequences
-                    like "=0D", "=0A", "=0A=0D" and "=0D=0A" will routinely
-                    appear in non-text data represented in quoted-
-                    printable, of course.
-
-                    Note that many implementations may elect to encode the
-                    local representation of various content types directly
-                    rather than converting to canonical form first,
-                    encoding, and then converting back to local
-                    representation.  In particular, this may apply to plain
-                    text material on systems that use newline conventions
-                    other than a CRLF terminator sequence.  Such an
-                    implementation optimization is permissible, but only
-                    when the combined canonicalization-encoding step is
-                    equivalent to performing the three steps separately.
-                    */
-
-        $encoder = new QpEncoder();
-        $string = 'a'."\r\n".'b'."\r\n".'c'."\r\n";
-        $this->assertEquals($string, $encoder->encodeString($string));
-    }
-
-    public function testLinesLongerThan76CharactersAreSoftBroken()
-    {
-        /*
-        (5)   (Soft Line Breaks) The Quoted-Printable encoding
-                    REQUIRES that encoded lines be no more than 76
-                    characters long.  If longer lines are to be encoded
-                    with the Quoted-Printable encoding, "soft" line breaks
-                    must be used.  An equal sign as the last character on a
-                    encoded line indicates such a non-significant ("soft")
-                    line break in the encoded text.
-                    */
-
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 140);
-        $output = '';
-        for ($i = 0; $i < 140; ++$i) {
-            // we read 4 chars at a time (max is 75)
-            if (18 * 4 /* 72 */ == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input));
-    }
-
-    public function testMaxLineLengthCanBeSpecified()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 100);
-        $output = '';
-        for ($i = 0; $i < 100; ++$i) {
-            // we read 4 chars at a time (max is 53)
-            if (13 * 4 /* 52 */ == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 0, 54));
-    }
-
-    public function testBytesBelowPermittedRangeAreEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        foreach (range(0, 32) as $ordinal) {
-            $char = \chr($ordinal);
-            $this->assertEquals(sprintf('=%02X', $ordinal), $encoder->encodeString($char));
-        }
-    }
-
-    public function testDecimalByte61IsEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        $this->assertEquals('=3D', $encoder->encodeString('='));
-    }
-
-    public function testBytesAbovePermittedRangeAreEncoded()
-    {
-        // According to Rule (1 & 2)
-        $encoder = new QpEncoder();
-        foreach (range(127, 255) as $ordinal) {
-            $this->assertSame(sprintf('=%02X', $ordinal), $encoder->encodeString(\chr($ordinal), 'iso-8859-1'));
-        }
-    }
-
-    public function testFirstLineLengthCanBeDifferent()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 140);
-        $output = '';
-        for ($i = 0; $i < 140; ++$i) {
-            // we read 4 chars at a time (max is 54 for the first line and 75 for the second one)
-            if (13 * 4 == $i || 13 * 4 + 18 * 4 == $i) {
-                $output .= "=\r\n";
-            }
-            $output .= 'a';
-        }
-        $this->assertEquals($output, $encoder->encodeString($input, 'utf-8', 22), 'First line should start at offset 22 so can only have max length 54');
-    }
-
-    public function testTextIsPreWrapped()
-    {
-        $encoder = new QpEncoder();
-        $input = str_repeat('a', 70)."\r\n".str_repeat('a', 70)."\r\n".str_repeat('a', 70);
-        $this->assertEquals($input, $encoder->encodeString($input));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php b/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php
deleted file mode 100644
index f075452c..00000000
--- a/vendor/symfony/mime/Tests/Encoder/QpMimeHeaderEncoderTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\QpMimeHeaderEncoder;
-
-class QpMimeHeaderEncoderTest extends TestCase
-{
-    public function testNameIsQ()
-    {
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('Q', $encoder->getName());
-    }
-
-    public function testSpaceAndTabNeverAppear()
-    {
-        /* -- RFC 2047, 4.
-         Only a subset of the printable ASCII characters may be used in
-        'encoded-text'.  Space and tab characters are not allowed, so that
-        the beginning and end of an 'encoded-word' are obvious.
-        */
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertNotRegExp('~[ \t]~', $encoder->encodeString("a \t b"), 'encoded-words in headers cannot contain LWSP as per RFC 2047.');
-    }
-
-    public function testSpaceIsRepresentedByUnderscore()
-    {
-        /* -- RFC 2047, 4.2.
-        (2) The 8-bit hexadecimal value 20 (e.g., ISO-8859-1 SPACE) may be
-        represented as "_" (underscore, ASCII 95.).  (This character may
-        not pass through some internetwork mail gateways, but its use
-        will greatly enhance readability of "Q" encoded data with mail
-        readers that do not support this encoding.)  Note that the "_"
-        always represents hexadecimal 20, even if the SPACE character
-        occupies a different code position in the character set in use.
-        */
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('a_b', $encoder->encodeString('a b'), 'Spaces can be represented by more readable underscores as per RFC 2047.');
-    }
-
-    public function testEqualsAndQuestionAndUnderscoreAreEncoded()
-    {
-        /* -- RFC 2047, 4.2.
-        (3) 8-bit values which correspond to printable ASCII characters other
-        than "=", "?", and "_" (underscore), MAY be represented as those
-        characters.  (But see section 5 for restrictions.)  In
-        particular, SPACE and TAB MUST NOT be represented as themselves
-        within encoded words.
-        */
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('=3D=3F=5F', $encoder->encodeString('=?_'), 'Chars =, ? and _ (underscore) may not appear as per RFC 2047.');
-    }
-
-    public function testParensAndQuotesAreEncoded()
-    {
-        /* -- RFC 2047, 5 (2).
-         A "Q"-encoded 'encoded-word' which appears in a 'comment' MUST NOT
-        contain the characters "(", ")" or "
-        */
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals('=28=22=29', $encoder->encodeString('(")'), 'Chars (, " (DQUOTE) and ) may not appear as per RFC 2047.');
-    }
-
-    public function testOnlyCharactersAllowedInPhrasesAreUsed()
-    {
-        /* -- RFC 2047, 5.
-        (3) As a replacement for a 'word' entity within a 'phrase', for example,
-        one that precedes an address in a From, To, or Cc header.  The ABNF
-        definition for 'phrase' from RFC 822 thus becomes:
-
-        phrase = 1*( encoded-word / word )
-
-        In this case the set of characters that may be used in a "Q"-encoded
-        'encoded-word' is restricted to: <upper and lower case ASCII
-        letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_"
-        (underscore, ASCII 95.)>.  An 'encoded-word' that appears within a
-        'phrase' MUST be separated from any adjacent 'word', 'text' or
-        'special' by 'linear-white-space'.
-        */
-
-        $allowedBytes = array_merge(
-            range(\ord('a'), \ord('z')), range(\ord('A'), \ord('Z')),
-            range(\ord('0'), \ord('9')),
-            [\ord('!'), \ord('*'), \ord('+'), \ord('-'), \ord('/')]
-        );
-        $encoder = new QpMimeHeaderEncoder();
-        foreach (range(0x00, 0xFF) as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = $encoder->encodeString($char, 'iso-8859-1');
-            if (\in_array($byte, $allowedBytes)) {
-                $this->assertEquals($char, $encodedChar, 'Character '.$char.' should not be encoded.');
-            } elseif (0x20 == $byte) {
-                // special case
-                $this->assertEquals('_', $encodedChar, 'Space character should be replaced.');
-            } else {
-                $this->assertEquals(sprintf('=%02X', $byte), $encodedChar, 'Byte '.$byte.' should be encoded.');
-            }
-        }
-    }
-
-    public function testEqualsNeverAppearsAtEndOfLine()
-    {
-        /* -- RFC 2047, 5 (3).
-        The 'encoded-text' in an 'encoded-word' must be self-contained;
-        'encoded-text' MUST NOT be continued from one 'encoded-word' to
-        another.  This implies that the 'encoded-text' portion of a "B"
-        'encoded-word' will be a multiple of 4 characters long; for a "Q"
-        'encoded-word', any "=" character that appears in the 'encoded-text'
-        portion will be followed by two hexadecimal characters.
-        */
-
-        $input = str_repeat('a', 140);
-
-        $output = '';
-        $seq = 0;
-        for (; $seq < 140; ++$seq) {
-            // compute the end of line (multiple of 4 chars)
-            if (18 * 4 === $seq) {
-                $output .= "\r\n"; // =\r\n
-            }
-            $output .= 'a';
-        }
-
-        $encoder = new QpMimeHeaderEncoder();
-        $this->assertEquals($output, $encoder->encodeString($input));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php b/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php
deleted file mode 100644
index edcb15fc..00000000
--- a/vendor/symfony/mime/Tests/Encoder/Rfc2231EncoderTest.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Encoder;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Encoder\Rfc2231Encoder;
-
-class Rfc2231EncoderTest extends TestCase
-{
-    private $rfc2045Token = '/^[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+$/D';
-
-    /* --
-    This algorithm is described in RFC 2231, but is barely touched upon except
-    for mentioning bytes can be represented as their octet values (e.g. %20 for
-    the SPACE character).
-
-    The tests here focus on how to use that representation to always generate text
-    which matches RFC 2045's definition of "token".
-    */
-
-    public function testEncodingAsciiCharactersProducesValidToken()
-    {
-        $string = '';
-        foreach (range(0x00, 0x7F) as $octet) {
-            $char = pack('C', $octet);
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string);
-
-        foreach (explode("\r\n", $encoded) as $line) {
-            $this->assertRegExp($this->rfc2045Token, $line, 'Encoder should always return a valid RFC 2045 token.');
-        }
-    }
-
-    public function testEncodingNonAsciiCharactersProducesValidToken()
-    {
-        $string = '';
-        foreach (range(0x80, 0xFF) as $octet) {
-            $char = pack('C', $octet);
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string);
-
-        foreach (explode("\r\n", $encoded) as $line) {
-            $this->assertRegExp($this->rfc2045Token, $line, 'Encoder should always return a valid RFC 2045 token.');
-        }
-    }
-
-    public function testMaximumLineLengthCanBeSet()
-    {
-        $string = '';
-        for ($x = 0; $x < 200; ++$x) {
-            $char = 'a';
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string, 'utf-8', 0, 75);
-
-        // 72 here and not 75 as we read 4 chars at a time
-        $this->assertEquals(
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 56),
-            $encoded,
-            'Lines should be wrapped at each 72 characters'
-        );
-    }
-
-    public function testFirstLineCanHaveShorterLength()
-    {
-        $string = '';
-        for ($x = 0; $x < 200; ++$x) {
-            $char = 'a';
-            $string .= $char;
-        }
-        $encoder = new Rfc2231Encoder();
-        $encoded = $encoder->encodeString($string, 'utf-8', 24, 72);
-
-        $this->assertEquals(
-            str_repeat('a', 48)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 72)."\r\n".
-            str_repeat('a', 8),
-            $encoded,
-            'First line should be 24 bytes shorter than the others.'
-        );
-    }
-
-    public function testEncodingAndDecodingSamples()
-    {
-        $dir = realpath(__DIR__.'/../Fixtures/samples/charsets');
-        $sampleFp = opendir($dir);
-        while (false !== $encoding = readdir($sampleFp)) {
-            if ('.' == substr($encoding, 0, 1)) {
-                continue;
-            }
-
-            $encoder = new Rfc2231Encoder();
-            if (is_dir($dir.'/'.$encoding)) {
-                $fileFp = opendir($dir.'/'.$encoding);
-                while (false !== $sampleFile = readdir($fileFp)) {
-                    if ('.' == substr($sampleFile, 0, 1)) {
-                        continue;
-                    }
-
-                    $text = file_get_contents($dir.'/'.$encoding.'/'.$sampleFile);
-                    $encodedText = $encoder->encodeString($text, $encoding);
-                    $this->assertEquals(
-                        urldecode(implode('', explode("\r\n", $encodedText))), $text,
-                        'Encoded string should decode back to original string for sample '.$dir.'/'.$encoding.'/'.$sampleFile
-                    );
-                }
-                closedir($fileFp);
-            }
-        }
-        closedir($sampleFp);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php
deleted file mode 100644
index 07427328..00000000
--- a/vendor/symfony/mime/Tests/FileBinaryMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\FileBinaryMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-class FileBinaryMimeTypeGuesserTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new FileBinaryMimeTypeGuesser();
-    }
-}
diff --git a/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php b/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php
deleted file mode 100644
index d2e6930a..00000000
--- a/vendor/symfony/mime/Tests/FileinfoMimeTypeGuesserTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\FileinfoMimeTypeGuesser;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-
-/**
- * @requires extension fileinfo
- */
-class FileinfoMimeTypeGuesserTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new FileinfoMimeTypeGuesser();
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension b/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension
deleted file mode 100644
index 4d1ae35b..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/mimetypes/.unknownextension
+++ /dev/null
@@ -1 +0,0 @@
-f
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/directory/.empty b/vendor/symfony/mime/Tests/Fixtures/mimetypes/directory/.empty
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/other-file.example b/vendor/symfony/mime/Tests/Fixtures/mimetypes/other-file.example
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test b/vendor/symfony/mime/Tests/Fixtures/mimetypes/test
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35
jcmZ?wbh9u|WMp7uXkcLY4+c66KmZb9U}AD%WUvMRyAlZ1

diff --git a/vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif b/vendor/symfony/mime/Tests/Fixtures/mimetypes/test.gif
deleted file mode 100644
index b636f4b8df536b0a85e7cea1a6cf3f0bd3179b96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35
jcmZ?wbh9u|WMp7uXkcLY4+c66KmZb9U}AD%WUvMRyAlZ1

diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt
deleted file mode 100644
index c2923deb..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-2022-jp/one.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-ISO-2022-JPは、インターネット上(特に電子メール)などで使われる日本の文字用の文字符号化方式。ISO/IEC 2022のエスケープシーケンスを利用して文字集合を切り替える7ビットのコードであることを特徴とする (アナウンス機能のエスケープシーケンスは省略される)。俗に「JISコード」と呼ばれることもある。
-
-概要
-日本語表記への利用が想定されている文字コードであり、日本語の利用されるネットワークにおいて、日本の規格を応用したものである。また文字集合としては、日本語で用いられる漢字、ひらがな、カタカナはもちろん、ラテン文字、ギリシア文字、キリル文字なども含んでおり、学術や産業の分野での利用も考慮たものとなっている。規格名に、ISOの日本語の言語コードであるjaではなく、国・地域名コードのJPが示されているゆえんである。
-文字集合としてJIS X 0201のC0集合(制御文字)、JIS X 0201のラテン文字集合、ISO 646の国際基準版図形文字、JIS X 0208の1978年版(JIS C 6226-1978)と1983年および1990年版が利用できる。JIS X 0201の片仮名文字集合は利用できない。1986年以降、日本の電子メールで用いられてきたJUNETコードを、村井純・Mark Crispin・Erik van der Poelが1993年にRFC化したもの(RFC 1468)。後にJIS X 0208:1997の附属書2としてJISに規定された。MIMEにおける文字符号化方式の識別用の名前として IANA に登録されている。
-なお、符号化の仕様についてはISO/IEC 2022#ISO-2022-JPも参照。
-
-ISO-2022-JPと非標準的拡張使用
-「JISコード」(または「ISO-2022-JP」)というコード名の規定下では、その仕様通りの使用が求められる。しかし、Windows OS上では、実際にはCP932コード (MicrosoftによるShift JISを拡張した亜種。ISO-2022-JP規定外文字が追加されている。)による独自拡張(の文字)を断りなく使うアプリケーションが多い。この例としてInternet ExplorerやOutlook Expressがある。また、EmEditor、秀丸エディタやThunderbirdのようなMicrosoft社以外のWindowsアプリケーションでも同様の場合がある。この場合、ISO-2022-JPの範囲外の文字を使ってしまうと、異なる製品間では未定義不明文字として認識されるか、もしくは文字化けを起こす原因となる。そのため、Windows用の電子メールクライアントであっても独自拡張の文字を使用すると警告を出したり、あえて使えないように制限しているものも存在する。さらにはISO-2022-JPの範囲内であってもCP932は非標準文字(FULLWIDTH TILDE等)を持つので文字化けの原因になり得る。
-また、符号化方式名をISO-2022-JPとしているのに、文字集合としてはJIS X 0212 (いわゆる補助漢字) やJIS X 0201の片仮名文字集合 (いわゆる半角カナ) をも符号化している例があるが、ISO-2022-JPではこれらの文字を許容していない。これらの符号化は独自拡張の実装であり、中にはISO/IEC 2022の仕様に準拠すらしていないものもある[2]。従って受信側の電子メールクライアントがこれらの独自拡張に対応していない場合、その文字あるいはその文字を含む行、時にはテキスト全体が文字化けすることがある。
-
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt
deleted file mode 100644
index 3101178a..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/iso-8859-1/one.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Op mat eraus hinnen beschte, rou zënne schaddreg ké. Ké sin Eisen Kaffi prächteg, den haut esou Fielse wa, Well zielen d'Welt am dir. Aus grousse rëschten d'Stroos do, as dat Kléder gewëss d'Kàchen. Schied gehéiert d'Vioule net hu, rou ke zënter Säiten d'Hierz. Ze eise Fletschen mat, gei as gréng d'Lëtzebuerger. Wäit räich no mat.
-
-Säiten d'Liewen aus en. Un gëtt bléit lossen wee, da wéi alle weisen Kolrettchen. Et deser d'Pan d'Kirmes vun, en wuel Benn rëschten méi. En get drem ménger beschte, da wär Stad welle. Nun Dach d'Pied do, mä gét ruffen gehéiert. Ze onser ugedon fir, d'Liewen Plett'len ech no, si Räis wielen bereet wat. Iwer spilt fir jo.
-
-An hin däischter Margréitchen, eng ke Frot brommt, vu den Räis néierens. Da hir Hunn Frot nozegon, rout Fläiß Himmel zum si, net gutt Kaffi Gesträich fu. Vill lait Gaart sou wa, Land Mamm Schuebersonndeg rei do. Gei geet Minutt en, gei d'Leit beschte Kolrettchen et, Mamm fergiess un hun.
-
-Et gutt Heck kommen oft, Lann rëscht rei um, Hunn rëscht schéinste ke der. En lait zielen schnéiwäiss hir, fu rou botze éiweg Minutt, rem fest gudden schaddreg en. Noper bereet Margréitchen mat op, dem denkt d'Leit d'Vioule no, oft ké Himmel Hämmel. En denkt blénken Fréijor net, Gart Schiet d'Natur no wou. No hin Ierd Frot d'Kirmes. Hire aremt un rou, ké den éiweg wielen Milliounen.
-
-Mir si Hunn Blénkeg. Ké get ston derfir d'Kàchen. Haut d'Pan fu ons, dé frou löschteg d'Meereische rei. Sou op wuel Léift. Stret schlon grousse gin hu. Mä denkt d'Leit hinnen net, ké gét haut fort rëscht.
-
-Koum d'Pan hannendrun ass ké, ké den brét Kaffi geplot. Schéi Hären d'Pied fu gét, do d'Mier néierens bei. Rëm päift Hämmel am, wee Engel beschéngt mä. Brommt klinzecht der ke, wa rout jeitzt dén. Get Zalot d'Vioule däischter da, jo fir Bänk päift duerch, bei d'Beem schéinen Plett'len jo. Den haut Faarwen ze, eng en Biereg Kirmesdag, um sin alles Faarwen d'Vioule.
-
-Eng Hunn Schied et, wat wa Frot fest gebotzt. Bei jo bleiwe ruffen Klarinett. Un Feld klinzecht gét, rifft Margréitchen rem ke. Mir dé Noper duurch gewëss, ston sech kille sin en. Gei Stret d'Wise um, Haus Gart wee as. Monn ménger an blo, wat da Gart gefällt Hämmelsbrot.
-
-Brommt geplot och ze, dat wa Räis Well Kaffi. Do get spilt prächteg, as wär kille bleiwe gewalteg. Onser frësch Margréitchen rem ke, blo en huet ugedon. Onser Hemecht wär de, hu eraus d'Sonn dat, eise deser hannendrun da och.
-
-As durch Himmel hun, no fest iw'rem schéinste mir, Hunn séngt Hierz ke zum. Séngt iw'rem d'Natur zum an. Ke wär gutt Grénge. Kënnt gudden prächteg mä rei. Dé dir Blénkeg Klarinett Kolrettchen, da fort muerges d'Kanner wou, main Feld ruffen vu wéi. Da gin esou Zalot gewalteg, gét vill Hemecht blénken dé.
-
-Haut gréng nun et, nei vu Bass gréng d'Gaassen. Fest d'Beem uechter si gin. Oft vu sinn wellen kréien. Et ass lait Zalot schéinen.
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt
deleted file mode 100644
index 26c94d5d..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/one.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Код одно гринспана руководишь на. Его вы знания движение. Ты две начать
-одиночку, сказать основатель удовольствием но миф. Бы какие система тем.
-Полностью использует три мы, человек клоунов те нас, бы давать творческую
-эзотерическая шеф.
-
-Мог не помнить никакого сэкономленного, две либо какие пишите бы. Должен
-компанию кто те, этот заключалась проектировщик не ты. Глупые периоды ты
-для. Вам который хороший он. Те любых кремния концентрируются мог,
-собирать принадлежите без вы.
-
-Джоэла меньше хорошего вы миф, за тем году разработки. Даже управляющим
-руководители был не. Три коде выпускать заботиться ну. То его система
-удовольствием безостановочно, или ты главной процессорах. Мы без джоэл
-знания получат, статьи остальные мы ещё.
-
-Них русском касается поскольку по, образование должником
-систематизированный ну мои. Прийти кандидата университет но нас, для бы
-должны никакого, биг многие причин интервьюирования за.
-
-Тем до плиту почему. Вот учёт такие одного бы, об биг разным внешних
-промежуток. Вас до какому возможностей безответственный, были погодите бы
-его, по них глупые долгий количества.
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt
deleted file mode 100644
index c81ccd59..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/three.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-Αν ήδη διάβασε γλιτώσει μεταγλωτίσει, αυτήν θυμάμαι μου μα. Την κατάσταση χρησιμοποίησέ να! Τα διαφορά φαινόμενο διολισθήσεις πες, υψηλότερη προκαλείς περισσότερες όχι κι. Με ελέγχου γίνεται σας, μικρής δημιουργούν τη του. Τις τα γράψει εικόνες απαράδεκτη?
-
-Να ότι πρώτοι απαραίτητο. Άμεση πετάνε κακόκεφος τον ώς, να χώρου πιθανότητες του. Το μέχρι ορίστε λιγότερους σας. Πω ναί φυσικά εικόνες.
-
-Μου οι κώδικα αποκλειστικούς, λες το μάλλον συνεχώς. Νέου σημεία απίστευτα σας μα. Χρόνου μεταγλωτιστής σε νέα, τη τις πιάνει μπορούσες προγραμματιστές. Των κάνε βγαίνει εντυπωσιακό τα? Κρατάει τεσσαρών δυστυχώς της κι, ήδη υψηλότερη εξακολουθεί τα?
-
-Ώρα πετάνε μπορούσε λιγότερους αν, τα απαράδεκτη συγχωνευτεί ροή. Τη έγραψες συνηθίζουν σαν. Όλα με υλικό στήλες χειρότερα. Ανώδυνη δουλέψει επί ως, αν διαδίκτυο εσωτερικών παράγοντες από. Κεντρικό επιτυχία πες το.
-
-Πω ναι λέει τελειώσει, έξι ως έργων τελειώσει. Με αρχεία βουτήξουν ανταγωνιστής ώρα, πολύ γραφικά σελίδων τα στη. Όρο οέλεγχος δημιουργούν δε, ας θέλεις ελέγχου συντακτικό όρο! Της θυμάμαι επιδιόρθωση τα. Για μπορούσε περισσότερο αν, μέγιστη σημαίνει αποφάσισε τα του, άτομο αποτελέσει τι στα.
-
-Τι στην αφήσεις διοίκηση στη. Τα εσφαλμένη δημιουργια επιχείριση έξι! Βήμα μαγικά εκτελέσει ανά τη. Όλη αφήσεις συνεχώς εμπορικά αν, το λες κόλπα επιτυχία. Ότι οι ζώνη κειμένων. Όρο κι ρωτάει γραμμής πελάτες, τελειώσει διολισθήσεις καθυστερούσε αν εγώ? Τι πετούν διοίκηση προβλήματα ήδη.
-
-Τη γλιτώσει αποθηκευτικού μια. Πω έξι δημιουργια πιθανότητες, ως πέντε ελέγχους εκτελείται λες. Πως ερωτήσεις διοικητικό συγκεντρωμένοι οι, ας συνεχώς διοικητικό αποστηθίσει σαν. Δε πρώτες συνεχώς διολισθήσεις έχω, από τι κανένας βουτήξουν, γειτονιάς προσεκτικά ανταγωνιστής κι σαν.
-
-Δημιουργια συνηθίζουν κλπ τι? Όχι ποσοστό διακοπής κι. Κλπ φακέλους δεδομένη εξοργιστικά θα? Υποψήφιο καθορίζουν με όλη, στα πήρε προσοχή εταιρείες πω, ώς τον συνάδελφος διοικητικό δημιουργήσεις! Δούλευε επιτίθενται σας θα, με ένας παραγωγικής ένα, να ναι σημεία μέγιστη απαράδεκτη?
-
-Σας τεσσαρών συνεντεύξης τη, αρπάζεις σίγουρος μη για', επί τοπικές εντολές ακούσει θα? Ως δυστυχής μεταγλωτιστής όλη, να την είχαν σφάλμα απαραίτητο! Μην ώς άτομο διορθώσει χρησιμοποιούνταν. Δεν τα κόλπα πετάξαμε, μη που άγχος υόρκη άμεση, αφού δυστυχώς διακόψουμε όρο αν! Όλη μαγικά πετάνε επιδιορθώσεις δε, ροή φυσικά αποτελέσει πω.
-
-Άπειρα παραπάνω φαινόμενο πω ώρα, σαν πόρτες κρατήσουν συνηθίζουν ως. Κι ώρα τρέξει είχαμε εφαρμογή. Απλό σχεδιαστής μεταγλωτιστής ας επί, τις τα όταν έγραψες γραμμής? Όλα κάνεις συνάδελφος εργαζόμενοι θα, χαρτιού χαμηλός τα ροή. Ως ναι όροφο έρθει, μην πελάτες αποφάσισε μεταφραστής με, να βιαστικά εκδόσεις αναζήτησης λες. Των φταίει εκθέσεις προσπαθήσεις οι, σπίτι αποστηθίσει ας λες?
-
-Ώς που υπηρεσία απαραίτητο δημιουργείς. Μη άρα χαρά καθώς νύχτας, πω ματ μπουν είχαν. Άμεση δημιουργείς ώς ροή, γράψει γραμμής σίγουρος στα τι! Αν αφού πρώτοι εργαζόμενων ναί.
-
-Άμεση διορθώσεις με δύο? Έχουν παράδειγμα των θα, μου έρθει θυμάμαι περισσότερο το. Ότι θα αφού χρειάζονται περισσότερες. Σαν συνεχώς περίπου οι.
-
-Ώς πρώτης πετάξαμε λες, όρο κι πρώτες ζητήσεις δυστυχής. Ανά χρόνου διακοπή επιχειρηματίες ας, ώς μόλις άτομο χειρότερα όρο, κρατάει σχεδιαστής προσπαθήσεις νέο το. Πουλάς προσθέσει όλη πω, τύπου χαρακτηριστικό εγώ σε, πω πιο δούλευε αναζήτησης? Αναφορά δίνοντας σαν μη, μάθε δεδομένη εσωτερικών με ναι, αναφέρονται περιβάλλοντος ώρα αν. Και λέει απόλαυσε τα, που το όροφο προσπαθούν?
-
-Πάντα χρόνου χρήματα ναι το, σαν σωστά θυμάμαι σκεφτείς τα. Μα αποτελέσει ανεπιθύμητη την, πιο το τέτοιο ατόμου, τη των τρόπο εργαλείων επιδιόρθωσης. Περιβάλλον παραγωγικής σου κι, κλπ οι τύπου κακόκεφους αποστηθίσει, δε των πλέον τρόποι. Πιθανότητες χαρακτηριστικών σας κι, γραφικά δημιουργήσεις μια οι, πω πολλοί εξαρτάται προσεκτικά εδώ. Σταματάς παράγοντες για' ώς, στις ρωτάει το ναι! Καρέκλα ζητήσεις συνδυασμούς τη ήδη!
-
-Για μαγικά συνεχώς ακούσει το. Σταματάς προϊόντα βουτήξουν ώς ροή. Είχαν πρώτες οι ναι, μα λες αποστηθίσει ανακαλύπτεις. Όροφο άλγεβρα παραπάνω εδώ τη, πρόσληψη λαμβάνουν καταλάθος ήδη ας? Ως και εισαγωγή κρατήσουν, ένας κακόκεφους κι μας, όχι κώδικάς παίξουν πω. Πω νέα κρατάει εκφράσουν, τότε τελικών τη όχι, ας της τρέξει αλλάζοντας αποκλειστικούς.
-
-Ένας βιβλίο σε άρα, ναι ως γράψει ταξινομεί διορθώσεις! Εδώ να γεγονός συγγραφείς, ώς ήδη διακόψουμε επιχειρηματίες? Ότι πακέτων εσφαλμένη κι, θα όρο κόλπα παραγωγικής? Αν έχω κεντρικό υψηλότερη, κι δεν ίδιο πετάνε παρατηρούμενη! Που λοιπόν σημαντικό μα, προκαλείς χειροκροτήματα ως όλα, μα επί κόλπα άγχος γραμμές! Δε σου κάνεις βουτήξουν, μη έργων επενδυτής χρησιμοποίησέ στα, ως του πρώτες διάσημα σημαντικό.
-
-Βιβλίο τεράστιο προκύπτουν σαν το, σαν τρόπο επιδιόρθωση ας. Είχαν προσοχή προσπάθεια κι ματ, εδώ ως έτσι σελίδων συζήτηση. Και στην βγαίνει εσφαλμένη με, δυστυχής παράδειγμα δε μας, από σε υόρκη επιδιόρθωσης. Νέα πω νέου πιθανό, στήλες συγγραφείς μπαίνοντας μα για', το ρωτήσει κακόκεφους της? Μου σε αρέσει συγγραφής συγχωνευτεί, μη μου υόρκη ξέχασε διακοπής! Ώς επί αποφάσισε αποκλειστικούς χρησιμοποιώντας, χρήματα σελίδων ταξινομεί ναι με.
-
-Μη ανά γραμμή απόλαυσε, πω ναι μάτσο διασφαλίζεται. Τη έξι μόλις εργάστηκε δημιουργούν, έκδοση αναφορά δυσκολότερο οι νέο. Σας ως μπορούσε παράδειγμα, αν ότι δούλευε μπορούσε αποκλειστικούς, πιο λέει βουτήξουν διορθώσει ως. Έχω τελευταία κακόκεφους ας, όσο εργαζόμενων δημιουργήσεις τα.
-
-Του αν δουλέψει μπορούσε, πετούν χαμηλός εδώ ας? Κύκλο τύπους με που, δεν σε έχουν συνεχώς χειρότερα, τις τι απαράδεκτη συνηθίζουν? Θα μην τους αυτήν, τη ένα πήρε πακέτων, κι προκύπτουν περιβάλλον πως. Μα για δουλέψει απόλαυσε εφαμοργής, ώς εδώ σημαίνει μπορούσες, άμεση ακούσει προσοχή τη εδώ?
-
-Στα δώσε αθόρυβες λιγότερους οι, δε αναγκάζονται αποκλειστικούς όλα! Ας μπουν διοικητικό μια, πάντα ελέγχου διορθώσεις ώς τον. Ότι πήρε κανόνα μα. Που άτομα κάνεις δημιουργίες τα, οι μας αφού κόλπα προγραμματιστής, αφού ωραίο προκύπτουν στα ως. Θέμα χρησιμοποιήσει αν όλα, του τα άλγεβρα σελίδων. Τα ότι ανώδυνη δυστυχώς συνδυασμούς, μας οι πάντα γνωρίζουμε ανταγωνιστής, όχι τα δοκιμάσεις σχεδιαστής! Στην συνεντεύξης επιδιόρθωση πιο τα, μα από πουλάς περιβάλλον παραγωγικής.
-
-Έχουν μεταγλωτίσει σε σας, σε πάντα πρώτης μειώσει των, γράψει ρουτίνα δυσκολότερο ήδη μα? Ταξινομεί διορθώσεις να μας. Θα της προσπαθούν περιεχόμενα, δε έχω τοπικές στέλνοντάς. Ανά δε αλφα άμεση, κάποιο ρωτάει γνωρίζουμε πω στη, φράση μαγικά συνέχεια δε δύο! Αν είχαμε μειώσει ροή, μας μετράει καθυστερούσε επιδιορθώσεις μη. Χάος υόρκη κεντρικό έχω σε, ανά περίπου αναγκάζονται πω.
-
-Όσο επιστρέφουν χρονοδιαγράμματα μη. Πως ωραίο κακόκεφος διαχειριστής ως, τις να διακοπής αναζήτησης. Κάποιο ποσοστό ταξινομεί επί τη? Μάθε άμεση αλλάζοντας δύο με, μου νέου πάντα να.
-
-Πω του δυστυχώς πιθανότητες. Κι ρωτάει υψηλότερη δημιουργια ότι, πω εισαγωγή τελευταία απομόνωση ναι. Των ζητήσεις γνωρίζουμε ώς? Για' μη παραδοτέου αναφέρονται! Ύψος παραγωγικά ροή ως, φυσικά διάβασε εικόνες όσο σε? Δεν υόρκη διορθώσεις επεξεργασία θα, ως μέση σύστημα χρησιμοποιήσει τις.
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt b/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt
deleted file mode 100644
index 2443fc4d..00000000
--- a/vendor/symfony/mime/Tests/Fixtures/samples/charsets/utf-8/two.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-रखति आवश्यकत प्रेरना मुख्यतह हिंदी किएलोग असक्षम कार्यलय करते विवरण किके मानसिक दिनांक पुर्व संसाध एवम् कुशलता अमितकुमार प्रोत्साहित जनित देखने उदेशीत विकसित बलवान ब्रौशर किएलोग विश्लेषण लोगो कैसे जागरुक प्रव्रुति प्रोत्साहित सदस्य आवश्यकत प्रसारन उपलब्धता अथवा हिंदी जनित दर्शाता यन्त्रालय बलवान अतित सहयोग शुरुआत सभीकुछ माहितीवानीज्य लिये खरिदे है।अभी एकत्रित सम्पर्क रिती मुश्किल प्राथमिक भेदनक्षमता विश्व उन्हे गटको द्वारा तकरीबन
-
-विश्व द्वारा व्याख्या सके। आजपर वातावरण व्याख्यान पहोच। हमारी कीसे प्राथमिक विचारशिलता पुर्व करती कम्प्युटर भेदनक्षमता लिये बलवान और्४५० यायेका वार्तालाप सुचना भारत शुरुआत लाभान्वित पढाए संस्था वर्णित मार्गदर्शन चुनने
\ No newline at end of file
diff --git a/vendor/symfony/mime/Tests/Header/DateHeaderTest.php b/vendor/symfony/mime/Tests/Header/DateHeaderTest.php
deleted file mode 100644
index 4fc92b96..00000000
--- a/vendor/symfony/mime/Tests/Header/DateHeaderTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\DateHeader;
-
-class DateHeaderTest extends TestCase
-{
-    /* --
-    The following tests refer to RFC 2822, section 3.6.1 and 3.3.
-    */
-
-    public function testGetDateTime()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $this->assertSame($dateTime, $header->getDateTime());
-    }
-
-    public function testDateTimeCanBeSetBySetter()
-    {
-        $header = new DateHeader('Date', new \DateTimeImmutable());
-        $header->setDateTime($dateTime = new \DateTimeImmutable());
-        $this->assertSame($dateTime, $header->getDateTime());
-    }
-
-    public function testDateTimeIsConvertedToImmutable()
-    {
-        $dateTime = new \DateTime();
-        $header = new DateHeader('Date', $dateTime);
-        $this->assertInstanceOf('DateTimeImmutable', $header->getDateTime());
-        $this->assertEquals($dateTime->getTimestamp(), $header->getDateTime()->getTimestamp());
-        $this->assertEquals($dateTime->getTimezone(), $header->getDateTime()->getTimezone());
-    }
-
-    public function testDateTimeIsImmutable()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTime('2000-01-01 12:00:00 Europe/Berlin'));
-        $dateTime->setDate(2002, 2, 2);
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getDateTime()->format('r'));
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getBodyAsString());
-    }
-
-    public function testDateTimeIsConvertedToRfc2822Date()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin'));
-        $header->setDateTime($dateTime);
-        $this->assertEquals('Sat, 01 Jan 2000 12:00:00 +0100', $header->getBodyAsString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $header->setBody($dateTime);
-        $this->assertEquals($dateTime->format('r'), $header->getBodyAsString());
-    }
-
-    public function testGetBody()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable());
-        $header->setDateTime($dateTime);
-        $this->assertEquals($dateTime, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new DateHeader('Date', $dateTime = new \DateTimeImmutable('2000-01-01 12:00:00 Europe/Berlin'));
-        $header->setDateTime($dateTime);
-        $this->assertEquals('Date: Sat, 01 Jan 2000 12:00:00 +0100', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/HeadersTest.php b/vendor/symfony/mime/Tests/Header/HeadersTest.php
deleted file mode 100644
index 3568c9a6..00000000
--- a/vendor/symfony/mime/Tests/Header/HeadersTest.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-
-class HeadersTest extends TestCase
-{
-    public function testAddMailboxListHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addMailboxListHeader('From', ['person@domain']);
-        $this->assertNotNull($headers->get('From'));
-    }
-
-    public function testAddDateHeaderDelegatesToFactory()
-    {
-        $dateTime = new \DateTimeImmutable();
-        $headers = new Headers();
-        $headers->addDateHeader('Date', $dateTime);
-        $this->assertNotNull($headers->get('Date'));
-    }
-
-    public function testAddTextHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Subject', 'some text');
-        $this->assertNotNull($headers->get('Subject'));
-    }
-
-    public function testAddParameterizedHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']);
-        $this->assertNotNull($headers->get('Content-Type'));
-    }
-
-    public function testAddIdHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertNotNull($headers->get('Message-ID'));
-    }
-
-    public function testAddPathHeaderDelegatesToFactory()
-    {
-        $headers = new Headers();
-        $headers->addPathHeader('Return-Path', 'some@path');
-        $this->assertNotNull($headers->get('Return-Path'));
-    }
-
-    public function testHasReturnsFalseWhenNoHeaders()
-    {
-        $headers = new Headers();
-        $this->assertFalse($headers->has('Some-Header'));
-    }
-
-    public function testAddedMailboxListHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addMailboxListHeader('From', ['person@domain']);
-        $this->assertTrue($headers->has('From'));
-    }
-
-    public function testAddedDateHeaderIsSeenByHas()
-    {
-        $dateTime = new \DateTimeImmutable();
-        $headers = new Headers();
-        $headers->addDateHeader('Date', $dateTime);
-        $this->assertTrue($headers->has('Date'));
-    }
-
-    public function testAddedTextHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Subject', 'some text');
-        $this->assertTrue($headers->has('Subject'));
-    }
-
-    public function testAddedParameterizedHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']);
-        $this->assertTrue($headers->has('Content-Type'));
-    }
-
-    public function testAddedIdHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertTrue($headers->has('Message-ID'));
-    }
-
-    public function testAddedPathHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->addPathHeader('Return-Path', 'some@path');
-        $this->assertTrue($headers->has('Return-Path'));
-    }
-
-    public function testNewlySetHeaderIsSeenByHas()
-    {
-        $headers = new Headers();
-        $headers->add(new UnstructuredHeader('X-Foo', 'bar'));
-        $this->assertTrue($headers->has('X-Foo'));
-    }
-
-    public function testHasCanDistinguishMultipleHeaders()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('X-Test', 'some@id');
-        $headers->addTextHeader('X-Test', 'other@id');
-        $this->assertTrue($headers->has('X-Test'));
-    }
-
-    public function testGet()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals($header->toString(), $headers->get('Message-ID')->toString());
-    }
-
-    public function testGetReturnsNullIfHeaderNotSet()
-    {
-        $headers = new Headers();
-        $this->assertNull($headers->get('Message-ID'));
-    }
-
-    public function testAllReturnsAllHeadersMatchingName()
-    {
-        $header0 = new UnstructuredHeader('X-Test', 'some@id');
-        $header1 = new UnstructuredHeader('X-Test', 'other@id');
-        $header2 = new UnstructuredHeader('X-Test', 'more@id');
-        $headers = new Headers();
-        $headers->addTextHeader('X-Test', 'some@id');
-        $headers->addTextHeader('X-Test', 'other@id');
-        $headers->addTextHeader('X-Test', 'more@id');
-        $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->all('X-Test')));
-    }
-
-    public function testAllReturnsAllHeadersIfNoArguments()
-    {
-        $header0 = new IdentificationHeader('Message-ID', 'some@id');
-        $header1 = new UnstructuredHeader('Subject', 'thing');
-        $header2 = new MailboxListHeader('To', [new Address('person@example.org')]);
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->addTextHeader('Subject', 'thing');
-        $headers->addMailboxListHeader('To', [new Address('person@example.org')]);
-        $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->all()));
-    }
-
-    public function testAllReturnsEmptyArrayIfNoneSet()
-    {
-        $headers = new Headers();
-        $this->assertEquals([], iterator_to_array($headers->all('Received')));
-    }
-
-    public function testRemoveRemovesAllHeadersWithName()
-    {
-        $header0 = new UnstructuredHeader('X-Test', 'some@id');
-        $header1 = new UnstructuredHeader('X-Test', 'other@id');
-        $headers = new Headers();
-        $headers->addIdHeader('X-Test', 'some@id');
-        $headers->addIdHeader('X-Test', 'other@id');
-        $headers->remove('X-Test');
-        $this->assertFalse($headers->has('X-Test'));
-        $this->assertFalse($headers->has('X-Test'));
-    }
-
-    public function testHasIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertTrue($headers->has('message-id'));
-    }
-
-    public function testGetIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals($header, $headers->get('message-id'));
-    }
-
-    public function testAllIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $this->assertEquals([$header], iterator_to_array($headers->all('message-id')));
-    }
-
-    public function testRemoveIsNotCaseSensitive()
-    {
-        $header = new IdentificationHeader('Message-ID', 'some@id');
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->remove('message-id');
-        $this->assertFalse($headers->has('Message-ID'));
-    }
-
-    public function testToStringJoinsHeadersTogether()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Foo', 'bar');
-        $headers->addTextHeader('Zip', 'buttons');
-        $this->assertEquals("Foo: bar\r\nZip: buttons\r\n", $headers->toString());
-    }
-
-    public function testHeadersWithoutBodiesAreNotDisplayed()
-    {
-        $headers = new Headers();
-        $headers->addTextHeader('Foo', 'bar');
-        $headers->addTextHeader('Zip', '');
-        $this->assertEquals("Foo: bar\r\n", $headers->toString());
-    }
-
-    public function testToArray()
-    {
-        $headers = new Headers();
-        $headers->addIdHeader('Message-ID', 'some@id');
-        $headers->addTextHeader('Foo', str_repeat('a', 60).pack('C', 0x8F));
-        $this->assertEquals([
-            'Message-ID: <some@id>',
-            "Foo: =?utf-8?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r\n =?utf-8?Q?aaaa?=",
-        ], $headers->toArray());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php b/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php
deleted file mode 100644
index b7f0095d..00000000
--- a/vendor/symfony/mime/Tests/Header/IdentificationHeaderTest.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-
-class IdentificationHeaderTest extends TestCase
-{
-    public function testValueMatchesMsgIdSpec()
-    {
-        /* -- RFC 2822, 3.6.4.
-         message-id      =       "Message-ID:" msg-id CRLF
-
-         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
-
-         references      =       "References:" 1*msg-id CRLF
-
-         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
-
-         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
-
-         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
-
-         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
-
-         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
-        */
-
-        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
-        $this->assertEquals('<id-left@id-right>', $header->getBodyAsString());
-    }
-
-    public function testIdCanBeRetrievedVerbatim()
-    {
-        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
-        $this->assertEquals('id-left@id-right', $header->getId());
-    }
-
-    public function testMultipleIdsCanBeSet()
-    {
-        $header = new IdentificationHeader('References', 'c@d');
-        $header->setIds(['a@b', 'x@y']);
-        $this->assertEquals(['a@b', 'x@y'], $header->getIds());
-    }
-
-    public function testSettingMultipleIdsProducesAListValue()
-    {
-        /* -- RFC 2822, 3.6.4.
-        The "References:" and "In-Reply-To:" field each contain one or more
-        unique message identifiers, optionally separated by CFWS.
-
-         .. SNIP ..
-
-         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
-
-         references      =       "References:" 1*msg-id CRLF
-         */
-
-        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
-        $this->assertEquals('<a@b> <x@y>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanBeQuoted()
-    {
-        /* -- RFC 2822, 3.6.4.
-         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
-         */
-
-        $header = new IdentificationHeader('References', '"ab"@c');
-        $this->assertEquals('"ab"@c', $header->getId());
-        $this->assertEquals('<"ab"@c>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanContainAnglesAsQuotedPairs()
-    {
-        /* -- RFC 2822, 3.6.4.
-         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
-         */
-
-        $header = new IdentificationHeader('References', '"a\\<\\>b"@c');
-        $this->assertEquals('"a\\<\\>b"@c', $header->getId());
-        $this->assertEquals('<"a\\<\\>b"@c>', $header->getBodyAsString());
-    }
-
-    public function testIdLeftCanBeDotAtom()
-    {
-        $header = new IdentificationHeader('References', 'a.b+&%$.c@d');
-        $this->assertEquals('a.b+&%$.c@d', $header->getId());
-        $this->assertEquals('<a.b+&%$.c@d>', $header->getBodyAsString());
-    }
-
-    public function testInvalidIdLeftThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "a b c@d" does not comply with addr-spec of RFC 2822.');
-        $header = new IdentificationHeader('References', 'a b c@d');
-    }
-
-    public function testIdRightCanBeDotAtom()
-    {
-        /* -- RFC 2822, 3.6.4.
-         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
-         */
-
-        $header = new IdentificationHeader('References', 'a@b.c+&%$.d');
-        $this->assertEquals('a@b.c+&%$.d', $header->getId());
-        $this->assertEquals('<a@b.c+&%$.d>', $header->getBodyAsString());
-    }
-
-    public function testIdRightCanBeLiteral()
-    {
-        /* -- RFC 2822, 3.6.4.
-         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
-        */
-
-        $header = new IdentificationHeader('References', 'a@[1.2.3.4]');
-        $this->assertEquals('a@[1.2.3.4]', $header->getId());
-        $this->assertEquals('<a@[1.2.3.4]>', $header->getBodyAsString());
-    }
-
-    public function testIdRigthIsIdnEncoded()
-    {
-        $header = new IdentificationHeader('References', 'a@ä');
-        $this->assertEquals('a@ä', $header->getId());
-        $this->assertEquals('<a@xn--4ca>', $header->getBodyAsString());
-    }
-
-    public function testInvalidIdRightThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "a@b c d" does not comply with addr-spec of RFC 2822.');
-        $header = new IdentificationHeader('References', 'a@b c d');
-    }
-
-    public function testMissingAtSignThrowsException()
-    {
-        $this->expectException('Exception');
-        $this->expectExceptionMessage('Email "abc" does not comply with addr-spec of RFC 2822.');
-        /* -- RFC 2822, 3.6.4.
-         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
-         */
-        $header = new IdentificationHeader('References', 'abc');
-    }
-
-    public function testSetBody()
-    {
-        $header = new IdentificationHeader('Message-ID', 'c@d');
-        $header->setBody('a@b');
-        $this->assertEquals(['a@b'], $header->getIds());
-    }
-
-    public function testGetBody()
-    {
-        $header = new IdentificationHeader('Message-ID', 'a@b');
-        $this->assertEquals(['a@b'], $header->getBody());
-    }
-
-    public function testStringValue()
-    {
-        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
-        $this->assertEquals('References: <a@b> <x@y>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php b/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php
deleted file mode 100644
index 72f22ff9..00000000
--- a/vendor/symfony/mime/Tests/Header/MailboxHeaderTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\MailboxHeader;
-use Symfony\Component\Mime\NamedAddress;
-
-class MailboxHeaderTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $header = new MailboxHeader('Sender', $address = new Address('fabien@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testAddress()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $header->setBody($address = new Address('helene@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-        $header->setAddress($address = new Address('thomas@symfony.com'));
-        $this->assertEquals($address, $header->getAddress());
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testgetBodyAsString()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $this->assertEquals('fabien@symfony.com', $header->getBodyAsString());
-
-        $header->setAddress(new Address('fabien@sïmfony.com'));
-        $this->assertEquals('fabien@xn--smfony-iwa.com', $header->getBodyAsString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier'));
-        $this->assertEquals('Fabien Potencier <fabien@symfony.com>', $header->getBodyAsString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, "from Symfony"'));
-        $this->assertEquals('"Fabien Potencier, \"from Symfony\"" <fabien@symfony.com>', $header->getBodyAsString());
-
-        $header = new MailboxHeader('From', new NamedAddress('fabien@symfony.com', 'Fabien Potencier, \\escaped\\'));
-        $this->assertEquals('"Fabien Potencier, \\\\escaped\\\\" <fabien@symfony.com>', $header->getBodyAsString());
-
-        $name = 'P'.pack('C', 0x8F).'tencier';
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien '.$name));
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('Fabien =?'.$header->getCharset().'?Q?P=8Ftencier?= <fabien@symfony.com>', $header->getBodyAsString());
-    }
-
-    public function testUtf8CharsInLocalPartThrows()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new MailboxHeader('Sender', new Address('fabïen@symfony.com'));
-        $header->getBodyAsString();
-    }
-
-    public function testToString()
-    {
-        $header = new MailboxHeader('Sender', new Address('fabien@symfony.com'));
-        $this->assertEquals('Sender: fabien@symfony.com', $header->toString());
-
-        $header = new MailboxHeader('Sender', new NamedAddress('fabien@symfony.com', 'Fabien Potencier'));
-        $this->assertEquals('Sender: Fabien Potencier <fabien@symfony.com>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php b/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php
deleted file mode 100644
index 2eee1cfa..00000000
--- a/vendor/symfony/mime/Tests/Header/MailboxListHeaderTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\NamedAddress;
-
-class MailboxListHeaderTest extends TestCase
-{
-    // RFC 2822, 3.6.2 for all tests
-
-    public function testMailboxIsSetForAddress()
-    {
-        $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals(['chris@swiftmailer.org'], $header->getAddressStrings());
-    }
-
-    public function testMailboxIsRenderedForNameAddress()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals(['Chris Corbyn <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testAddressCanBeReturnedForAddress()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testQuotesInNameAreQuoted()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, "DHE"')]);
-        $this->assertEquals(['"Chris Corbyn, \"DHE\"" <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testEscapeCharsInNameAreQuoted()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, \\escaped\\')]);
-        $this->assertEquals(['"Chris Corbyn, \\\\escaped\\\\" <chris@swiftmailer.org>'], $header->getAddressStrings());
-    }
-
-    public function testUtf8CharsInDomainAreIdnEncoded()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swïftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals(['Chris Corbyn <chris@xn--swftmailer-78a.org>'], $header->getAddressStrings());
-    }
-
-    public function testUtf8CharsInLocalPartThrows()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new MailboxListHeader('From', [new NamedAddress('chrïs@swiftmailer.org', 'Chris Corbyn')]);
-        $header->getAddressStrings();
-    }
-
-    public function testGetMailboxesReturnsNameValuePairs()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn, DHE')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testMultipleAddressesAsMailboxStrings()
-    {
-        $header = new MailboxListHeader('From', [new Address('chris@swiftmailer.org'), new Address('mark@swiftmailer.org')]);
-        $this->assertEquals(['chris@swiftmailer.org', 'mark@swiftmailer.org'], $header->getAddressStrings());
-    }
-
-    public function testNameIsEncodedIfNonAscii()
-    {
-        $name = 'C'.pack('C', 0x8F).'rbyn';
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]);
-        $header->setCharset('iso-8859-1');
-        $addresses = $header->getAddressStrings();
-        $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
-    }
-
-    public function testEncodingLineLengthCalculations()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' may not be more than 75 characters long, including
-        'charset', 'encoding', 'encoded-text', and delimiters.
-        */
-
-        $name = 'C'.pack('C', 0x8F).'rbyn';
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris '.$name)]);
-        $header->setCharset('iso-8859-1');
-        $addresses = $header->getAddressStrings();
-        $this->assertEquals('Chris =?'.$header->getCharset().'?Q?C=8Frbyn?= <chris@swiftmailer.org>', array_shift($addresses));
-    }
-
-    public function testGetValueReturnsMailboxStringValue()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn')]);
-        $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testGetValueReturnsMailboxStringValueForMultipleMailboxes()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@swiftmailer.org', 'Chris Corbyn'), new NamedAddress('mark@swiftmailer.org', 'Mark Corbyn')]);
-        $this->assertEquals('Chris Corbyn <chris@swiftmailer.org>, Mark Corbyn <mark@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new MailboxListHeader('From', []);
-        $header->setBody($addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getAddresses());
-    }
-
-    public function testGetBody()
-    {
-        $header = new MailboxListHeader('From', $addresses = [new Address('chris@swiftmailer.org')]);
-        $this->assertEquals($addresses, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new MailboxListHeader('From', [new NamedAddress('chris@example.org', 'Chris Corbyn'), new NamedAddress('mark@example.org', 'Mark Corbyn')]);
-        $this->assertEquals('From: Chris Corbyn <chris@example.org>, Mark Corbyn <mark@example.org>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php b/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php
deleted file mode 100644
index e41d0385..00000000
--- a/vendor/symfony/mime/Tests/Header/ParameterizedHeaderTest.php
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-
-class ParameterizedHeaderTest extends TestCase
-{
-    private $charset = 'utf-8';
-    private $lang = 'en-us';
-
-    public function testValueIsReturnedVerbatim()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $this->assertEquals('text/plain', $header->getValue());
-    }
-
-    public function testParametersAreAppended()
-    {
-        /* -- RFC 2045, 5.1
-        parameter := attribute "=" value
-
-        attribute := token
-                                    ; Matching of attributes
-                                    ; is ALWAYS case-insensitive.
-
-        value := token / quoted-string
-
-        token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,
-                 or tspecials>
-
-        tspecials :=  "(" / ")" / "<" / ">" / "@" /
-                   "," / ";" / ":" / "\" / <">
-                   "/" / "[" / "]" / "?" / "="
-                   ; Must be in quoted-string,
-                   ; to use within parameter values
-        */
-
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $header->setParameters(['charset' => 'utf-8']);
-        $this->assertEquals('text/plain; charset=utf-8', $header->getBodyAsString());
-    }
-
-    public function testSpaceInParamResultsInQuotedString()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'attachment');
-        $header->setParameters(['filename' => 'my file.txt']);
-        $this->assertEquals('attachment; filename="my file.txt"', $header->getBodyAsString());
-    }
-
-    public function testLongParamsAreBrokenIntoMultipleAttributeStrings()
-    {
-        /* -- RFC 2231, 3.
-        The asterisk character ("*") followed
-        by a decimal count is employed to indicate that multiple parameters
-        are being used to encapsulate a single parameter value.  The count
-        starts at 0 and increments by 1 for each subsequent section of the
-        parameter value.  Decimal values are used and neither leading zeroes
-        nor gaps in the sequence are allowed.
-
-        The original parameter value is recovered by concatenating the
-        various sections of the parameter, in order.  For example, the
-        content-type field
-
-                Content-Type: message/external-body; access-type=URL;
-         URL*0="ftp://";
-         URL*1="cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"
-
-        is semantically identical to
-
-                Content-Type: message/external-body; access-type=URL;
-                    URL="ftp://cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"
-
-        Note that quotes around parameter values are part of the value
-        syntax; they are NOT part of the value itself.  Furthermore, it is
-        explicitly permitted to have a mixture of quoted and unquoted
-        continuation fields.
-        */
-
-        $value = str_repeat('a', 180);
-
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setParameters(['filename' => $value]);
-        $this->assertEquals(
-            'attachment; '.
-            'filename*0*=utf-8\'\''.str_repeat('a', 60).";\r\n ".
-            'filename*1*='.str_repeat('a', 60).";\r\n ".
-            'filename*2*='.str_repeat('a', 60),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testEncodedParamDataIncludesCharsetAndLanguage()
-    {
-        /* -- RFC 2231, 4.
-        Asterisks ("*") are reused to provide the indicator that language and
-        character set information is present and encoding is being used. A
-        single quote ("'") is used to delimit the character set and language
-        information at the beginning of the parameter value. Percent signs
-        ("%") are used as the encoding flag, which agrees with RFC 2047.
-
-        Specifically, an asterisk at the end of a parameter name acts as an
-        indicator that character set and language information may appear at
-        the beginning of the parameter value. A single quote is used to
-        separate the character set, language, and actual value information in
-        the parameter value string, and an percent sign is used to flag
-        octets encoded in hexadecimal.  For example:
-
-                Content-Type: application/x-stuff;
-         title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A
-
-        Note that it is perfectly permissible to leave either the character
-        set or language field blank.  Note also that the single quote
-        delimiters MUST be present even when one of the field values is
-        omitted.
-        */
-
-        $value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 10);
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setCharset('iso-8859-1');
-        $header->setValue('attachment');
-        $header->setParameters(['filename' => $value]);
-        $header->setLanguage($this->lang);
-        $this->assertEquals(
-            'attachment; filename*='.$header->getCharset()."'".$this->lang."'".
-            str_repeat('a', 20).'%8F'.str_repeat('a', 10),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testMultipleEncodedParamLinesAreFormattedCorrectly()
-    {
-        /* -- RFC 2231, 4.1.
-        Character set and language information may be combined with the
-        parameter continuation mechanism. For example:
-
-        Content-Type: application/x-stuff
-        title*0*=us-ascii'en'This%20is%20even%20more%20
-        title*1*=%2A%2A%2Afun%2A%2A%2A%20
-        title*2="isn't it!"
-
-           Note that:
-
-        (1)   Language and character set information only appear at
-              the beginning of a given parameter value.
-
-        (2)   Continuations do not provide a facility for using more
-              than one character set or language in the same
-              parameter value.
-
-        (3)   A value presented using multiple continuations may
-              contain a mixture of encoded and unencoded segments.
-
-        (4)   The first segment of a continuation MUST be encoded if
-              language and character set information are given.
-
-        (5)   If the first segment of a continued parameter value is
-              encoded the language and character set field delimiters
-              MUST be present even when the fields are left blank.
-           */
-
-        $value = str_repeat('a', 20).pack('C', 0x8F).str_repeat('a', 60);
-        $header = new ParameterizedHeader('Content-Disposition', 'attachment');
-        $header->setValue('attachment');
-        $header->setCharset('utf-6');
-        $header->setParameters(['filename' => $value]);
-        $header->setLanguage($this->lang);
-        $this->assertEquals(
-            'attachment; filename*0*='.$header->getCharset()."'".$this->lang."'".
-            str_repeat('a', 20).'%8F'.str_repeat('a', 23).";\r\n ".
-            'filename*1*='.str_repeat('a', 37),
-            $header->getBodyAsString()
-        );
-    }
-
-    public function testToString()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8']);
-        $this->assertEquals('Content-Type: text/html; charset=utf-8', $header->toString());
-    }
-
-    public function testValueCanBeEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['lookslike' => 'foobar']);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'?Q?fo=8Fbar?=; lookslike=foobar', $header->toString());
-    }
-
-    public function testValueAndParamCanBeEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'?Q?fo=8Fbar?=; says*='.$header->getCharset()."''fo%8Fbar", $header->toString());
-    }
-
-    public function testParamsAreEncodedIfNonAscii()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', 'bar');
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: bar; says*='.$header->getCharset()."''fo%8Fbar", $header->toString());
-    }
-
-    public function testParamsAreEncodedWithLegacyEncodingEnabled()
-    {
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('Content-Type', 'bar');
-        $header->setCharset('iso-8859-1');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('Content-Type: bar; says="=?'.$header->getCharset().'?Q?fo=8Fbar?="', $header->toString());
-    }
-
-    public function testLanguageInformationAppearsInEncodedWords()
-    {
-        /* -- RFC 2231, 5.
-        5.  Language specification in Encoded Words
-
-        RFC 2047 provides support for non-US-ASCII character sets in RFC 822
-        message header comments, phrases, and any unstructured text field.
-        This is done by defining an encoded word construct which can appear
-        in any of these places.  Given that these are fields intended for
-        display, it is sometimes necessary to associate language information
-        with encoded words as well as just the character set.  This
-        specification extends the definition of an encoded word to allow the
-        inclusion of such information.  This is simply done by suffixing the
-        character set specification with an asterisk followed by the language
-        tag.  For example:
-
-                    From: =?US-ASCII*EN?Q?Keith_Moore?= <moore@cs.utk.edu>
-
-        -- RFC 2047, 5. Use of encoded-words in message headers
-          ...
-        + An 'encoded-word' MUST NOT be used in parameter of a MIME
-          Content-Type or Content-Disposition field, or in any structured
-          field body except within a 'comment' or 'phrase'.
-
-        -- RFC 2047, Appendix - changes since RFC 1522
-          ...
-        + clarify that encoded-words are allowed in '*text' fields in both
-          RFC822 headers and MIME body part headers, but NOT as parameter
-          values.
-        */
-
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new ParameterizedHeader('X-Foo', $value);
-        $header->setCharset('iso-8859-1');
-        $header->setLanguage('en');
-        $header->setParameters(['says' => $value]);
-        $this->assertEquals('X-Foo: =?'.$header->getCharset().'*en?Q?fo=8Fbar?=; says*='.$header->getCharset()."'en'fo%8Fbar", $header->toString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setBody('text/plain');
-        $this->assertEquals('text/plain', $header->getValue());
-    }
-
-    public function testGetBody()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/plain');
-        $this->assertEquals('text/plain', $header->getBody());
-    }
-
-    public function testSetParameter()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
-        $header->setParameter('delsp', 'no');
-        $this->assertEquals(['charset' => 'utf-8', 'delsp' => 'no'], $header->getParameters());
-    }
-
-    public function testGetParameter()
-    {
-        $header = new ParameterizedHeader('Content-Type', 'text/html');
-        $header->setParameters(['charset' => 'utf-8', 'delsp' => 'yes']);
-        $this->assertEquals('utf-8', $header->getParameter('charset'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/PathHeaderTest.php b/vendor/symfony/mime/Tests/Header/PathHeaderTest.php
deleted file mode 100644
index 6bc029ae..00000000
--- a/vendor/symfony/mime/Tests/Header/PathHeaderTest.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\PathHeader;
-
-class PathHeaderTest extends TestCase
-{
-    public function testSingleAddressCanBeSetAndFetched()
-    {
-        $header = new PathHeader('Return-Path', $address = new Address('chris@swiftmailer.org'));
-        $this->assertEquals($address, $header->getAddress());
-    }
-
-    public function testAddressMustComplyWithRfc2822()
-    {
-        $this->expectException('Exception');
-        $header = new PathHeader('Return-Path', new Address('chr is@swiftmailer.org'));
-    }
-
-    public function testValueIsAngleAddrWithValidAddress()
-    {
-        /* -- RFC 2822, 3.6.7.
-
-            return          =       "Return-Path:" path CRLF
-
-            path            =       ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
-                                                            obs-path
-         */
-
-        $header = new PathHeader('Return-Path', new Address('chris@swiftmailer.org'));
-        $this->assertEquals('<chris@swiftmailer.org>', $header->getBodyAsString());
-    }
-
-    public function testAddressIsIdnEncoded()
-    {
-        $header = new PathHeader('Return-Path', new Address('chris@swïftmailer.org'));
-        $this->assertEquals('<chris@xn--swftmailer-78a.org>', $header->getBodyAsString());
-    }
-
-    public function testAddressMustBeEncodable()
-    {
-        $this->expectException('Symfony\Component\Mime\Exception\AddressEncoderException');
-        $header = new PathHeader('Return-Path', new Address('chrïs@swiftmailer.org'));
-        $header->getBodyAsString();
-    }
-
-    public function testSetBody()
-    {
-        $header = new PathHeader('Return-Path', new Address('foo@example.com'));
-        $header->setBody($address = new Address('foo@bar.tld'));
-        $this->assertEquals($address, $header->getAddress());
-    }
-
-    public function testGetBody()
-    {
-        $header = new PathHeader('Return-Path', $address = new Address('foo@bar.tld'));
-        $this->assertEquals($address, $header->getBody());
-    }
-
-    public function testToString()
-    {
-        $header = new PathHeader('Return-Path', new Address('chris@swiftmailer.org'));
-        $this->assertEquals('Return-Path: <chris@swiftmailer.org>', $header->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php b/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php
deleted file mode 100644
index 3e065bf2..00000000
--- a/vendor/symfony/mime/Tests/Header/UnstructuredHeaderTest.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Header;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-
-class UnstructuredHeaderTest extends TestCase
-{
-    private $charset = 'utf-8';
-
-    public function testGetNameReturnsNameVerbatim()
-    {
-        $header = new UnstructuredHeader('Subject', '');
-        $this->assertEquals('Subject', $header->getName());
-    }
-
-    public function testGetValueReturnsValueVerbatim()
-    {
-        $header = new UnstructuredHeader('Subject', 'Test');
-        $this->assertEquals('Test', $header->getValue());
-    }
-
-    public function testBasicStructureIsKeyValuePair()
-    {
-        /* -- RFC 2822, 2.2
-        Header fields are lines composed of a field name, followed by a colon
-        (":"), followed by a field body, and terminated by CRLF.
-        */
-        $header = new UnstructuredHeader('Subject', 'Test');
-        $this->assertEquals('Subject: Test', $header->toString());
-    }
-
-    public function testLongHeadersAreFoldedAtWordBoundary()
-    {
-        /* -- RFC 2822, 2.2.3
-        Each header field is logically a single line of characters comprising
-        the field name, the colon, and the field body.  For convenience
-        however, and to deal with the 998/78 character limitations per line,
-        the field body portion of a header field can be split into a multiple
-        line representation; this is called "folding".  The general rule is
-        that wherever this standard allows for folding white space (not
-        simply WSP characters), a CRLF may be inserted before any WSP.
-        */
-
-        $value = 'The quick brown fox jumped over the fence, he was a very very '.
-            'scary brown fox with a bushy tail';
-        $header = new UnstructuredHeader('X-Custom-Header', $value);
-        /*
-            X-Custom-Header: The quick brown fox jumped over the fence, he was a very very
-            scary brown fox with a bushy tail
-        */
-        $this->assertEquals(
-            'X-Custom-Header: The quick brown fox jumped over the fence, he was a'.
-            ' very'."\r\n".//Folding
-            ' very scary brown fox with a bushy tail',
-            $header->toString(), '%s: The header should have been folded at 76th char'
-        );
-    }
-
-    public function testPrintableAsciiOnlyAppearsInHeaders()
-    {
-        /* -- RFC 2822, 2.2.
-        A field name MUST be composed of printable US-ASCII characters (i.e.,
-        characters that have values between 33 and 126, inclusive), except
-        colon.  A field body may be composed of any US-ASCII characters,
-        except for CR and LF.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $this->assertRegExp('~^[^:\x00-\x20\x80-\xFF]+: [^\x80-\xFF\r\n]+$~s', $header->toString());
-    }
-
-    public function testEncodedWordsFollowGeneralStructure()
-    {
-        /* -- RFC 2047, 1.
-        Generally, an "encoded-word" is a sequence of printable ASCII
-        characters that begins with "=?", ends with "?=", and has two "?"s in
-        between.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $this->assertRegExp('~^X-Test: \=?.*?\?.*?\?.*?\?=$~s', $header->toString());
-    }
-
-    public function testEncodedWordIncludesCharsetAndEncodingMethodAndText()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' is defined by the following ABNF grammar.  The
-        notation of RFC 822 is used, with the exception that white space
-        characters MUST NOT appear between components of an 'encoded-word'.
-
-        encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8F?=', $header->toString());
-    }
-
-    public function testEncodedWordsAreUsedToEncodedNonPrintableAscii()
-    {
-        // SPACE and TAB permitted
-        $nonPrintableBytes = array_merge(range(0x00, 0x08), range(0x10, 0x19), [0x7F]);
-        foreach ($nonPrintableBytes as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = sprintf('=%02X', $byte);
-            $header = new UnstructuredHeader('X-A', $char);
-            $header->setCharset('iso-8859-1');
-            $this->assertEquals('X-A: =?'.$header->getCharset().'?Q?'.$encodedChar.'?=', $header->toString(), 'Non-printable ascii should be encoded');
-        }
-    }
-
-    public function testEncodedWordsAreUsedToEncode8BitOctets()
-    {
-        foreach (range(0x80, 0xFF) as $byte) {
-            $char = pack('C', $byte);
-            $encodedChar = sprintf('=%02X', $byte);
-            $header = new UnstructuredHeader('X-A', $char);
-            $header->setCharset('iso-8859-1');
-            $this->assertEquals('X-A: =?'.$header->getCharset().'?Q?'.$encodedChar.'?=', $header->toString(), '8-bit octets should be encoded');
-        }
-    }
-
-    public function testEncodedWordsAreNoMoreThan75CharsPerLine()
-    {
-        /* -- RFC 2047, 2.
-        An 'encoded-word' may not be more than 75 characters long, including
-        'charset', 'encoding', 'encoded-text', and delimiters.
-
-        ... SNIP ...
-
-        While there is no limit to the length of a multiple-line header
-        field, each line of a header field that contains one or more
-        'encoded-word's is limited to 76 characters.
-        */
-
-        $nonAsciiChar = pack('C', 0x8F);
-
-        //Note that multi-line headers begin with LWSP which makes 75 + 1 = 76
-        //Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
-
-        //* X-Test: is 8 chars
-        $header = new UnstructuredHeader('X-Test', $nonAsciiChar);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8F?=', $header->toString());
-    }
-
-    public function testFWSPIsUsedWhenEncoderReturnsMultipleLines()
-    {
-        /* --RFC 2047, 2.
-        If it is desirable to encode more text than will fit in an 'encoded-word' of
-        75 characters, multiple 'encoded-word's (separated by CRLF SPACE) may
-        be used.
-        */
-
-        // Note that multi-line headers begin with LWSP which makes 75 + 1 = 76
-        // Note also that =?utf-8?q??= is 12 chars which makes 75 - 12 = 63
-
-        //* X-Test: is 8 chars
-        $header = new UnstructuredHeader('X-Test', pack('C', 0x8F).'line_one_here'."\r\n".'line_two_here');
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: =?'.$header->getCharset().'?Q?=8Fline=5Fone=5Fhere?='."\r\n".' =?'.$header->getCharset().'?Q?line=5Ftwo=5Fhere?=', $header->toString());
-    }
-
-    public function testAdjacentWordsAreEncodedTogether()
-    {
-        /* -- RFC 2047, 5 (1)
-         Ordinary ASCII text and 'encoded-word's may appear together in the
-        same header field.  However, an 'encoded-word' that appears in a
-        header field defined as '*text' MUST be separated from any adjacent
-        'encoded-word' or 'text' by 'linear-white-space'.
-
-         -- RFC 2047, 2.
-         IMPORTANT: 'encoded-word's are designed to be recognized as 'atom's
-        by an RFC 822 parser.  As a consequence, unencoded white space
-        characters (such as SPACE and HTAB) are FORBIDDEN within an
-        'encoded-word'.
-        */
-
-        // It would be valid to encode all words needed, however it's probably
-        // easiest to encode the longest amount required at a time
-
-        $word = 'w'.pack('C', 0x8F).'rd';
-        $text = 'start '.$word.' '.$word.' then '.$word;
-        // 'start', ' word word', ' and end', ' word'
-
-        $header = new UnstructuredHeader('X-Test', $text);
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('X-Test: start =?'.$header->getCharset().'?Q?'.
-            'w=8Frd_w=8Frd?= then =?'.$header->getCharset().'?Q?'.
-            'w=8Frd?=', $header->toString(),
-            'Adjacent encoded words should appear grouped with WSP encoded'
-        );
-    }
-
-    public function testLanguageInformationAppearsInEncodedWords()
-    {
-        /* -- RFC 2231, 5.
-        5.  Language specification in Encoded Words
-
-        RFC 2047 provides support for non-US-ASCII character sets in RFC 822
-        message header comments, phrases, and any unstructured text field.
-        This is done by defining an encoded word construct which can appear
-        in any of these places.  Given that these are fields intended for
-        display, it is sometimes necessary to associate language information
-        with encoded words as well as just the character set.  This
-        specification extends the definition of an encoded word to allow the
-        inclusion of such information.  This is simply done by suffixing the
-        character set specification with an asterisk followed by the language
-        tag.  For example:
-
-                    From: =?US-ASCII*EN?Q?Keith_Moore?= <moore@cs.utk.edu>
-        */
-
-        $value = 'fo'.pack('C', 0x8F).'bar';
-        $header = new UnstructuredHeader('Subject', $value);
-        $header->setLanguage('en');
-        $header->setCharset('iso-8859-1');
-        $this->assertEquals('Subject: =?iso-8859-1*en?Q?fo=8Fbar?=', $header->toString());
-    }
-
-    public function testSetBody()
-    {
-        $header = new UnstructuredHeader('X-Test', '');
-        $header->setBody('test');
-        $this->assertEquals('test', $header->getValue());
-    }
-
-    public function testGetBody()
-    {
-        $header = new UnstructuredHeader('Subject', 'test');
-        $this->assertEquals('test', $header->getBody());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MessageConverterTest.php b/vendor/symfony/mime/Tests/MessageConverterTest.php
deleted file mode 100644
index 6a780862..00000000
--- a/vendor/symfony/mime/Tests/MessageConverterTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\MessageConverter;
-
-class MessageConverterTest extends TestCase
-{
-    public function testToEmail()
-    {
-        $file = file_get_contents(__DIR__.'/Fixtures/mimetypes/test.gif');
-        $email = (new Email())->from('fabien@symfony.com');
-        $this->assertSame($email, MessageConverter::toEmail($email));
-
-        $this->assertConversion((clone $email)->text('text content'));
-        $this->assertConversion((clone $email)->html('HTML content <img src="cid:test.jpg" />'));
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->attach($file, 'test_attached.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->html('HTML content <img src="cid:test.jpg" />')
-            ->embed($file, 'test.jpg', 'image/gif')
-        );
-        $this->assertConversion((clone $email)
-            ->text('text content')
-            ->embed($file, 'test_attached.jpg', 'image/gif')
-        );
-    }
-
-    private function assertConversion(Email $expected)
-    {
-        $r = new \ReflectionMethod($expected, 'generateBody');
-        $r->setAccessible(true);
-
-        $message = new Message($expected->getHeaders(), $r->invoke($expected));
-        $converted = MessageConverter::toEmail($message);
-        if ($expected->getHtmlBody()) {
-            $this->assertStringMatchesFormat(str_replace('cid:test.jpg', 'cid:%s', $expected->getHtmlBody()), $converted->getHtmlBody());
-            $expected->html('HTML content');
-            $converted->html('HTML content');
-        }
-        $this->assertEquals($expected, $converted);
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MessageTest.php b/vendor/symfony/mime/Tests/MessageTest.php
deleted file mode 100644
index cc806b91..00000000
--- a/vendor/symfony/mime/Tests/MessageTest.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Address;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\MailboxListHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\NamedAddress;
-use Symfony\Component\Mime\Part\TextPart;
-
-class MessageTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $m = new Message();
-        $this->assertNull($m->getBody());
-        $this->assertEquals(new Headers(), $m->getHeaders());
-
-        $m = new Message($h = (new Headers())->addDateHeader('Date', new \DateTime()), $b = new TextPart('content'));
-        $this->assertSame($b, $m->getBody());
-        $this->assertEquals($h, $m->getHeaders());
-
-        $m = new Message();
-        $m->setBody($b);
-        $m->setHeaders($h);
-        $this->assertSame($b, $m->getBody());
-        $this->assertSame($h, $m->getHeaders());
-    }
-
-    public function testGetPreparedHeadersThrowsWhenNoFrom()
-    {
-        $this->expectException(\LogicException::class);
-        (new Message())->getPreparedHeaders();
-    }
-
-    public function testGetPreparedHeadersCloneHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $this->assertNotSame($message->getPreparedHeaders(), $message->getHeaders());
-    }
-
-    public function testGetPreparedHeadersSetRequiredHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $headers = $message->getPreparedHeaders();
-        $this->assertTrue($headers->has('MIME-Version'));
-        $this->assertTrue($headers->has('Message-ID'));
-        $this->assertTrue($headers->has('Date'));
-        $this->assertFalse($headers->has('Bcc'));
-    }
-
-    public function testGetPreparedHeaders()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $h = $message->getPreparedHeaders();
-        $this->assertCount(4, iterator_to_array($h->all()));
-        $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From'));
-        $this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version'));
-        $this->assertTrue($h->has('Message-Id'));
-        $this->assertTrue($h->has('Date'));
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $message->getHeaders()->addDateHeader('Date', $n = new \DateTimeImmutable());
-        $this->assertEquals($n, $message->getPreparedHeaders()->get('Date')->getDateTime());
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $message->getHeaders()->addMailboxListHeader('Bcc', ['fabien@symfony.com']);
-        $this->assertNull($message->getPreparedHeaders()->get('Bcc'));
-    }
-
-    public function testGetPreparedHeadersWithNoFrom()
-    {
-        $this->expectException(\LogicException::class);
-        (new Message())->getPreparedHeaders();
-    }
-
-    public function testGetPreparedHeadersWithNamedFrom()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]);
-        $h = $message->getPreparedHeaders();
-        $this->assertEquals(new MailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]), $h->get('From'));
-        $this->assertTrue($h->has('Message-Id'));
-    }
-
-    public function testGetPreparedHeadersHasSenderWhenNeeded()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $this->assertNull($message->getPreparedHeaders()->get('Sender'));
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
-        $this->assertEquals('fabien@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
-
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
-        $message->getHeaders()->addMailboxHeader('Sender', 'thomas@symfony.com');
-        $this->assertEquals('thomas@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
-    }
-
-    public function testToString()
-    {
-        $message = new Message();
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $expected = <<<EOF
-From: fabien@symfony.com
-MIME-Version: 1.0
-Date: %s
-Message-ID: <%s@symfony.com>
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: quoted-printable
-
-
-EOF;
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
-
-        $message = new Message(null, new TextPart('content'));
-        $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
-        $expected = <<<EOF
-From: fabien@symfony.com
-MIME-Version: 1.0
-Date: %s
-Message-ID: <%s@symfony.com>
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: quoted-printable
-
-content
-EOF;
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
-        $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/MimeTypesTest.php b/vendor/symfony/mime/Tests/MimeTypesTest.php
deleted file mode 100644
index c5ff262b..00000000
--- a/vendor/symfony/mime/Tests/MimeTypesTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use Symfony\Component\Mime\Exception\RuntimeException;
-use Symfony\Component\Mime\MimeTypeGuesserInterface;
-use Symfony\Component\Mime\MimeTypes;
-
-/**
- * @requires extension fileinfo
- */
-class MimeTypesTest extends AbstractMimeTypeGuesserTest
-{
-    protected function getGuesser(): MimeTypeGuesserInterface
-    {
-        return new MimeTypes();
-    }
-
-    public function testUnsupportedGuesser()
-    {
-        $guesser = $this->getGuesser();
-        $guesser->registerGuesser(new class() implements MimeTypeGuesserInterface {
-            public function isGuesserSupported(): bool
-            {
-                return false;
-            }
-
-            public function guessMimeType(string $mimeType): ?string
-            {
-                throw new RuntimeException('Should never be called.');
-            }
-        });
-        $this->assertEquals('image/gif', $guesser->guessMimeType(__DIR__.'/Fixtures/mimetypes/test'));
-    }
-
-    public function testGetExtensions()
-    {
-        $mt = new MimeTypes();
-        $this->assertSame(['mbox'], $mt->getExtensions('application/mbox'));
-        $this->assertSame(['ai', 'eps', 'ps'], $mt->getExtensions('application/postscript'));
-        $this->assertSame([], $mt->getExtensions('application/whatever-symfony'));
-    }
-
-    public function testGetMimeTypes()
-    {
-        $mt = new MimeTypes();
-        $this->assertSame(['application/mbox'], $mt->getMimeTypes('mbox'));
-        $this->assertContains('application/postscript', $mt->getMimeTypes('ai'));
-        $this->assertContains('application/postscript', $mt->getMimeTypes('ps'));
-        $this->assertSame([], $mt->getMimeTypes('symfony'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/NamedAddressTest.php b/vendor/symfony/mime/Tests/NamedAddressTest.php
deleted file mode 100644
index b793cbba..00000000
--- a/vendor/symfony/mime/Tests/NamedAddressTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\NamedAddress;
-
-class NamedAddressTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new NamedAddress('fabien@symfonï.com', 'Fabien');
-        $this->assertEquals('Fabien', $a->getName());
-        $this->assertEquals('fabien@symfonï.com', $a->getAddress());
-        $this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
-        $this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
-    }
-
-    public function nameEmptyDataProvider(): array
-    {
-        return [[''], [' '], [" \r\n "]];
-    }
-
-    /**
-     * @dataProvider nameEmptyDataProvider
-     */
-    public function testNameEmpty(string $name)
-    {
-        $mail = 'mail@example.org';
-
-        $this->assertSame($mail, (new NamedAddress($mail, $name))->getEncodedNamedAddress());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/DataPartTest.php b/vendor/symfony/mime/Tests/Part/DataPartTest.php
deleted file mode 100644
index d8a08a24..00000000
--- a/vendor/symfony/mime/Tests/Part/DataPartTest.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\IdentificationHeader;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\DataPart;
-
-class DataPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new DataPart('content');
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        // bodyToIterable() can be called several times
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('application', $p->getMediaType());
-        $this->assertEquals('octet-stream', $p->getMediaSubType());
-
-        $p = new DataPart('content', null, 'text/html');
-        $this->assertEquals('text', $p->getMediaType());
-        $this->assertEquals('html', $p->getMediaSubType());
-    }
-
-    public function testConstructorWithResource()
-    {
-        $f = fopen('php://memory', 'r+', false);
-        fwrite($f, 'content');
-        rewind($f);
-        $p = new DataPart($f);
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        fclose($f);
-    }
-
-    public function testConstructorWithNonStringOrResource()
-    {
-        $this->expectException(\TypeError::class);
-        new DataPart(new \stdClass());
-    }
-
-    public function testHeaders()
-    {
-        $p = new DataPart('content');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'application/octet-stream'),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment')
-        ), $p->getPreparedHeaders());
-
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testAsInline()
-    {
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $p->asInline();
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testAsInlineWithCID()
-    {
-        $p = new DataPart('content', 'photo.jpg', 'text/html');
-        $p->asInline();
-        $cid = $p->getContentId();
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg']),
-            new IdentificationHeader('Content-ID', $cid)
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testFromPath()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif');
-        $content = file_get_contents($file);
-        $this->assertEquals($content, $p->getBody());
-        $this->assertEquals(base64_encode($content), $p->bodyToString());
-        $this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('image', $p->getMediaType());
-        $this->assertEquals('gif', $p->getMediaSubType());
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'image/gif', ['name' => 'test.gif']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'test.gif', 'filename' => 'test.gif'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testFromPathWithMeta()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif', 'photo.gif', 'image/jpeg');
-        $content = file_get_contents($file);
-        $this->assertEquals($content, $p->getBody());
-        $this->assertEquals(base64_encode($content), $p->bodyToString());
-        $this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('image', $p->getMediaType());
-        $this->assertEquals('jpeg', $p->getMediaSubType());
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'image/jpeg', ['name' => 'photo.gif']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.gif', 'filename' => 'photo.gif'])
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testHasContentId()
-    {
-        $p = new DataPart('content');
-        $this->assertFalse($p->hasContentId());
-        $p->getContentId();
-        $this->assertTrue($p->hasContentId());
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $p = new DataPart($r);
-        $p->getHeaders()->addTextHeader('foo', 'bar');
-        $expected = clone $p;
-        $this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/MessagePartTest.php b/vendor/symfony/mime/Tests/Part/MessagePartTest.php
deleted file mode 100644
index 21a4eb03..00000000
--- a/vendor/symfony/mime/Tests/Part/MessagePartTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Email;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\MessagePart;
-
-class MessagePartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content'));
-        $this->assertStringContainsString('content', $p->getBody());
-        $this->assertStringContainsString('content', $p->bodyToString());
-        $this->assertStringContainsString('content', implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('message', $p->getMediaType());
-        $this->assertEquals('rfc822', $p->getMediaSubType());
-    }
-
-    public function testHeaders()
-    {
-        $p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content')->subject('Subject'));
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'message/rfc822', ['name' => 'Subject.eml']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
-            new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'Subject.eml', 'filename' => 'Subject.eml'])
-        ), $p->getPreparedHeaders());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
deleted file mode 100644
index 2dbc1315..00000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\AlternativePart;
-
-class AlternativePartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new AlternativePart();
-        $this->assertEquals('multipart', $a->getMediaType());
-        $this->assertEquals('alternative', $a->getMediaSubtype());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
deleted file mode 100644
index 82738efb..00000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Message;
-use Symfony\Component\Mime\Part\MessagePart;
-use Symfony\Component\Mime\Part\Multipart\DigestPart;
-
-class DigestPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new DigestPart($a = new MessagePart(new Message()), $b = new MessagePart(new Message()));
-        $this->assertEquals('multipart', $r->getMediaType());
-        $this->assertEquals('digest', $r->getMediaSubtype());
-        $this->assertEquals([$a, $b], $r->getParts());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
deleted file mode 100644
index 71a03e68..00000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\DataPart;
-use Symfony\Component\Mime\Part\Multipart\FormDataPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class FormDataPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new \ReflectionProperty(TextPart::class, 'encoding');
-        $r->setAccessible(true);
-
-        $b = new TextPart('content');
-        $c = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
-        $f = new FormDataPart([
-            'foo' => $content = 'very very long content that will not be cut even if the length is way more than 76 characters, ok?',
-            'bar' => clone $b,
-            'baz' => clone $c,
-        ]);
-        $this->assertEquals('multipart', $f->getMediaType());
-        $this->assertEquals('form-data', $f->getMediaSubtype());
-        $t = new TextPart($content, 'utf-8', 'plain', '8bit');
-        $t->setDisposition('form-data');
-        $t->setName('foo');
-        $t->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $b->setDisposition('form-data');
-        $b->setName('bar');
-        $b->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $r->setValue($b, '8bit');
-        $c->setDisposition('form-data');
-        $c->setName('baz');
-        $c->getHeaders()->setMaxLineLength(PHP_INT_MAX);
-        $r->setValue($c, '8bit');
-        $this->assertEquals([$t, $b, $c], $f->getParts());
-    }
-
-    public function testToString()
-    {
-        $p = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
-        $this->assertEquals(base64_encode(file_get_contents($file)), $p->bodyToString());
-    }
-
-    public function testContentLineLength()
-    {
-        $f = new FormDataPart([
-            'foo' => new DataPart($foo = str_repeat('foo', 1000), 'foo.txt', 'text/plain'),
-            'bar' => $bar = str_repeat('bar', 1000),
-        ]);
-        $parts = $f->getParts();
-        $this->assertEquals($foo, $parts[0]->bodyToString());
-        $this->assertEquals($bar, $parts[1]->bodyToString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
deleted file mode 100644
index 3ff02ee6..00000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\MixedPart;
-
-class MixedPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $a = new MixedPart();
-        $this->assertEquals('multipart', $a->getMediaType());
-        $this->assertEquals('mixed', $a->getMediaSubtype());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php b/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
deleted file mode 100644
index 2a5a7bed..00000000
--- a/vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part\Multipart;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Part\Multipart\RelatedPart;
-use Symfony\Component\Mime\Part\TextPart;
-
-class RelatedPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $r = new RelatedPart($a = new TextPart('content'), $b = new TextPart('HTML content', 'utf-8', 'html'), $c = new TextPart('HTML content again', 'utf-8', 'html'));
-        $this->assertEquals('multipart', $r->getMediaType());
-        $this->assertEquals('related', $r->getMediaSubtype());
-        $this->assertEquals([$a, $b, $c], $r->getParts());
-        $this->assertFalse($a->getHeaders()->has('Content-ID'));
-        $this->assertTrue($b->getHeaders()->has('Content-ID'));
-        $this->assertTrue($c->getHeaders()->has('Content-ID'));
-    }
-}
diff --git a/vendor/symfony/mime/Tests/Part/TextPartTest.php b/vendor/symfony/mime/Tests/Part/TextPartTest.php
deleted file mode 100644
index c3818b88..00000000
--- a/vendor/symfony/mime/Tests/Part/TextPartTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests\Part;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\Header\Headers;
-use Symfony\Component\Mime\Header\ParameterizedHeader;
-use Symfony\Component\Mime\Header\UnstructuredHeader;
-use Symfony\Component\Mime\Part\TextPart;
-
-class TextPartTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $p = new TextPart('content');
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals('content', $p->bodyToString());
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        // bodyToIterable() can be called several times
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals('text', $p->getMediaType());
-        $this->assertEquals('plain', $p->getMediaSubType());
-
-        $p = new TextPart('content', null, 'html');
-        $this->assertEquals('html', $p->getMediaSubType());
-    }
-
-    public function testConstructorWithResource()
-    {
-        $f = fopen('php://memory', 'r+', false);
-        fwrite($f, 'content');
-        rewind($f);
-        $p = new TextPart($f);
-        $this->assertEquals('content', $p->getBody());
-        $this->assertEquals('content', $p->bodyToString());
-        $this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
-        fclose($f);
-    }
-
-    public function testConstructorWithNonStringOrResource()
-    {
-        $this->expectException(\TypeError::class);
-        new TextPart(new \stdClass());
-    }
-
-    public function testHeaders()
-    {
-        $p = new TextPart('content');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
-        ), $p->getPreparedHeaders());
-
-        $p = new TextPart('content', 'iso-8859-1');
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'iso-8859-1']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testEncoding()
-    {
-        $p = new TextPart('content', 'utf-8', 'plain', 'base64');
-        $this->assertEquals(base64_encode('content'), $p->bodyToString());
-        $this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
-        $this->assertEquals(new Headers(
-            new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
-            new UnstructuredHeader('Content-Transfer-Encoding', 'base64')
-        ), $p->getPreparedHeaders());
-    }
-
-    public function testSerialize()
-    {
-        $r = fopen('php://memory', 'r+', false);
-        fwrite($r, 'Text content');
-        rewind($r);
-
-        $p = new TextPart($r);
-        $p->getHeaders()->addTextHeader('foo', 'bar');
-        $expected = clone $p;
-        $this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
-    }
-}
diff --git a/vendor/symfony/mime/Tests/RawMessageTest.php b/vendor/symfony/mime/Tests/RawMessageTest.php
deleted file mode 100644
index 5d1588bf..00000000
--- a/vendor/symfony/mime/Tests/RawMessageTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Mime\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Mime\RawMessage;
-
-class RawMessageTest extends TestCase
-{
-    public function testToString()
-    {
-        $message = new RawMessage('string');
-        $this->assertEquals('string', $message->toString());
-        $this->assertEquals('string', implode('', iterator_to_array($message->toIterable())));
-        // calling methods more than once work
-        $this->assertEquals('string', $message->toString());
-        $this->assertEquals('string', implode('', iterator_to_array($message->toIterable())));
-
-        $message = new RawMessage(new \ArrayObject(['some', ' ', 'string']));
-        $this->assertEquals('some string', $message->toString());
-        $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable())));
-        // calling methods more than once work
-        $this->assertEquals('some string', $message->toString());
-        $this->assertEquals('some string', implode('', iterator_to_array($message->toIterable())));
-    }
-}
diff --git a/vendor/symfony/mime/composer.json b/vendor/symfony/mime/composer.json
index 0697e560..36050a34 100644
--- a/vendor/symfony/mime/composer.json
+++ b/vendor/symfony/mime/composer.json
@@ -16,13 +16,17 @@
         }
     ],
     "require": {
-        "php": "^7.1.3",
+        "php": ">=7.2.5",
         "symfony/polyfill-intl-idn": "^1.10",
-        "symfony/polyfill-mbstring": "^1.0"
+        "symfony/polyfill-mbstring": "^1.0",
+        "symfony/polyfill-php80": "^1.15"
     },
     "require-dev": {
         "egulias/email-validator": "^2.1.10",
-        "symfony/dependency-injection": "~3.4|^4.1"
+        "symfony/dependency-injection": "^4.4|^5.0"
+    },
+    "conflict": {
+        "symfony/mailer": "<4.4"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\Mime\\": "" },
@@ -30,10 +34,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/mime/phpunit.xml.dist b/vendor/symfony/mime/phpunit.xml.dist
deleted file mode 100644
index a1c68d0e..00000000
--- a/vendor/symfony/mime/phpunit.xml.dist
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony MIME Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Resources</directory>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php
index 14d1d0fa..0bc45cfd 100644
--- a/vendor/symfony/polyfill-ctype/bootstrap.php
+++ b/vendor/symfony/polyfill-ctype/bootstrap.php
@@ -12,15 +12,35 @@
 use Symfony\Polyfill\Ctype as p;
 
 if (!function_exists('ctype_alnum')) {
-    function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
-    function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
-    function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
-    function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
-    function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
-    function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
-    function ctype_print($text) { return p\Ctype::ctype_print($text); }
-    function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
-    function ctype_space($text) { return p\Ctype::ctype_space($text); }
-    function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
-    function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
+    function ctype_alnum($input) { return p\Ctype::ctype_alnum($input); }
+}
+if (!function_exists('ctype_alpha')) {
+    function ctype_alpha($input) { return p\Ctype::ctype_alpha($input); }
+}
+if (!function_exists('ctype_cntrl')) {
+    function ctype_cntrl($input) { return p\Ctype::ctype_cntrl($input); }
+}
+if (!function_exists('ctype_digit')) {
+    function ctype_digit($input) { return p\Ctype::ctype_digit($input); }
+}
+if (!function_exists('ctype_graph')) {
+    function ctype_graph($input) { return p\Ctype::ctype_graph($input); }
+}
+if (!function_exists('ctype_lower')) {
+    function ctype_lower($input) { return p\Ctype::ctype_lower($input); }
+}
+if (!function_exists('ctype_print')) {
+    function ctype_print($input) { return p\Ctype::ctype_print($input); }
+}
+if (!function_exists('ctype_punct')) {
+    function ctype_punct($input) { return p\Ctype::ctype_punct($input); }
+}
+if (!function_exists('ctype_space')) {
+    function ctype_space($input) { return p\Ctype::ctype_space($input); }
+}
+if (!function_exists('ctype_upper')) {
+    function ctype_upper($input) { return p\Ctype::ctype_upper($input); }
+}
+if (!function_exists('ctype_xdigit')) {
+    function ctype_xdigit($input) { return p\Ctype::ctype_xdigit($input); }
 }
diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json
index 090f923e..2088bb9f 100644
--- a/vendor/symfony/polyfill-ctype/composer.json
+++ b/vendor/symfony/polyfill-ctype/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
@@ -28,7 +28,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php
index adb718d2..535248a2 100644
--- a/vendor/symfony/polyfill-intl-idn/Idn.php
+++ b/vendor/symfony/polyfill-intl-idn/Idn.php
@@ -1,180 +1,736 @@
 <?php
 
 /*
- * Copyright (c) 2014 TrueServer B.V.
+ * This file is part of the Symfony package.
  *
- * 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:
+ * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
  *
- * 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.
- *
- * Originally forked from
- * https://github.com/true/php-punycode/blob/v2.1.1/src/Punycode.php
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace Symfony\Polyfill\Intl\Idn;
 
+use Exception;
+use Normalizer;
+use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
+use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
+
 /**
- * Partial intl implementation in pure PHP.
- *
- * Implemented:
- * - idn_to_ascii - Convert domain name to IDNA ASCII form
- * - idn_to_utf8  - Convert domain name from IDNA ASCII to Unicode
- *
- * @author Renan Gonçalves <renan.saddam@gmail.com>
- * @author Sebastian Kroczek <sk@xbug.de>
- * @author Dmitry Lukashin <dmitry@lukashin.ru>
- * @author Laurent Bassin <laurent@bassin.info>
+ * @see https://www.unicode.org/reports/tr46/
  *
  * @internal
  */
 final class Idn
 {
+    const ERROR_EMPTY_LABEL = 1;
+    const ERROR_LABEL_TOO_LONG = 2;
+    const ERROR_DOMAIN_NAME_TOO_LONG = 4;
+    const ERROR_LEADING_HYPHEN = 8;
+    const ERROR_TRAILING_HYPHEN = 0x10;
+    const ERROR_HYPHEN_3_4 = 0x20;
+    const ERROR_LEADING_COMBINING_MARK = 0x40;
+    const ERROR_DISALLOWED = 0x80;
+    const ERROR_PUNYCODE = 0x100;
+    const ERROR_LABEL_HAS_DOT = 0x200;
+    const ERROR_INVALID_ACE_LABEL = 0x400;
+    const ERROR_BIDI = 0x800;
+    const ERROR_CONTEXTJ = 0x1000;
+    const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
+    const ERROR_CONTEXTO_DIGITS = 0x4000;
+
     const INTL_IDNA_VARIANT_2003 = 0;
     const INTL_IDNA_VARIANT_UTS46 = 1;
 
-    private static $encodeTable = array(
-        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
-        'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
-        'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-    );
-
-    private static $decodeTable = array(
-        'a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5,
-        'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11,
-        'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17,
-        's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23,
-        'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29,
-        '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35,
+    const IDNA_DEFAULT = 0;
+    const IDNA_ALLOW_UNASSIGNED = 1;
+    const IDNA_USE_STD3_RULES = 2;
+    const IDNA_CHECK_BIDI = 4;
+    const IDNA_CHECK_CONTEXTJ = 8;
+    const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
+    const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
+
+    const MAX_DOMAIN_SIZE = 253;
+    const MAX_LABEL_SIZE = 63;
+
+    const BASE = 36;
+    const TMIN = 1;
+    const TMAX = 26;
+    const SKEW = 38;
+    const DAMP = 700;
+    const INITIAL_BIAS = 72;
+    const INITIAL_N = 128;
+    const DELIMITER = '-';
+    const MAX_INT = 2147483647;
+
+    /**
+     * Contains the numeric value of a basic code point (for use in representing integers) in the
+     * range 0 to BASE-1, or -1 if b is does not represent a value.
+     *
+     * @var array<int, int>
+     */
+    private static $basicToDigit = array(
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
+
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     );
 
-    public static function idn_to_ascii($domain, $options, $variant, &$idna_info = array())
+    /**
+     * @var array<int, int>
+     */
+    private static $virama;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $mapped;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $ignored;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $deviation;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $disallowed;
+
+    /**
+     * @var array<int, string>
+     */
+    private static $disallowed_STD3_mapped;
+
+    /**
+     * @var array<int, bool>
+     */
+    private static $disallowed_STD3_valid;
+
+    /**
+     * @var bool
+     */
+    private static $mappingTableLoaded = false;
+
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ToASCII
+     *
+     * @param string $domainName
+     * @param int    $options
+     * @param int    $variant
+     * @param array  $idna_info
+     *
+     * @return string|false
+     */
+    public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
     {
         if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
             @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
         }
 
-        if (self::INTL_IDNA_VARIANT_UTS46 === $variant) {
-            $domain = mb_strtolower($domain, 'utf-8');
-        }
-
-        $parts = explode('.', $domain);
+        $options = array(
+            'CheckHyphens' => true,
+            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
+            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
+            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
+            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
+            'VerifyDnsLength' => true,
+        );
+        $info = new Info();
+        $labels = self::process((string) $domainName, $options, $info);
+
+        foreach ($labels as $i => $label) {
+            // Only convert labels to punycode that contain non-ASCII code points
+            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
+                try {
+                    $label = 'xn--'.self::punycodeEncode($label);
+                } catch (Exception $e) {
+                    $info->errors |= self::ERROR_PUNYCODE;
+                }
 
-        foreach ($parts as $i => &$part) {
-            if ('' === $part && \count($parts) > 1 + $i) {
-                return false;
-            }
-            if (false === $part = self::encodePart($part)) {
-                return false;
+                $labels[$i] = $label;
             }
         }
 
-        $output = implode('.', $parts);
+        if ($options['VerifyDnsLength']) {
+            self::validateDomainAndLabelLength($labels, $info);
+        }
 
         $idna_info = array(
-            'result' => \strlen($output) > 255 ? false : $output,
-            'isTransitionalDifferent' => false,
-            'errors' => 0,
+            'result' => implode('.', $labels),
+            'isTransitionalDifferent' => $info->transitionalDifferent,
+            'errors' => $info->errors,
         );
 
-        return $idna_info['result'];
+        return 0 === $info->errors ? $idna_info['result'] : false;
     }
 
-    public static function idn_to_utf8($domain, $options, $variant, &$idna_info = array())
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ToUnicode
+     *
+     * @param string $domainName
+     * @param int    $options
+     * @param int    $variant
+     * @param array  $idna_info
+     *
+     * @return string|false
+     */
+    public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
     {
         if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
             @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
         }
 
-        $parts = explode('.', $domain);
+        $info = new Info();
+        $labels = self::process((string) $domainName, array(
+            'CheckHyphens' => true,
+            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
+            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
+            'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
+            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
+        ), $info);
+        $idna_info = array(
+            'result' => implode('.', $labels),
+            'isTransitionalDifferent' => $info->transitionalDifferent,
+            'errors' => $info->errors,
+        );
+
+        return 0 === $info->errors ? $idna_info['result'] : false;
+    }
+
+    /**
+     * @param string $label
+     *
+     * @return bool
+     */
+    private static function isValidContextJ(array $codePoints, $label)
+    {
+        if (!isset(self::$virama)) {
+            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
+        }
+
+        $offset = 0;
 
-        foreach ($parts as &$part) {
-            $length = \strlen($part);
-            if ($length < 1 || 63 < $length) {
+        foreach ($codePoints as $i => $codePoint) {
+            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
                 continue;
             }
-            if (0 !== strpos($part, 'xn--')) {
+
+            if (!isset($codePoints[$i - 1])) {
+                return false;
+            }
+
+            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
+            if (isset(self::$virama[$codePoints[$i - 1]])) {
+                continue;
+            }
+
+            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
+            // True;
+            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
+            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+                $offset += \strlen($matches[1][0]);
+
                 continue;
             }
 
-            $part = substr($part, 4);
-            $part = self::decodePart($part);
+            return false;
         }
 
-        $output = implode('.', $parts);
+        return true;
+    }
 
-        $idna_info = array(
-            'result' => \strlen($output) > 255 ? false : $output,
-            'isTransitionalDifferent' => false,
-            'errors' => 0,
-        );
+    /**
+     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
+     *
+     * @param string              $input
+     * @param array<string, bool> $options
+     *
+     * @return string
+     */
+    private static function mapCodePoints($input, array $options, Info $info)
+    {
+        $str = '';
+        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
+        $transitional = $options['Transitional_Processing'];
+
+        foreach (self::utf8Decode($input) as $codePoint) {
+            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
+
+            switch ($data['status']) {
+                case 'disallowed':
+                    $info->errors |= self::ERROR_DISALLOWED;
+
+                    // no break.
+
+                case 'valid':
+                    $str .= mb_chr($codePoint, 'utf-8');
+
+                    break;
+
+                case 'ignored':
+                    // Do nothing.
+                    break;
+
+                case 'mapped':
+                    $str .= $data['mapping'];
+
+                    break;
+
+                case 'deviation':
+                    $info->transitionalDifferent = true;
+                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
 
-        return $idna_info['result'];
+                    break;
+            }
+        }
+
+        return $str;
     }
 
-    private static function encodePart($input)
+    /**
+     * @see https://www.unicode.org/reports/tr46/#Processing
+     *
+     * @param string              $domain
+     * @param array<string, bool> $options
+     *
+     * @return array<int, string>
+     */
+    private static function process($domain, array $options, Info $info)
     {
-        $codePoints = self::listCodePoints($input);
+        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
+        // we need to respect the VerifyDnsLength option.
+        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
 
-        $n = 128;
-        $bias = 72;
-        $delta = 0;
-        $h = $b = \count($codePoints['basic']);
+        if ($checkForEmptyLabels && '' === $domain) {
+            $info->errors |= self::ERROR_EMPTY_LABEL;
 
-        $output = '';
-        foreach ($codePoints['basic'] as $code) {
-            $output .= mb_chr($code, 'utf-8');
+            return array($domain);
         }
-        if ($input === $output) {
-            return $output;
+
+        // Step 1. Map each code point in the domain name string
+        $domain = self::mapCodePoints($domain, $options, $info);
+
+        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
+        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
+            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
         }
-        if ($b > 0) {
-            $output .= '-';
+
+        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
+        $labels = explode('.', $domain);
+        $lastLabelIndex = \count($labels) - 1;
+
+        // Step 4. Convert and validate each label in the domain name string.
+        foreach ($labels as $i => $label) {
+            $validationOptions = $options;
+
+            if ('xn--' === substr($label, 0, 4)) {
+                try {
+                    $label = self::punycodeDecode(substr($label, 4));
+                } catch (Exception $e) {
+                    $info->errors |= self::ERROR_PUNYCODE;
+
+                    continue;
+                }
+
+                $validationOptions['Transitional_Processing'] = false;
+                $labels[$i] = $label;
+            }
+
+            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
+        }
+
+        if ($info->bidiDomain && !$info->validBidiDomain) {
+            $info->errors |= self::ERROR_BIDI;
+        }
+
+        // Any input domain name string that does not record an error has been successfully
+        // processed according to this specification. Conversely, if an input domain_name string
+        // causes an error, then the processing of the input domain_name string fails. Determining
+        // what to do with error input is up to the caller, and not in the scope of this document.
+        return $labels;
+    }
+
+    /**
+     * @see https://tools.ietf.org/html/rfc5893#section-2
+     *
+     * @param string $label
+     */
+    private static function validateBidiLabel($label, Info $info)
+    {
+        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
+            $info->bidiDomain = true;
+
+            // Step 1. The first character must be a character with Bidi property L, R, or AL.
+            // If it has the R or AL property, it is an RTL label
+            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
+            // CS, ET, ON, BN, or NSM are allowed.
+            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
+            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
+            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
+            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
+                $info->validBidiDomain = false;
+
+                return;
+            }
+
+            return;
+        }
+
+        // We are a LTR label
+        // Step 1. The first character must be a character with Bidi property L, R, or AL.
+        // If it has the L property, it is an LTR label.
+        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+
+        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
+        // ES, CS, ET, ON, BN, or NSM are allowed.
+        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+
+        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
+        // EN, followed by zero or more characters with Bidi property NSM.
+        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
+            $info->validBidiDomain = false;
+
+            return;
+        }
+    }
+
+    /**
+     * @param array<int, string> $labels
+     */
+    private static function validateDomainAndLabelLength(array $labels, Info $info)
+    {
+        $maxDomainSize = self::MAX_DOMAIN_SIZE;
+        $length = \count($labels);
+
+        // Number of "." delimiters.
+        $domainLength = $length - 1;
+
+        // If the last label is empty and it is not the first label, then it is the root label.
+        // Increase the max size by 1, making it 254, to account for the root label's "."
+        // delimiter. This also means we don't need to check the last label's length for being too
+        // long.
+        if ($length > 1 && '' === $labels[$length - 1]) {
+            ++$maxDomainSize;
+            --$length;
+        }
+
+        for ($i = 0; $i < $length; ++$i) {
+            $bytes = \strlen($labels[$i]);
+            $domainLength += $bytes;
+
+            if ($bytes > self::MAX_LABEL_SIZE) {
+                $info->errors |= self::ERROR_LABEL_TOO_LONG;
+            }
+        }
+
+        if ($domainLength > $maxDomainSize) {
+            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
+        }
+    }
+
+    /**
+     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
+     *
+     * @param string              $label
+     * @param array<string, bool> $options
+     * @param bool                $canBeEmpty
+     */
+    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
+    {
+        if ('' === $label) {
+            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
+                $info->errors |= self::ERROR_EMPTY_LABEL;
+            }
+
+            return;
+        }
+
+        // Step 1. The label must be in Unicode Normalization Form C.
+        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
+            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
+        }
+
+        $codePoints = self::utf8Decode($label);
+
+        if ($options['CheckHyphens']) {
+            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
+            // in both the thrid and fourth positions.
+            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
+                $info->errors |= self::ERROR_HYPHEN_3_4;
+            }
+
+            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
+            // HYPHEN-MINUS character.
+            if ('-' === substr($label, 0, 1)) {
+                $info->errors |= self::ERROR_LEADING_HYPHEN;
+            }
+
+            if ('-' === substr($label, -1, 1)) {
+                $info->errors |= self::ERROR_TRAILING_HYPHEN;
+            }
+        }
+
+        // Step 4. The label must not contain a U+002E (.) FULL STOP.
+        if (false !== strpos($label, '.')) {
+            $info->errors |= self::ERROR_LABEL_HAS_DOT;
+        }
+
+        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
+        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
+            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
+        }
+
+        // Step 6. Each code point in the label must only have certain status values according to
+        // Section 5, IDNA Mapping Table:
+        $transitional = $options['Transitional_Processing'];
+        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
+
+        foreach ($codePoints as $codePoint) {
+            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
+            $status = $data['status'];
+
+            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
+                continue;
+            }
+
+            $info->errors |= self::ERROR_DISALLOWED;
+
+            break;
+        }
+
+        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
+        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
+        // [IDNA2008].
+        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
+            $info->errors |= self::ERROR_CONTEXTJ;
         }
 
-        $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
-        sort($codePoints['nonBasic']);
+        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
+        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
+        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
+            self::validateBidiLabel($label, $info);
+        }
+    }
 
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.2
+     *
+     * @param string $input
+     *
+     * @return string
+     */
+    private static function punycodeDecode($input)
+    {
+        $n = self::INITIAL_N;
+        $out = 0;
         $i = 0;
-        $length = mb_strlen($input, 'utf-8');
-        while ($h < $length) {
-            $m = $codePoints['nonBasic'][$i++];
+        $bias = self::INITIAL_BIAS;
+        $lastDelimIndex = strrpos($input, self::DELIMITER);
+        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
+        $inputLength = \strlen($input);
+        $output = array();
+        $bytes = array_map('ord', str_split($input));
+
+        for ($j = 0; $j < $b; ++$j) {
+            if ($bytes[$j] > 0x7F) {
+                throw new Exception('Invalid input');
+            }
+
+            $output[$out++] = $input[$j];
+        }
+
+        if ($b > 0) {
+            ++$b;
+        }
+
+        for ($in = $b; $in < $inputLength; ++$out) {
+            $oldi = $i;
+            $w = 1;
+
+            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
+                if ($in >= $inputLength) {
+                    throw new Exception('Invalid input');
+                }
+
+                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
+
+                if ($digit < 0) {
+                    throw new Exception('Invalid input');
+                }
+
+                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
+                    throw new Exception('Integer overflow');
+                }
+
+                $i += $digit * $w;
+
+                if ($k <= $bias) {
+                    $t = self::TMIN;
+                } elseif ($k >= $bias + self::TMAX) {
+                    $t = self::TMAX;
+                } else {
+                    $t = $k - $bias;
+                }
+
+                if ($digit < $t) {
+                    break;
+                }
+
+                $baseMinusT = self::BASE - $t;
+
+                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
+                    throw new Exception('Integer overflow');
+                }
+
+                $w *= $baseMinusT;
+            }
+
+            $outPlusOne = $out + 1;
+            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
+
+            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
+                throw new Exception('Integer overflow');
+            }
+
+            $n += intdiv($i, $outPlusOne);
+            $i %= $outPlusOne;
+            array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8')));
+        }
+
+        return implode('', $output);
+    }
+
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.3
+     *
+     * @param string $input
+     *
+     * @return string
+     */
+    private static function punycodeEncode($input)
+    {
+        $n = self::INITIAL_N;
+        $delta = 0;
+        $out = 0;
+        $bias = self::INITIAL_BIAS;
+        $inputLength = 0;
+        $output = '';
+        $iter = self::utf8Decode($input);
+
+        foreach ($iter as $codePoint) {
+            ++$inputLength;
+
+            if ($codePoint < 0x80) {
+                $output .= \chr($codePoint);
+                ++$out;
+            }
+        }
+
+        $h = $out;
+        $b = $out;
+
+        if ($b > 0) {
+            $output .= self::DELIMITER;
+            ++$out;
+        }
+
+        while ($h < $inputLength) {
+            $m = self::MAX_INT;
+
+            foreach ($iter as $codePoint) {
+                if ($codePoint >= $n && $codePoint < $m) {
+                    $m = $codePoint;
+                }
+            }
+
+            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
+                throw new Exception('Integer overflow');
+            }
+
             $delta += ($m - $n) * ($h + 1);
             $n = $m;
 
-            foreach ($codePoints['all'] as $c) {
-                if ($c < $n || $c < 128) {
-                    ++$delta;
+            foreach ($iter as $codePoint) {
+                if ($codePoint < $n && 0 === ++$delta) {
+                    throw new Exception('Integer overflow');
                 }
-                if ($c === $n) {
+
+                if ($codePoint === $n) {
                     $q = $delta;
-                    for ($k = 36;; $k += 36) {
-                        $t = self::calculateThreshold($k, $bias);
+
+                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
+                        if ($k <= $bias) {
+                            $t = self::TMIN;
+                        } elseif ($k >= $bias + self::TMAX) {
+                            $t = self::TMAX;
+                        } else {
+                            $t = $k - $bias;
+                        }
+
                         if ($q < $t) {
                             break;
                         }
 
-                        $code = $t + (($q - $t) % (36 - $t));
-                        $output .= self::$encodeTable[$code];
-
-                        $q = ($q - $t) / (36 - $t);
+                        $qMinusT = $q - $t;
+                        $baseMinusT = self::BASE - $t;
+                        $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
+                        ++$out;
+                        $q = intdiv($qMinusT, $baseMinusT);
                     }
 
-                    $output .= self::$encodeTable[$q];
-                    $bias = self::adapt($delta, $h + 1, ($h === $b));
+                    $output .= self::encodeDigit($q, false);
+                    ++$out;
+                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
                     $delta = 0;
                     ++$h;
                 }
@@ -184,100 +740,186 @@ final class Idn
             ++$n;
         }
 
-        $output = 'xn--'.$output;
-
-        return \strlen($output) < 1 || 63 < \strlen($output) ? false : strtolower($output);
+        return $output;
     }
 
-    private static function listCodePoints($input)
+    /**
+     * @see https://tools.ietf.org/html/rfc3492#section-6.1
+     *
+     * @param int  $delta
+     * @param int  $numPoints
+     * @param bool $firstTime
+     *
+     * @return int
+     */
+    private static function adaptBias($delta, $numPoints, $firstTime)
     {
-        $codePoints = array(
-            'all' => array(),
-            'basic' => array(),
-            'nonBasic' => array(),
-        );
+        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
+        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
+        $delta += intdiv($delta, $numPoints);
+        $k = 0;
 
-        $length = mb_strlen($input, 'utf-8');
-        for ($i = 0; $i < $length; ++$i) {
-            $char = mb_substr($input, $i, 1, 'utf-8');
-            $code = mb_ord($char, 'utf-8');
-            if ($code < 128) {
-                $codePoints['all'][] = $codePoints['basic'][] = $code;
-            } else {
-                $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
-            }
+        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
+            $delta = intdiv($delta, self::BASE - self::TMIN);
+            $k += self::BASE;
         }
 
-        return $codePoints;
+        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
     }
 
-    private static function calculateThreshold($k, $bias)
+    /**
+     * @param int  $d
+     * @param bool $flag
+     *
+     * @return string
+     */
+    private static function encodeDigit($d, $flag)
     {
-        if ($k <= $bias + 1) {
-            return 1;
-        }
-        if ($k >= $bias + 26) {
-            return 26;
-        }
-
-        return $k - $bias;
+        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
     }
 
-    private static function adapt($delta, $numPoints, $firstTime)
+    /**
+     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
+     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
+     *
+     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
+     *
+     * @param string $input
+     *
+     * @return array<int, int>
+     */
+    private static function utf8Decode($input)
     {
-        $delta = (int) ($firstTime ? $delta / 700 : $delta / 2);
-        $delta += (int) ($delta / $numPoints);
+        $bytesSeen = 0;
+        $bytesNeeded = 0;
+        $lowerBoundary = 0x80;
+        $upperBoundary = 0xBF;
+        $codePoint = 0;
+        $codePoints = array();
+        $length = \strlen($input);
 
-        $k = 0;
-        while ($delta > 35 * 13) {
-            $delta = (int) ($delta / 35);
-            $k = $k + 36;
+        for ($i = 0; $i < $length; ++$i) {
+            $byte = \ord($input[$i]);
+
+            if (0 === $bytesNeeded) {
+                if ($byte >= 0x00 && $byte <= 0x7F) {
+                    $codePoints[] = $byte;
+
+                    continue;
+                }
+
+                if ($byte >= 0xC2 && $byte <= 0xDF) {
+                    $bytesNeeded = 1;
+                    $codePoint = $byte & 0x1F;
+                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
+                    if (0xE0 === $byte) {
+                        $lowerBoundary = 0xA0;
+                    } elseif (0xED === $byte) {
+                        $upperBoundary = 0x9F;
+                    }
+
+                    $bytesNeeded = 2;
+                    $codePoint = $byte & 0xF;
+                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
+                    if (0xF0 === $byte) {
+                        $lowerBoundary = 0x90;
+                    } elseif (0xF4 === $byte) {
+                        $upperBoundary = 0x8F;
+                    }
+
+                    $bytesNeeded = 3;
+                    $codePoint = $byte & 0x7;
+                } else {
+                    $codePoints[] = 0xFFFD;
+                }
+
+                continue;
+            }
+
+            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
+                $codePoint = 0;
+                $bytesNeeded = 0;
+                $bytesSeen = 0;
+                $lowerBoundary = 0x80;
+                $upperBoundary = 0xBF;
+                --$i;
+                $codePoints[] = 0xFFFD;
+
+                continue;
+            }
+
+            $lowerBoundary = 0x80;
+            $upperBoundary = 0xBF;
+            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
+
+            if (++$bytesSeen !== $bytesNeeded) {
+                continue;
+            }
+
+            $codePoints[] = $codePoint;
+            $codePoint = 0;
+            $bytesNeeded = 0;
+            $bytesSeen = 0;
         }
 
-        return $k + (int) (36 * $delta / ($delta + 38));
+        // String unexpectedly ended, so append a U+FFFD code point.
+        if (0 !== $bytesNeeded) {
+            $codePoints[] = 0xFFFD;
+        }
+
+        return $codePoints;
     }
 
-    private static function decodePart($input)
+    /**
+     * @param int  $codePoint
+     * @param bool $useSTD3ASCIIRules
+     *
+     * @return array{status: string, mapping?: string}
+     */
+    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
     {
-        $n = 128;
-        $i = 0;
-        $bias = 72;
-        $output = '';
+        if (!self::$mappingTableLoaded) {
+            self::$mappingTableLoaded = true;
+            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
+            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
+            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
+            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
+            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
+            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
+        }
 
-        $pos = strrpos($input, '-');
-        if (false !== $pos) {
-            $output = substr($input, 0, $pos++);
-        } else {
-            $pos = 0;
+        if (isset(self::$mapped[$codePoint])) {
+            return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
         }
 
-        $outputLength = \strlen($output);
-        $inputLength = \strlen($input);
+        if (isset(self::$ignored[$codePoint])) {
+            return array('status' => 'ignored');
+        }
 
-        while ($pos < $inputLength) {
-            $oldi = $i;
-            $w = 1;
+        if (isset(self::$deviation[$codePoint])) {
+            return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
+        }
 
-            for ($k = 36;; $k += 36) {
-                $digit = self::$decodeTable[$input[$pos++]];
-                $i += $digit * $w;
-                $t = self::calculateThreshold($k, $bias);
+        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
+            return array('status' => 'disallowed');
+        }
 
-                if ($digit < $t) {
-                    break;
-                }
+        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
 
-                $w *= 36 - $t;
+        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
+            $status = 'disallowed';
+
+            if (!$useSTD3ASCIIRules) {
+                $status = $isDisallowedMapped ? 'mapped' : 'valid';
             }
 
-            $bias = self::adapt($i - $oldi, ++$outputLength, 0 === $oldi);
-            $n = $n + (int) ($i / $outputLength);
-            $i = $i % $outputLength;
-            $output = mb_substr($output, 0, $i, 'utf-8').mb_chr($n, 'utf-8').mb_substr($output, $i, $outputLength - 1, 'utf-8');
+            if ($isDisallowedMapped) {
+                return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
+            }
 
-            ++$i;
+            return array('status' => $status);
         }
 
-        return $output;
+        return array('status' => 'valid');
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE
index 3f853aaf..03c5e257 100644
--- a/vendor/symfony/polyfill-intl-idn/LICENSE
+++ b/vendor/symfony/polyfill-intl-idn/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2018-2019 Fabien Potencier
+Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md
index 5fd8c6e9..2e75f2e5 100644
--- a/vendor/symfony/polyfill-intl-idn/README.md
+++ b/vendor/symfony/polyfill-intl-idn/README.md
@@ -1,7 +1,7 @@
 Symfony Polyfill / Intl: Idn
 ============================
 
-This component provides `idn_to_ascii` and `idn_to_utf8` functions to users who run php versions without the intl extension.
+This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php
index c6e3921d..f02d5de7 100644
--- a/vendor/symfony/polyfill-intl-idn/bootstrap.php
+++ b/vendor/symfony/polyfill-intl-idn/bootstrap.php
@@ -11,49 +11,131 @@
 
 use Symfony\Polyfill\Intl\Idn as p;
 
-if (!function_exists('idn_to_ascii')) {
+if (extension_loaded('intl')) {
+    return;
+}
+
+if (!defined('U_IDNA_PROHIBITED_ERROR')) {
     define('U_IDNA_PROHIBITED_ERROR', 66560);
+}
+if (!defined('U_IDNA_ERROR_START')) {
     define('U_IDNA_ERROR_START', 66560);
+}
+if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
     define('U_IDNA_UNASSIGNED_ERROR', 66561);
+}
+if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
     define('U_IDNA_CHECK_BIDI_ERROR', 66562);
+}
+if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
     define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
+}
+if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
     define('U_IDNA_ACE_PREFIX_ERROR', 66564);
+}
+if (!defined('U_IDNA_VERIFICATION_ERROR')) {
     define('U_IDNA_VERIFICATION_ERROR', 66565);
+}
+if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
     define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
+}
+if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
     define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
+}
+if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
     define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
+}
+if (!defined('U_IDNA_ERROR_LIMIT')) {
     define('U_IDNA_ERROR_LIMIT', 66569);
+}
+if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
     define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
+}
+if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
     define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
+}
+if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
     define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
+}
+if (!defined('IDNA_DEFAULT')) {
     define('IDNA_DEFAULT', 0);
+}
+if (!defined('IDNA_ALLOW_UNASSIGNED')) {
     define('IDNA_ALLOW_UNASSIGNED', 1);
+}
+if (!defined('IDNA_USE_STD3_RULES')) {
     define('IDNA_USE_STD3_RULES', 2);
+}
+if (!defined('IDNA_CHECK_BIDI')) {
     define('IDNA_CHECK_BIDI', 4);
+}
+if (!defined('IDNA_CHECK_CONTEXTJ')) {
     define('IDNA_CHECK_CONTEXTJ', 8);
+}
+if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
     define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
+}
+if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
     define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
+}
+if (!defined('INTL_IDNA_VARIANT_2003')) {
     define('INTL_IDNA_VARIANT_2003', 0);
+}
+if (!defined('INTL_IDNA_VARIANT_UTS46')) {
     define('INTL_IDNA_VARIANT_UTS46', 1);
+}
+if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
     define('IDNA_ERROR_EMPTY_LABEL', 1);
+}
+if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
     define('IDNA_ERROR_LABEL_TOO_LONG', 2);
+}
+if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
     define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
+}
+if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
     define('IDNA_ERROR_LEADING_HYPHEN', 8);
+}
+if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
     define('IDNA_ERROR_TRAILING_HYPHEN', 16);
+}
+if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
     define('IDNA_ERROR_HYPHEN_3_4', 32);
+}
+if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
     define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
+}
+if (!defined('IDNA_ERROR_DISALLOWED')) {
     define('IDNA_ERROR_DISALLOWED', 128);
+}
+if (!defined('IDNA_ERROR_PUNYCODE')) {
     define('IDNA_ERROR_PUNYCODE', 256);
+}
+if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
     define('IDNA_ERROR_LABEL_HAS_DOT', 512);
+}
+if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
     define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
+}
+if (!defined('IDNA_ERROR_BIDI')) {
     define('IDNA_ERROR_BIDI', 2048);
+}
+if (!defined('IDNA_ERROR_CONTEXTJ')) {
     define('IDNA_ERROR_CONTEXTJ', 4096);
+}
 
-    if (PHP_VERSION_ID < 70400) {
+if (PHP_VERSION_ID < 70400) {
+    if (!function_exists('idn_to_ascii')) {
         function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+    }
+    if (!function_exists('idn_to_utf8')) {
         function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
-    } else {
+    }
+} else {
+    if (!function_exists('idn_to_ascii')) {
         function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
+    }
+    if (!function_exists('idn_to_utf8')) {
         function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
     }
 }
diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json
index d2e3f4b1..a3bd0d76 100644
--- a/vendor/symfony/polyfill-intl-idn/composer.json
+++ b/vendor/symfony/polyfill-intl-idn/composer.json
@@ -10,15 +10,19 @@
             "name": "Laurent Bassin",
             "email": "laurent@bassin.info"
         },
+        {
+            "name": "Trevor Rowbotham",
+            "email": "trevor.rowbotham@pm.me"
+        },
         {
             "name": "Symfony Community",
             "homepage": "https://symfony.com/contributors"
         }
     ],
     "require": {
-        "php": ">=5.3.3",
-        "symfony/polyfill-mbstring": "^1.3",
-        "symfony/polyfill-php72": "^1.9"
+        "php": ">=7.1",
+        "symfony/polyfill-intl-normalizer": "^1.10",
+        "symfony/polyfill-php72": "^1.10"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
@@ -30,7 +34,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
index 1fc4feea..7bb30237 100644
--- a/vendor/symfony/polyfill-mbstring/Mbstring.php
+++ b/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -115,10 +115,8 @@ final class Mbstring
         return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
     }
 
-    public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
+    public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
     {
-        $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
-
         $ok = true;
         array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
             if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
@@ -512,7 +510,9 @@ final class Mbstring
             $offset = 0;
         } elseif ($offset = (int) $offset) {
             if ($offset < 0) {
-                $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                if (0 > $offset += self::mb_strlen($needle)) {
+                    $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                }
                 $offset = 0;
             } else {
                 $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
@@ -532,7 +532,7 @@ final class Mbstring
             return null;
         }
 
-        if ($split_length < 1) {
+        if (1 > $split_length = (int) $split_length) {
             trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
 
             return false;
@@ -542,6 +542,17 @@ final class Mbstring
             $encoding = mb_internal_encoding();
         }
 
+        if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+            $rx = '/(';
+            while (65535 < $split_length) {
+                $rx .= '.{65535}';
+                $split_length -= 65535;
+            }
+            $rx .= '.{'.$split_length.'})/us';
+
+            return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+        }
+
         $result = array();
         $length = mb_strlen($string, $encoding);
 
@@ -616,10 +627,11 @@ final class Mbstring
     {
         $encoding = self::getEncoding($encoding);
         if ('CP850' === $encoding || 'ASCII' === $encoding) {
-            return strrchr($haystack, $needle, $part);
+            $pos = strrpos($haystack, $needle);
+        } else {
+            $needle = self::mb_substr($needle, 0, 1, $encoding);
+            $pos = iconv_strrpos($haystack, $needle, $encoding);
         }
-        $needle = self::mb_substr($needle, 0, 1, $encoding);
-        $pos = iconv_strrpos($haystack, $needle, $encoding);
 
         return self::getSubpart($pos, $part, $haystack, $encoding);
     }
@@ -815,11 +827,16 @@ final class Mbstring
             return self::$internalEncoding;
         }
 
+        if ('UTF-8' === $encoding) {
+            return 'UTF-8';
+        }
+
         $encoding = strtoupper($encoding);
 
         if ('8BIT' === $encoding || 'BINARY' === $encoding) {
             return 'CP850';
         }
+
         if ('UTF8' === $encoding) {
             return 'UTF-8';
         }
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
index 342e8286..4efb599d 100644
--- a/vendor/symfony/polyfill-mbstring/README.md
+++ b/vendor/symfony/polyfill-mbstring/README.md
@@ -2,7 +2,7 @@ Symfony Polyfill / Mbstring
 ===========================
 
 This component provides a partial, native PHP implementation for the
-[Mbstring](http://php.net/mbstring) extension.
+[Mbstring](https://php.net/mbstring) extension.
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
index e6fbfa64..a22eca57 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -1,6 +1,6 @@
 <?php
 
-return array(
+return array (
   'A' => 'a',
   'B' => 'b',
   'C' => 'c',
@@ -510,6 +510,138 @@ return array(
   'Ⴥ' => 'ⴥ',
   'Ⴧ' => 'ⴧ',
   'Ⴭ' => 'ⴭ',
+  'Ꭰ' => 'ꭰ',
+  'Ꭱ' => 'ꭱ',
+  'Ꭲ' => 'ꭲ',
+  'Ꭳ' => 'ꭳ',
+  'Ꭴ' => 'ꭴ',
+  'Ꭵ' => 'ꭵ',
+  'Ꭶ' => 'ꭶ',
+  'Ꭷ' => 'ꭷ',
+  'Ꭸ' => 'ꭸ',
+  'Ꭹ' => 'ꭹ',
+  'Ꭺ' => 'ꭺ',
+  'Ꭻ' => 'ꭻ',
+  'Ꭼ' => 'ꭼ',
+  'Ꭽ' => 'ꭽ',
+  'Ꭾ' => 'ꭾ',
+  'Ꭿ' => 'ꭿ',
+  'Ꮀ' => 'ꮀ',
+  'Ꮁ' => 'ꮁ',
+  'Ꮂ' => 'ꮂ',
+  'Ꮃ' => 'ꮃ',
+  'Ꮄ' => 'ꮄ',
+  'Ꮅ' => 'ꮅ',
+  'Ꮆ' => 'ꮆ',
+  'Ꮇ' => 'ꮇ',
+  'Ꮈ' => 'ꮈ',
+  'Ꮉ' => 'ꮉ',
+  'Ꮊ' => 'ꮊ',
+  'Ꮋ' => 'ꮋ',
+  'Ꮌ' => 'ꮌ',
+  'Ꮍ' => 'ꮍ',
+  'Ꮎ' => 'ꮎ',
+  'Ꮏ' => 'ꮏ',
+  'Ꮐ' => 'ꮐ',
+  'Ꮑ' => 'ꮑ',
+  'Ꮒ' => 'ꮒ',
+  'Ꮓ' => 'ꮓ',
+  'Ꮔ' => 'ꮔ',
+  'Ꮕ' => 'ꮕ',
+  'Ꮖ' => 'ꮖ',
+  'Ꮗ' => 'ꮗ',
+  'Ꮘ' => 'ꮘ',
+  'Ꮙ' => 'ꮙ',
+  'Ꮚ' => 'ꮚ',
+  'Ꮛ' => 'ꮛ',
+  'Ꮜ' => 'ꮜ',
+  'Ꮝ' => 'ꮝ',
+  'Ꮞ' => 'ꮞ',
+  'Ꮟ' => 'ꮟ',
+  'Ꮠ' => 'ꮠ',
+  'Ꮡ' => 'ꮡ',
+  'Ꮢ' => 'ꮢ',
+  'Ꮣ' => 'ꮣ',
+  'Ꮤ' => 'ꮤ',
+  'Ꮥ' => 'ꮥ',
+  'Ꮦ' => 'ꮦ',
+  'Ꮧ' => 'ꮧ',
+  'Ꮨ' => 'ꮨ',
+  'Ꮩ' => 'ꮩ',
+  'Ꮪ' => 'ꮪ',
+  'Ꮫ' => 'ꮫ',
+  'Ꮬ' => 'ꮬ',
+  'Ꮭ' => 'ꮭ',
+  'Ꮮ' => 'ꮮ',
+  'Ꮯ' => 'ꮯ',
+  'Ꮰ' => 'ꮰ',
+  'Ꮱ' => 'ꮱ',
+  'Ꮲ' => 'ꮲ',
+  'Ꮳ' => 'ꮳ',
+  'Ꮴ' => 'ꮴ',
+  'Ꮵ' => 'ꮵ',
+  'Ꮶ' => 'ꮶ',
+  'Ꮷ' => 'ꮷ',
+  'Ꮸ' => 'ꮸ',
+  'Ꮹ' => 'ꮹ',
+  'Ꮺ' => 'ꮺ',
+  'Ꮻ' => 'ꮻ',
+  'Ꮼ' => 'ꮼ',
+  'Ꮽ' => 'ꮽ',
+  'Ꮾ' => 'ꮾ',
+  'Ꮿ' => 'ꮿ',
+  'Ᏸ' => 'ᏸ',
+  'Ᏹ' => 'ᏹ',
+  'Ᏺ' => 'ᏺ',
+  'Ᏻ' => 'ᏻ',
+  'Ᏼ' => 'ᏼ',
+  'Ᏽ' => 'ᏽ',
+  'Ა' => 'ა',
+  'Ბ' => 'ბ',
+  'Გ' => 'გ',
+  'Დ' => 'დ',
+  'Ე' => 'ე',
+  'Ვ' => 'ვ',
+  'Ზ' => 'ზ',
+  'Თ' => 'თ',
+  'Ი' => 'ი',
+  'Კ' => 'კ',
+  'Ლ' => 'ლ',
+  'Მ' => 'მ',
+  'Ნ' => 'ნ',
+  'Ო' => 'ო',
+  'Პ' => 'პ',
+  'Ჟ' => 'ჟ',
+  'Რ' => 'რ',
+  'Ს' => 'ს',
+  'Ტ' => 'ტ',
+  'Უ' => 'უ',
+  'Ფ' => 'ფ',
+  'Ქ' => 'ქ',
+  'Ღ' => 'ღ',
+  'Ყ' => 'ყ',
+  'Შ' => 'შ',
+  'Ჩ' => 'ჩ',
+  'Ც' => 'ც',
+  'Ძ' => 'ძ',
+  'Წ' => 'წ',
+  'Ჭ' => 'ჭ',
+  'Ხ' => 'ხ',
+  'Ჯ' => 'ჯ',
+  'Ჰ' => 'ჰ',
+  'Ჱ' => 'ჱ',
+  'Ჲ' => 'ჲ',
+  'Ჳ' => 'ჳ',
+  'Ჴ' => 'ჴ',
+  'Ჵ' => 'ჵ',
+  'Ჶ' => 'ჶ',
+  'Ჷ' => 'ჷ',
+  'Ჸ' => 'ჸ',
+  'Ჹ' => 'ჹ',
+  'Ჺ' => 'ჺ',
+  'Ჽ' => 'ჽ',
+  'Ჾ' => 'ჾ',
+  'Ჿ' => 'ჿ',
   'Ḁ' => 'ḁ',
   'Ḃ' => 'ḃ',
   'Ḅ' => 'ḅ',
@@ -993,8 +1125,24 @@ return array(
   'Ɜ' => 'ɜ',
   'Ɡ' => 'ɡ',
   'Ɬ' => 'ɬ',
+  'Ɪ' => 'ɪ',
   'êž°' => 'Êž',
   'Ʇ' => 'ʇ',
+  'Ʝ' => 'ʝ',
+  'êž³' => 'ê­“',
+  'êž´' => 'êžµ',
+  'êž¶' => 'êž·',
+  'Ꞹ' => 'ꞹ',
+  'Ꞻ' => 'ꞻ',
+  'êž¼' => 'êž½',
+  'êž¾' => 'êž¿',
+  'Ꟃ' => 'ꟃ',
+  'Ꞔ' => 'ꞔ',
+  'Ʂ' => 'ʂ',
+  'Ᶎ' => 'ᶎ',
+  'Ꟈ' => 'ꟈ',
+  'Ꟊ' => 'ꟊ',
+  'Ꟶ' => 'ꟶ',
   'A' => 'a',
   'B' => 'b',
   'C' => 'c',
@@ -1061,6 +1209,93 @@ return array(
   '𐐥' => '𐑍',
   '𐐦' => '𐑎',
   '𐐧' => '𐑏',
+  '𐒰' => '𐓘',
+  '𐒱' => '𐓙',
+  '𐒲' => '𐓚',
+  '𐒳' => '𐓛',
+  '𐒴' => '𐓜',
+  '𐒵' => '𐓝',
+  '𐒶' => '𐓞',
+  '𐒷' => '𐓟',
+  '𐒸' => '𐓠',
+  '𐒹' => '𐓡',
+  '𐒺' => '𐓢',
+  '𐒻' => '𐓣',
+  '𐒼' => '𐓤',
+  '𐒽' => '𐓥',
+  '𐒾' => '𐓦',
+  '𐒿' => '𐓧',
+  '𐓀' => '𐓨',
+  '𐓁' => '𐓩',
+  '𐓂' => '𐓪',
+  '𐓃' => '𐓫',
+  '𐓄' => '𐓬',
+  '𐓅' => '𐓭',
+  '𐓆' => '𐓮',
+  '𐓇' => '𐓯',
+  '𐓈' => '𐓰',
+  '𐓉' => '𐓱',
+  '𐓊' => '𐓲',
+  '𐓋' => '𐓳',
+  '𐓌' => '𐓴',
+  '𐓍' => '𐓵',
+  '𐓎' => '𐓶',
+  '𐓏' => '𐓷',
+  '𐓐' => '𐓸',
+  '𐓑' => '𐓹',
+  '𐓒' => '𐓺',
+  '𐓓' => '𐓻',
+  '𐲀' => '𐳀',
+  '𐲁' => '𐳁',
+  '𐲂' => '𐳂',
+  '𐲃' => '𐳃',
+  '𐲄' => '𐳄',
+  '𐲅' => '𐳅',
+  '𐲆' => '𐳆',
+  '𐲇' => '𐳇',
+  '𐲈' => '𐳈',
+  '𐲉' => '𐳉',
+  '𐲊' => '𐳊',
+  '𐲋' => '𐳋',
+  '𐲌' => '𐳌',
+  '𐲍' => '𐳍',
+  '𐲎' => '𐳎',
+  '𐲏' => '𐳏',
+  '𐲐' => '𐳐',
+  '𐲑' => '𐳑',
+  '𐲒' => '𐳒',
+  '𐲓' => '𐳓',
+  '𐲔' => '𐳔',
+  '𐲕' => '𐳕',
+  '𐲖' => '𐳖',
+  '𐲗' => '𐳗',
+  '𐲘' => '𐳘',
+  '𐲙' => '𐳙',
+  '𐲚' => '𐳚',
+  '𐲛' => '𐳛',
+  '𐲜' => '𐳜',
+  '𐲝' => '𐳝',
+  '𐲞' => '𐳞',
+  '𐲟' => '𐳟',
+  '𐲠' => '𐳠',
+  '𐲡' => '𐳡',
+  '𐲢' => '𐳢',
+  '𐲣' => '𐳣',
+  '𐲤' => '𐳤',
+  '𐲥' => '𐳥',
+  '𐲦' => '𐳦',
+  '𐲧' => '𐳧',
+  '𐲨' => '𐳨',
+  '𐲩' => '𐳩',
+  '𐲪' => '𐳪',
+  '𐲫' => '𐳫',
+  '𐲬' => '𐳬',
+  '𐲭' => '𐳭',
+  '𐲮' => '𐳮',
+  '𐲯' => '𐳯',
+  '𐲰' => '𐳰',
+  '𐲱' => '𐳱',
+  '𐲲' => '𐳲',
   'ð‘¢ ' => 'ð‘£€',
   '𑢡' => '𑣁',
   '𑢢' => '𑣂',
@@ -1093,4 +1328,70 @@ return array(
   '𑢽' => '𑣝',
   '𑢾' => '𑣞',
   '𑢿' => '𑣟',
+  'ð–¹€' => 'ð–¹ ',
+  '𖹁' => '𖹡',
+  '𖹂' => '𖹢',
+  '𖹃' => '𖹣',
+  '𖹄' => '𖹤',
+  'ð–¹…' => 'ð–¹¥',
+  '𖹆' => '𖹦',
+  '𖹇' => '𖹧',
+  '𖹈' => '𖹨',
+  '𖹉' => '𖹩',
+  '𖹊' => '𖹪',
+  '𖹋' => '𖹫',
+  '𖹌' => '𖹬',
+  '𖹍' => '𖹭',
+  '𖹎' => '𖹮',
+  '𖹏' => '𖹯',
+  '𖹐' => '𖹰',
+  '𖹑' => '𖹱',
+  'ð–¹’' => 'ð–¹²',
+  '𖹓' => '𖹳',
+  'ð–¹”' => 'ð–¹´',
+  '𖹕' => '𖹵',
+  'ð–¹–' => 'ð–¹¶',
+  'ð–¹—' => 'ð–¹·',
+  '𖹘' => '𖹸',
+  'ð–¹™' => 'ð–¹¹',
+  '𖹚' => '𖹺',
+  'ð–¹›' => 'ð–¹»',
+  '𖹜' => '𖹼',
+  '𖹝' => '𖹽',
+  '𖹞' => '𖹾',
+  '𖹟' => '𖹿',
+  '𞤀' => '𞤢',
+  '𞤁' => '𞤣',
+  '𞤂' => '𞤤',
+  '𞤃' => '𞤥',
+  '𞤄' => '𞤦',
+  '𞤅' => '𞤧',
+  '𞤆' => '𞤨',
+  '𞤇' => '𞤩',
+  '𞤈' => '𞤪',
+  '𞤉' => '𞤫',
+  '𞤊' => '𞤬',
+  '𞤋' => '𞤭',
+  '𞤌' => '𞤮',
+  '𞤍' => '𞤯',
+  '𞤎' => '𞤰',
+  '𞤏' => '𞤱',
+  '𞤐' => '𞤲',
+  '𞤑' => '𞤳',
+  '𞤒' => '𞤴',
+  '𞤓' => '𞤵',
+  '𞤔' => '𞤶',
+  '𞤕' => '𞤷',
+  '𞤖' => '𞤸',
+  '𞤗' => '𞤹',
+  '𞤘' => '𞤺',
+  '𞤙' => '𞤻',
+  '𞤚' => '𞤼',
+  '𞤛' => '𞤽',
+  '𞤜' => '𞤾',
+  '𞤝' => '𞤿',
+  '𞤞' => '𞥀',
+  '𞤟' => '𞥁',
+  '𞤠' => '𞥂',
+  '𞤡' => '𞥃',
 );
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
index b8103b2e..ecbc1589 100644
--- a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
@@ -1,6 +1,6 @@
 <?php
 
-return array(
+return array (
   'a' => 'A',
   'b' => 'B',
   'c' => 'C',
@@ -225,6 +225,7 @@ return array(
   'ɦ' => 'Ɦ',
   'ɨ' => 'Ɨ',
   'É©' => 'Æ–',
+  'ɪ' => 'Ɪ',
   'É«' => 'â±¢',
   'ɬ' => 'Ɬ',
   'ɯ' => 'Ɯ',
@@ -233,6 +234,7 @@ return array(
   'ɵ' => 'Ɵ',
   'ɽ' => 'Ɽ',
   'ʀ' => 'Ʀ',
+  'ʂ' => 'Ʂ',
   'ʃ' => 'Ʃ',
   'ʇ' => 'Ʇ',
   'ʈ' => 'Ʈ',
@@ -241,6 +243,7 @@ return array(
   'ʋ' => 'Ʋ',
   'ʌ' => 'Ʌ',
   'Ê’' => 'Æ·',
+  'ʝ' => 'Ʝ',
   'Êž' => 'êž°',
   'ͅ' => 'Ι',
   'ͱ' => 'Ͱ',
@@ -493,8 +496,70 @@ return array(
   'Ö„' => 'Õ”',
   'Ö…' => 'Õ•',
   'Ö†' => 'Õ–',
+  'ა' => 'Ა',
+  'ბ' => 'Ბ',
+  'გ' => 'Გ',
+  'დ' => 'Დ',
+  'ე' => 'Ე',
+  'ვ' => 'Ვ',
+  'ზ' => 'Ზ',
+  'თ' => 'Თ',
+  'ი' => 'Ი',
+  'კ' => 'Კ',
+  'ლ' => 'Ლ',
+  'მ' => 'Მ',
+  'ნ' => 'Ნ',
+  'ო' => 'Ო',
+  'პ' => 'Პ',
+  'ჟ' => 'Ჟ',
+  'რ' => 'Რ',
+  'ს' => 'Ს',
+  'ტ' => 'Ტ',
+  'უ' => 'Უ',
+  'ფ' => 'Ფ',
+  'ქ' => 'Ქ',
+  'ღ' => 'Ღ',
+  'ყ' => 'Ყ',
+  'შ' => 'Შ',
+  'ჩ' => 'Ჩ',
+  'ც' => 'Ც',
+  'ძ' => 'Ძ',
+  'წ' => 'Წ',
+  'ჭ' => 'Ჭ',
+  'ხ' => 'Ხ',
+  'ჯ' => 'Ჯ',
+  'ჰ' => 'Ჰ',
+  'ჱ' => 'Ჱ',
+  'ჲ' => 'Ჲ',
+  'ჳ' => 'Ჳ',
+  'ჴ' => 'Ჴ',
+  'ჵ' => 'Ჵ',
+  'ჶ' => 'Ჶ',
+  'ჷ' => 'Ჷ',
+  'ჸ' => 'Ჸ',
+  'ჹ' => 'Ჹ',
+  'ჺ' => 'Ჺ',
+  'ჽ' => 'Ჽ',
+  'ჾ' => 'Ჾ',
+  'ჿ' => 'Ჿ',
+  'ᏸ' => 'Ᏸ',
+  'ᏹ' => 'Ᏹ',
+  'ᏺ' => 'Ᏺ',
+  'ᏻ' => 'Ᏻ',
+  'ᏼ' => 'Ᏼ',
+  'ᏽ' => 'Ᏽ',
+  'á²€' => 'Ð’',
+  'ᲁ' => 'Д',
+  'ᲂ' => 'О',
+  'ᲃ' => 'С',
+  'ᲄ' => 'Т',
+  'ᲅ' => 'Т',
+  'ᲆ' => 'Ъ',
+  'ᲇ' => 'Ѣ',
+  'ᲈ' => 'Ꙋ',
   'ᵹ' => 'Ᵹ',
   'áµ½' => 'â±£',
+  'ᶎ' => 'Ᶎ',
   'ḁ' => 'Ḁ',
   'ḃ' => 'Ḃ',
   'ḅ' => 'Ḅ',
@@ -993,6 +1058,7 @@ return array(
   'ꞌ' => 'Ꞌ',
   'ꞑ' => 'Ꞑ',
   'êž“' => 'êž’',
+  'ꞔ' => 'Ꞔ',
   'êž—' => 'êž–',
   'ꞙ' => 'Ꞙ',
   'êž›' => 'êžš',
@@ -1003,6 +1069,97 @@ return array(
   'ꞥ' => 'Ꞥ',
   'ꞧ' => 'Ꞧ',
   'ꞩ' => 'Ꞩ',
+  'êžµ' => 'êž´',
+  'êž·' => 'êž¶',
+  'ꞹ' => 'Ꞹ',
+  'ꞻ' => 'Ꞻ',
+  'êž½' => 'êž¼',
+  'êž¿' => 'êž¾',
+  'ꟃ' => 'Ꟃ',
+  'ꟈ' => 'Ꟈ',
+  'ꟊ' => 'Ꟊ',
+  'ꟶ' => 'Ꟶ',
+  'ê­“' => 'êž³',
+  'ꭰ' => 'Ꭰ',
+  'ꭱ' => 'Ꭱ',
+  'ꭲ' => 'Ꭲ',
+  'ꭳ' => 'Ꭳ',
+  'ꭴ' => 'Ꭴ',
+  'ꭵ' => 'Ꭵ',
+  'ꭶ' => 'Ꭶ',
+  'ꭷ' => 'Ꭷ',
+  'ꭸ' => 'Ꭸ',
+  'ꭹ' => 'Ꭹ',
+  'ꭺ' => 'Ꭺ',
+  'ꭻ' => 'Ꭻ',
+  'ꭼ' => 'Ꭼ',
+  'ꭽ' => 'Ꭽ',
+  'ꭾ' => 'Ꭾ',
+  'ꭿ' => 'Ꭿ',
+  'ꮀ' => 'Ꮀ',
+  'ꮁ' => 'Ꮁ',
+  'ꮂ' => 'Ꮂ',
+  'ꮃ' => 'Ꮃ',
+  'ꮄ' => 'Ꮄ',
+  'ꮅ' => 'Ꮅ',
+  'ꮆ' => 'Ꮆ',
+  'ꮇ' => 'Ꮇ',
+  'ꮈ' => 'Ꮈ',
+  'ꮉ' => 'Ꮉ',
+  'ꮊ' => 'Ꮊ',
+  'ꮋ' => 'Ꮋ',
+  'ꮌ' => 'Ꮌ',
+  'ꮍ' => 'Ꮍ',
+  'ꮎ' => 'Ꮎ',
+  'ꮏ' => 'Ꮏ',
+  'ꮐ' => 'Ꮐ',
+  'ꮑ' => 'Ꮑ',
+  'ꮒ' => 'Ꮒ',
+  'ꮓ' => 'Ꮓ',
+  'ꮔ' => 'Ꮔ',
+  'ꮕ' => 'Ꮕ',
+  'ꮖ' => 'Ꮖ',
+  'ꮗ' => 'Ꮗ',
+  'ꮘ' => 'Ꮘ',
+  'ꮙ' => 'Ꮙ',
+  'ꮚ' => 'Ꮚ',
+  'ꮛ' => 'Ꮛ',
+  'ꮜ' => 'Ꮜ',
+  'ꮝ' => 'Ꮝ',
+  'ꮞ' => 'Ꮞ',
+  'ꮟ' => 'Ꮟ',
+  'ꮠ' => 'Ꮠ',
+  'ꮡ' => 'Ꮡ',
+  'ꮢ' => 'Ꮢ',
+  'ꮣ' => 'Ꮣ',
+  'ꮤ' => 'Ꮤ',
+  'ꮥ' => 'Ꮥ',
+  'ꮦ' => 'Ꮦ',
+  'ꮧ' => 'Ꮧ',
+  'ꮨ' => 'Ꮨ',
+  'ꮩ' => 'Ꮩ',
+  'ꮪ' => 'Ꮪ',
+  'ꮫ' => 'Ꮫ',
+  'ꮬ' => 'Ꮬ',
+  'ꮭ' => 'Ꮭ',
+  'ꮮ' => 'Ꮮ',
+  'ꮯ' => 'Ꮯ',
+  'ꮰ' => 'Ꮰ',
+  'ꮱ' => 'Ꮱ',
+  'ꮲ' => 'Ꮲ',
+  'ꮳ' => 'Ꮳ',
+  'ꮴ' => 'Ꮴ',
+  'ꮵ' => 'Ꮵ',
+  'ꮶ' => 'Ꮶ',
+  'ꮷ' => 'Ꮷ',
+  'ꮸ' => 'Ꮸ',
+  'ꮹ' => 'Ꮹ',
+  'ꮺ' => 'Ꮺ',
+  'ꮻ' => 'Ꮻ',
+  'ꮼ' => 'Ꮼ',
+  'ꮽ' => 'Ꮽ',
+  'ꮾ' => 'Ꮾ',
+  'ꮿ' => 'Ꮿ',
   'a' => 'A',
   'b' => 'B',
   'c' => 'C',
@@ -1069,6 +1226,93 @@ return array(
   '𐑍' => '𐐥',
   '𐑎' => '𐐦',
   '𐑏' => '𐐧',
+  '𐓘' => '𐒰',
+  '𐓙' => '𐒱',
+  '𐓚' => '𐒲',
+  '𐓛' => '𐒳',
+  '𐓜' => '𐒴',
+  '𐓝' => '𐒵',
+  '𐓞' => '𐒶',
+  '𐓟' => '𐒷',
+  '𐓠' => '𐒸',
+  '𐓡' => '𐒹',
+  '𐓢' => '𐒺',
+  '𐓣' => '𐒻',
+  '𐓤' => '𐒼',
+  '𐓥' => '𐒽',
+  '𐓦' => '𐒾',
+  '𐓧' => '𐒿',
+  '𐓨' => '𐓀',
+  '𐓩' => '𐓁',
+  '𐓪' => '𐓂',
+  '𐓫' => '𐓃',
+  '𐓬' => '𐓄',
+  '𐓭' => '𐓅',
+  '𐓮' => '𐓆',
+  '𐓯' => '𐓇',
+  '𐓰' => '𐓈',
+  '𐓱' => '𐓉',
+  '𐓲' => '𐓊',
+  '𐓳' => '𐓋',
+  '𐓴' => '𐓌',
+  '𐓵' => '𐓍',
+  '𐓶' => '𐓎',
+  '𐓷' => '𐓏',
+  '𐓸' => '𐓐',
+  '𐓹' => '𐓑',
+  '𐓺' => '𐓒',
+  '𐓻' => '𐓓',
+  '𐳀' => '𐲀',
+  '𐳁' => '𐲁',
+  '𐳂' => '𐲂',
+  '𐳃' => '𐲃',
+  '𐳄' => '𐲄',
+  '𐳅' => '𐲅',
+  '𐳆' => '𐲆',
+  '𐳇' => '𐲇',
+  '𐳈' => '𐲈',
+  '𐳉' => '𐲉',
+  '𐳊' => '𐲊',
+  '𐳋' => '𐲋',
+  '𐳌' => '𐲌',
+  '𐳍' => '𐲍',
+  '𐳎' => '𐲎',
+  '𐳏' => '𐲏',
+  '𐳐' => '𐲐',
+  '𐳑' => '𐲑',
+  '𐳒' => '𐲒',
+  '𐳓' => '𐲓',
+  '𐳔' => '𐲔',
+  '𐳕' => '𐲕',
+  '𐳖' => '𐲖',
+  '𐳗' => '𐲗',
+  '𐳘' => '𐲘',
+  '𐳙' => '𐲙',
+  '𐳚' => '𐲚',
+  '𐳛' => '𐲛',
+  '𐳜' => '𐲜',
+  '𐳝' => '𐲝',
+  '𐳞' => '𐲞',
+  '𐳟' => '𐲟',
+  '𐳠' => '𐲠',
+  '𐳡' => '𐲡',
+  '𐳢' => '𐲢',
+  '𐳣' => '𐲣',
+  '𐳤' => '𐲤',
+  '𐳥' => '𐲥',
+  '𐳦' => '𐲦',
+  '𐳧' => '𐲧',
+  '𐳨' => '𐲨',
+  '𐳩' => '𐲩',
+  '𐳪' => '𐲪',
+  '𐳫' => '𐲫',
+  '𐳬' => '𐲬',
+  '𐳭' => '𐲭',
+  '𐳮' => '𐲮',
+  '𐳯' => '𐲯',
+  '𐳰' => '𐲰',
+  '𐳱' => '𐲱',
+  '𐳲' => '𐲲',
   'ð‘£€' => 'ð‘¢ ',
   '𑣁' => '𑢡',
   '𑣂' => '𑢢',
@@ -1101,4 +1345,70 @@ return array(
   '𑣝' => '𑢽',
   '𑣞' => '𑢾',
   '𑣟' => '𑢿',
+  'ð–¹ ' => 'ð–¹€',
+  '𖹡' => '𖹁',
+  '𖹢' => '𖹂',
+  '𖹣' => '𖹃',
+  '𖹤' => '𖹄',
+  'ð–¹¥' => 'ð–¹…',
+  '𖹦' => '𖹆',
+  '𖹧' => '𖹇',
+  '𖹨' => '𖹈',
+  '𖹩' => '𖹉',
+  '𖹪' => '𖹊',
+  '𖹫' => '𖹋',
+  '𖹬' => '𖹌',
+  '𖹭' => '𖹍',
+  '𖹮' => '𖹎',
+  '𖹯' => '𖹏',
+  '𖹰' => '𖹐',
+  '𖹱' => '𖹑',
+  'ð–¹²' => 'ð–¹’',
+  '𖹳' => '𖹓',
+  'ð–¹´' => 'ð–¹”',
+  '𖹵' => '𖹕',
+  'ð–¹¶' => 'ð–¹–',
+  'ð–¹·' => 'ð–¹—',
+  '𖹸' => '𖹘',
+  'ð–¹¹' => 'ð–¹™',
+  '𖹺' => '𖹚',
+  'ð–¹»' => 'ð–¹›',
+  '𖹼' => '𖹜',
+  '𖹽' => '𖹝',
+  '𖹾' => '𖹞',
+  '𖹿' => '𖹟',
+  '𞤢' => '𞤀',
+  '𞤣' => '𞤁',
+  '𞤤' => '𞤂',
+  '𞤥' => '𞤃',
+  '𞤦' => '𞤄',
+  '𞤧' => '𞤅',
+  '𞤨' => '𞤆',
+  '𞤩' => '𞤇',
+  '𞤪' => '𞤈',
+  '𞤫' => '𞤉',
+  '𞤬' => '𞤊',
+  '𞤭' => '𞤋',
+  '𞤮' => '𞤌',
+  '𞤯' => '𞤍',
+  '𞤰' => '𞤎',
+  '𞤱' => '𞤏',
+  '𞤲' => '𞤐',
+  '𞤳' => '𞤑',
+  '𞤴' => '𞤒',
+  '𞤵' => '𞤓',
+  '𞤶' => '𞤔',
+  '𞤷' => '𞤕',
+  '𞤸' => '𞤖',
+  '𞤹' => '𞤗',
+  '𞤺' => '𞤘',
+  '𞤻' => '𞤙',
+  '𞤼' => '𞤚',
+  '𞤽' => '𞤛',
+  '𞤾' => '𞤜',
+  '𞤿' => '𞤝',
+  '𞥀' => '𞤞',
+  '𞥁' => '𞤟',
+  '𞥂' => '𞤠',
+  '𞥃' => '𞤡',
 );
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
index 204a41ba..d0a93d4d 100644
--- a/vendor/symfony/polyfill-mbstring/bootstrap.php
+++ b/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -11,52 +11,137 @@
 
 use Symfony\Polyfill\Mbstring as p;
 
-if (!function_exists('mb_strlen')) {
-    define('MB_CASE_UPPER', 0);
-    define('MB_CASE_LOWER', 1);
-    define('MB_CASE_TITLE', 2);
-
-    function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
-    function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
-    function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
-    function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
-    function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
-    function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
-    function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
-    function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
+if (!function_exists('mb_convert_encoding')) {
+    function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+    function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+    function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+    function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+    function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+    function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+    function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+    function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
     function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
     function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
-    function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
-    function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
-    function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
-    function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
-    function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
-    function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
-    function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
-    function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
-    function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
-    function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
-    function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
-    function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
-    function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
-    function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
-    function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
-    function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
-    function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
+}
+if (!function_exists('mb_check_encoding')) {
+    function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+    function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+    function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+    function mb_parse_str($string, &$result = array()) { parse_str($string, $result); }
+}
+if (!function_exists('mb_strlen')) {
+    function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+    function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+    function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+    function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+    function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+    function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+    function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+    function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+    function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+    function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+    function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+    function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+    function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
     function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
-    function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
-    function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
-    function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
-    function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
+}
+if (!function_exists('mb_http_output')) {
+    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+    function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+    function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+    function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
     function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
-    function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
 }
-if (!function_exists('mb_chr')) {
-    function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
-    function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
-    function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
+
+if (!function_exists('mb_convert_variables')) {
+    if (PHP_VERSION_ID >= 80000) {
+        function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); }
+    } else {
+        function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+    }
 }
 
+if (!function_exists('mb_ord')) {
+    function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
 if (!function_exists('mb_str_split')) {
-    function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); }
+    function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+    return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+    define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+    define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+    define('MB_CASE_TITLE', 2);
 }
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
index 308f009a..ca4a8392 100644
--- a/vendor/symfony/polyfill-mbstring/composer.json
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
@@ -28,7 +28,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php
index d531e844..1e36d5e6 100644
--- a/vendor/symfony/polyfill-php72/Php72.php
+++ b/vendor/symfony/polyfill-php72/Php72.php
@@ -95,7 +95,8 @@ final class Php72
             return;
         }
 
-        return self::$hashMask ^ hexdec(substr($hash, 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+        // On 32-bit systems, PHP_INT_SIZE is 4,
+        return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
     }
 
     public static function sapi_windows_vt100_support($stream, $enable = null)
@@ -166,7 +167,7 @@ final class Php72
             self::$hashMask = (int) substr(ob_get_clean(), 17);
         }
 
-        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
+        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
     }
 
     public static function mb_chr($code, $encoding = null)
@@ -190,7 +191,7 @@ final class Php72
 
     public static function mb_ord($s, $encoding = null)
     {
-        if (null == $encoding) {
+        if (null === $encoding) {
             $s = mb_convert_encoding($s, 'UTF-8');
         } elseif ('UTF-8' !== $encoding) {
             $s = mb_convert_encoding($s, 'UTF-8', $encoding);
diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md
index 82c45f7a..59dec8a2 100644
--- a/vendor/symfony/polyfill-php72/README.md
+++ b/vendor/symfony/polyfill-php72/README.md
@@ -15,8 +15,9 @@ Moved to core since 7.2 (was in the optional XML extension earlier):
 - [`utf8_encode`](https://php.net/utf8_encode)
 - [`utf8_decode`](https://php.net/utf8_decode)
 
-Also, it provides a constant added to PHP 7.2:
-- [`PHP_OS_FAMILY`](http://php.net/manual/en/reserved.constants.php#constant.php-os-family)
+Also, it provides constants added to PHP 7.2:
+- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
+- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
 
 More information can be found in the
 [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php
index 519056de..3154b2c3 100644
--- a/vendor/symfony/polyfill-php72/bootstrap.php
+++ b/vendor/symfony/polyfill-php72/bootstrap.php
@@ -11,26 +11,47 @@
 
 use Symfony\Polyfill\Php72 as p;
 
-if (PHP_VERSION_ID < 70200) {
-    if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
-        function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
-    }
-    if (!function_exists('stream_isatty')) {
-        function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
-    }
-    if (!function_exists('utf8_encode')) {
-        function utf8_encode($s) { return p\Php72::utf8_encode($s); }
-        function utf8_decode($s) { return p\Php72::utf8_decode($s); }
-    }
-    if (!function_exists('spl_object_id')) {
-        function spl_object_id($s) { return p\Php72::spl_object_id($s); }
-    }
-    if (!defined('PHP_OS_FAMILY')) {
-        define('PHP_OS_FAMILY', p\Php72::php_os_family());
-    }
-    if (!function_exists('mb_chr')) {
-        function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
-        function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
-        function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
-    }
+if (PHP_VERSION_ID >= 70200) {
+    return;
+}
+
+if (!defined('PHP_FLOAT_DIG')) {
+    define('PHP_FLOAT_DIG', 15);
+}
+if (!defined('PHP_FLOAT_EPSILON')) {
+    define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
+}
+if (!defined('PHP_FLOAT_MIN')) {
+    define('PHP_FLOAT_MIN', 2.2250738585072E-308);
+}
+if (!defined('PHP_FLOAT_MAX')) {
+    define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
+}
+if (!defined('PHP_OS_FAMILY')) {
+    define('PHP_OS_FAMILY', p\Php72::php_os_family());
+}
+
+if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
+    function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
+}
+if (!function_exists('stream_isatty')) {
+    function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
+}
+if (!function_exists('utf8_encode')) {
+    function utf8_encode($string) { return p\Php72::utf8_encode($string); }
+}
+if (!function_exists('utf8_decode')) {
+    function utf8_decode($string) { return p\Php72::utf8_decode($string); }
+}
+if (!function_exists('spl_object_id')) {
+    function spl_object_id($object) { return p\Php72::spl_object_id($object); }
+}
+if (!function_exists('mb_ord')) {
+    function mb_ord($string, $encoding = null) { return p\Php72::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr($codepoint, $encoding = null) { return p\Php72::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
 }
diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json
index 5cfcbb75..994443a4 100644
--- a/vendor/symfony/polyfill-php72/composer.json
+++ b/vendor/symfony/polyfill-php72/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Php72\\": "" },
@@ -25,7 +25,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/polyfill-php73/bootstrap.php b/vendor/symfony/polyfill-php73/bootstrap.php
index 4c3f44f6..26787252 100644
--- a/vendor/symfony/polyfill-php73/bootstrap.php
+++ b/vendor/symfony/polyfill-php73/bootstrap.php
@@ -11,22 +11,21 @@
 
 use Symfony\Polyfill\Php73 as p;
 
-if (PHP_VERSION_ID < 70300) {
-    if (!function_exists('is_countable')) {
-        function is_countable($var) { return is_array($var) || $var instanceof Countable || $var instanceof ResourceBundle || $var instanceof SimpleXmlElement; }
-    }
-
-    if (!function_exists('hrtime')) {
-        require_once __DIR__.'/Php73.php';
-        p\Php73::$startAt = (int) microtime(true);
-        function hrtime($asNum = false) { return p\Php73::hrtime($asNum); }
-    }
-
-    if (!function_exists('array_key_first')) {
-        function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
-    }
+if (PHP_VERSION_ID >= 70300) {
+    return;
+}
 
-    if (!function_exists('array_key_last')) {
-        function array_key_last(array $array) { end($array); return key($array); }
-    }
+if (!function_exists('is_countable')) {
+    function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; }
+}
+if (!function_exists('hrtime')) {
+    require_once __DIR__.'/Php73.php';
+    p\Php73::$startAt = (int) microtime(true);
+    function hrtime($as_number  = false) { return p\Php73::hrtime($as_number ); }
+}
+if (!function_exists('array_key_first')) {
+    function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } }
+}
+if (!function_exists('array_key_last')) {
+    function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); }
 }
diff --git a/vendor/symfony/polyfill-php73/composer.json b/vendor/symfony/polyfill-php73/composer.json
index 92808af8..6c9660dd 100644
--- a/vendor/symfony/polyfill-php73/composer.json
+++ b/vendor/symfony/polyfill-php73/composer.json
@@ -16,7 +16,7 @@
         }
     ],
     "require": {
-        "php": ">=5.3.3"
+        "php": ">=7.1"
     },
     "autoload": {
         "psr-4": { "Symfony\\Polyfill\\Php73\\": "" },
@@ -26,7 +26,11 @@
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "1.12-dev"
+            "dev-main": "1.20-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
         }
     }
 }
diff --git a/vendor/symfony/routing/.gitignore b/vendor/symfony/routing/.gitignore
deleted file mode 100644
index c49a5d8d..00000000
--- a/vendor/symfony/routing/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-vendor/
-composer.lock
-phpunit.xml
diff --git a/vendor/symfony/routing/Annotation/Route.php b/vendor/symfony/routing/Annotation/Route.php
index 4d5f6181..dc1cee31 100644
--- a/vendor/symfony/routing/Annotation/Route.php
+++ b/vendor/symfony/routing/Annotation/Route.php
@@ -31,9 +31,6 @@ class Route
     private $methods = [];
     private $schemes = [];
     private $condition;
-    private $locale;
-    private $format;
-    private $utf8;
 
     /**
      * @param array $data An array of key/value parameters
@@ -43,7 +40,7 @@ class Route
     public function __construct(array $data)
     {
         if (isset($data['localized_paths'])) {
-            throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', \get_class($this)));
+            throw new \BadMethodCallException(sprintf('Unknown property "localized_paths" on annotation "%s".', static::class));
         }
 
         if (isset($data['value'])) {
@@ -67,14 +64,14 @@ class Route
         }
 
         if (isset($data['utf8'])) {
-            $data['options']['utf8'] = filter_var($data['utf8'], FILTER_VALIDATE_BOOLEAN) ?: false;
+            $data['options']['utf8'] = filter_var($data['utf8'], \FILTER_VALIDATE_BOOLEAN) ?: false;
             unset($data['utf8']);
         }
 
         foreach ($data as $key => $value) {
             $method = 'set'.str_replace('_', '', $key);
             if (!method_exists($this, $method)) {
-                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, \get_class($this)));
+                throw new \BadMethodCallException(sprintf('Unknown property "%s" on annotation "%s".', $key, static::class));
             }
             $this->$method($value);
         }
diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md
index 5f133efd..4eebca62 100644
--- a/vendor/symfony/routing/CHANGELOG.md
+++ b/vendor/symfony/routing/CHANGELOG.md
@@ -1,6 +1,13 @@
 CHANGELOG
 =========
 
+4.4.0
+-----
+
+ * Deprecated `ServiceRouterLoader` in favor of `ContainerLoader`.
+ * Deprecated `ObjectRouteLoader` in favor of `ObjectLoader`.
+ * Added a way to exclude patterns of resources from being imported by the `import()` method
+
 4.3.0
 -----
 
diff --git a/vendor/symfony/routing/CompiledRoute.php b/vendor/symfony/routing/CompiledRoute.php
index 87278e70..b6f31b2e 100644
--- a/vendor/symfony/routing/CompiledRoute.php
+++ b/vendor/symfony/routing/CompiledRoute.php
@@ -64,6 +64,8 @@ class CompiledRoute implements \Serializable
     }
 
     /**
+     * @return string
+     *
      * @internal since Symfony 4.3
      * @final since Symfony 4.3
      */
diff --git a/vendor/symfony/routing/Exception/MethodNotAllowedException.php b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
index e129ec8b..b897081b 100644
--- a/vendor/symfony/routing/Exception/MethodNotAllowedException.php
+++ b/vendor/symfony/routing/Exception/MethodNotAllowedException.php
@@ -22,7 +22,7 @@ class MethodNotAllowedException extends \RuntimeException implements ExceptionIn
 {
     protected $allowedMethods = [];
 
-    public function __construct(array $allowedMethods, string $message = null, int $code = 0, \Exception $previous = null)
+    public function __construct(array $allowedMethods, string $message = null, int $code = 0, \Throwable $previous = null)
     {
         $this->allowedMethods = array_map('strtoupper', $allowedMethods);
 
diff --git a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
index 41cd5893..adcc99e3 100644
--- a/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
+++ b/vendor/symfony/routing/Generator/CompiledUrlGenerator.php
@@ -40,7 +40,6 @@ class CompiledUrlGenerator extends UrlGenerator
         if (null !== $locale) {
             do {
                 if (($this->compiledRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    unset($parameters['_locale']);
                     $name .= '.'.$locale;
                     break;
                 }
@@ -53,6 +52,14 @@ class CompiledUrlGenerator extends UrlGenerator
 
         list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = $this->compiledRoutes[$name];
 
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
         return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
     }
 }
diff --git a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
index 096519aa..26daefc6 100644
--- a/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
+++ b/vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php
@@ -24,8 +24,6 @@ interface GeneratorDumperInterface
      * Dumps a set of routes to a string representation of executable code
      * that can then be used to generate a URL of such a route.
      *
-     * @param array $options An array of options
-     *
      * @return string Executable code
      */
     public function dump(array $options = []);
diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
index 3869ffda..23081f91 100644
--- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
+++ b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\Routing\Generator\Dumper;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlGeneratorDumper" instead.', PhpGeneratorDumper::class), \E_USER_DEPRECATED);
 
 use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
 
@@ -79,10 +79,8 @@ EOF;
     /**
      * Generates PHP code representing an array of defined routes
      * together with the routes properties (e.g. requirements).
-     *
-     * @return string PHP code
      */
-    private function generateDeclaredRoutes()
+    private function generateDeclaredRoutes(): string
     {
         $routes = "[\n";
         foreach ($this->getRoutes()->all() as $name => $route) {
@@ -105,10 +103,8 @@ EOF;
 
     /**
      * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
-     *
-     * @return string PHP code
      */
-    private function generateGenerateMethod()
+    private function generateGenerateMethod(): string
     {
         return <<<'EOF'
     public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
@@ -120,7 +116,6 @@ EOF;
         if (null !== $locale && null !== $name) {
             do {
                 if ((self::$declaredRoutes[$name.'.'.$locale][1]['_canonical_route'] ?? null) === $name) {
-                    unset($parameters['_locale']);
                     $name .= '.'.$locale;
                     break;
                 }
@@ -133,6 +128,14 @@ EOF;
 
         list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name];
 
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
         return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
     }
 EOF;
diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php
index 8be593bf..7adf2ed2 100644
--- a/vendor/symfony/routing/Generator/UrlGenerator.php
+++ b/vendor/symfony/routing/Generator/UrlGenerator.php
@@ -134,7 +134,6 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
         if (null !== $locale) {
             do {
                 if (null !== ($route = $this->routes->get($name.'.'.$locale)) && $route->getDefault('_canonical_route') === $name) {
-                    unset($parameters['_locale']);
                     break;
                 }
             } while (false !== $locale = strstr($locale, '_', true));
@@ -147,7 +146,18 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
         // the Route has a cache of its own and is not recompiled as long as it does not get modified
         $compiledRoute = $route->compile();
 
-        return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
+        $defaults = $route->getDefaults();
+        $variables = $compiledRoute->getVariables();
+
+        if (isset($defaults['_canonical_route']) && isset($defaults['_locale'])) {
+            if (!\in_array('_locale', $variables, true)) {
+                unset($parameters['_locale']);
+            } elseif (!isset($parameters['_locale'])) {
+                $parameters['_locale'] = $defaults['_locale'];
+            }
+        }
+
+        return $this->doGenerate($variables, $defaults, $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes());
     }
 
     /**
@@ -292,7 +302,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
             unset($extra['_fragment']);
         }
 
-        if ($extra && $query = http_build_query($extra, '', '&', PHP_QUERY_RFC3986)) {
+        if ($extra && $query = http_build_query($extra, '', '&', \PHP_QUERY_RFC3986)) {
             $url .= '?'.strtr($query, self::QUERY_FRAGMENT_DECODED);
         }
 
diff --git a/vendor/symfony/routing/LICENSE b/vendor/symfony/routing/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/routing/LICENSE
+++ b/vendor/symfony/routing/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/routing/Loader/AnnotationClassLoader.php b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
index 6390a79f..ca7f46b1 100644
--- a/vendor/symfony/routing/Loader/AnnotationClassLoader.php
+++ b/vendor/symfony/routing/Loader/AnnotationClassLoader.php
@@ -18,11 +18,12 @@ use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Routing\Annotation\Route as RouteAnnotation;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * AnnotationClassLoader loads routing information from a PHP class and its methods.
  *
- * You need to define an implementation for the getRouteDefaults() method. Most of the
+ * You need to define an implementation for the configureRoute() method. Most of the
  * time, this method should define some PHP callable to be called for the route
  * (a controller in MVC speak).
  *
@@ -146,7 +147,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
 
         foreach ($requirements as $placeholder => $requirement) {
             if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), E_USER_DEPRECATED);
+                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s::%s()"?', $placeholder, $requirement, $name, $class->getName(), $method->getName()), \E_USER_DEPRECATED);
             }
         }
 
@@ -211,6 +212,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
             $this->configureRoute($route, $class, $method, $annot);
             if (0 !== $locale) {
                 $route->setDefault('_locale', $locale);
+                $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                 $route->setDefault('_canonical_route', $name);
                 $collection->add($name.'.'.$locale, $route);
             } else {
@@ -303,7 +305,7 @@ abstract class AnnotationClassLoader implements LoaderInterface
 
             foreach ($globals['requirements'] as $placeholder => $requirement) {
                 if (\is_int($placeholder)) {
-                    @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), E_USER_DEPRECATED);
+                    @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" in "%s"?', $placeholder, $requirement, $class->getName()), \E_USER_DEPRECATED);
                 }
             }
         }
diff --git a/vendor/symfony/routing/Loader/AnnotationFileLoader.php b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
index eafd614d..8f9af3a8 100644
--- a/vendor/symfony/routing/Loader/AnnotationFileLoader.php
+++ b/vendor/symfony/routing/Loader/AnnotationFileLoader.php
@@ -75,7 +75,7 @@ class AnnotationFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
+        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'annotation' === $type);
     }
 
     /**
@@ -91,10 +91,15 @@ class AnnotationFileLoader extends FileLoader
         $namespace = false;
         $tokens = token_get_all(file_get_contents($file));
 
-        if (1 === \count($tokens) && T_INLINE_HTML === $tokens[0][0]) {
+        if (1 === \count($tokens) && \T_INLINE_HTML === $tokens[0][0]) {
             throw new \InvalidArgumentException(sprintf('The file "%s" does not contain PHP code. Did you forgot to add the "<?php" start tag at the beginning of the file?', $file));
         }
 
+        $nsTokens = [\T_NS_SEPARATOR => true, \T_STRING => true];
+        if (\defined('T_NAME_QUALIFIED')) {
+            $nsTokens[T_NAME_QUALIFIED] = true;
+        }
+
         for ($i = 0; isset($tokens[$i]); ++$i) {
             $token = $tokens[$i];
 
@@ -102,19 +107,19 @@ class AnnotationFileLoader extends FileLoader
                 continue;
             }
 
-            if (true === $class && T_STRING === $token[0]) {
+            if (true === $class && \T_STRING === $token[0]) {
                 return $namespace.'\\'.$token[1];
             }
 
-            if (true === $namespace && T_STRING === $token[0]) {
+            if (true === $namespace && isset($nsTokens[$token[0]])) {
                 $namespace = $token[1];
-                while (isset($tokens[++$i][1]) && \in_array($tokens[$i][0], [T_NS_SEPARATOR, T_STRING])) {
+                while (isset($tokens[++$i][1], $nsTokens[$tokens[$i][0]])) {
                     $namespace .= $tokens[$i][1];
                 }
                 $token = $tokens[$i];
             }
 
-            if (T_CLASS === $token[0]) {
+            if (\T_CLASS === $token[0]) {
                 // Skip usage of ::class constant and anonymous classes
                 $skipClassToken = false;
                 for ($j = $i - 1; $j > 0; --$j) {
@@ -122,10 +127,10 @@ class AnnotationFileLoader extends FileLoader
                         break;
                     }
 
-                    if (T_DOUBLE_COLON === $tokens[$j][0] || T_NEW === $tokens[$j][0]) {
+                    if (\T_DOUBLE_COLON === $tokens[$j][0] || \T_NEW === $tokens[$j][0]) {
                         $skipClassToken = true;
                         break;
-                    } elseif (!\in_array($tokens[$j][0], [T_WHITESPACE, T_DOC_COMMENT, T_COMMENT])) {
+                    } elseif (!\in_array($tokens[$j][0], [\T_WHITESPACE, \T_DOC_COMMENT, \T_COMMENT])) {
                         break;
                     }
                 }
@@ -135,7 +140,7 @@ class AnnotationFileLoader extends FileLoader
                 }
             }
 
-            if (T_NAMESPACE === $token[0]) {
+            if (\T_NAMESPACE === $token[0]) {
                 $namespace = true;
             }
         }
diff --git a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
index e1de75e0..79c1100a 100644
--- a/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php
@@ -47,10 +47,8 @@ class CollectionConfigurator
 
     /**
      * Creates a sub-collection.
-     *
-     * @return self
      */
-    final public function collection($name = '')
+    final public function collection(string $name = ''): self
     {
         return new self($this->collection, $this->name.$name, $this, $this->prefixes);
     }
@@ -62,7 +60,7 @@ class CollectionConfigurator
      *
      * @return $this
      */
-    final public function prefix($prefix)
+    final public function prefix($prefix): self
     {
         if (\is_array($prefix)) {
             if (null === $this->parentPrefixes) {
@@ -88,7 +86,7 @@ class CollectionConfigurator
         return $this;
     }
 
-    private function createRoute($path): Route
+    private function createRoute(string $path): Route
     {
         return (clone $this->route)->setPath($path);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
index 92e7efde..0059a632 100644
--- a/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php
@@ -13,6 +13,7 @@ namespace Symfony\Component\Routing\Loader\Configurator;
 
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * @author Nicolas Grekas <p@tchwork.com>
@@ -41,7 +42,7 @@ class ImportConfigurator
      *
      * @return $this
      */
-    final public function prefix($prefix, bool $trailingSlashOnRoot = true)
+    final public function prefix($prefix, bool $trailingSlashOnRoot = true): self
     {
         if (!\is_array($prefix)) {
             $this->route->addPrefix($prefix);
@@ -63,6 +64,7 @@ class ImportConfigurator
                     foreach ($prefix as $locale => $localePrefix) {
                         $localizedRoute = clone $route;
                         $localizedRoute->setDefault('_locale', $locale);
+                        $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                         $localizedRoute->setDefault('_canonical_route', $name);
                         $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                         $this->route->add($name.'.'.$locale, $localizedRoute);
@@ -84,7 +86,7 @@ class ImportConfigurator
      *
      * @return $this
      */
-    final public function namePrefix(string $namePrefix)
+    final public function namePrefix(string $namePrefix): self
     {
         $this->route->addNamePrefix($namePrefix);
 
diff --git a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
index a315cfb4..8ed06f30 100644
--- a/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
+++ b/vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php
@@ -34,12 +34,13 @@ class RoutingConfigurator
     }
 
     /**
-     * @return ImportConfigurator
+     * @param string|string[]|null $exclude Glob patterns to exclude from the import
      */
-    final public function import($resource, $type = null, $ignoreErrors = false)
+    final public function import($resource, string $type = null, bool $ignoreErrors = false, $exclude = null): ImportConfigurator
     {
         $this->loader->setCurrentDir(\dirname($this->path));
-        $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file);
+
+        $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file, $exclude) ?: [];
         if (!\is_array($imported)) {
             return new ImportConfigurator($this->collection, $imported);
         }
@@ -52,10 +53,7 @@ class RoutingConfigurator
         return new ImportConfigurator($this->collection, $mergedCollection);
     }
 
-    /**
-     * @return CollectionConfigurator
-     */
-    final public function collection($name = '')
+    final public function collection(string $name = ''): CollectionConfigurator
     {
         return new CollectionConfigurator($this->collection, $name);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
index 45642d2f..84899aa2 100644
--- a/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
+++ b/vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php
@@ -15,6 +15,7 @@ use Symfony\Component\Routing\Loader\Configurator\CollectionConfigurator;
 use Symfony\Component\Routing\Loader\Configurator\RouteConfigurator;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 trait AddTrait
 {
@@ -67,6 +68,7 @@ trait AddTrait
             $routes->add($name.'.'.$locale, $route = $this->createRoute($path));
             $this->collection->add($this->name.$name.'.'.$locale, $route);
             $route->setDefault('_locale', $locale);
+            $route->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
             $route->setDefault('_canonical_route', $this->name.$name);
         }
 
@@ -83,7 +85,7 @@ trait AddTrait
         return $this->add($name, $path);
     }
 
-    private function createRoute($path): Route
+    private function createRoute(string $path): Route
     {
         return new Route($path);
     }
diff --git a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
index 92c4d2ff..04009cd1 100644
--- a/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
+++ b/vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php
@@ -26,7 +26,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function defaults(array $defaults)
+    final public function defaults(array $defaults): self
     {
         $this->route->addDefaults($defaults);
 
@@ -38,7 +38,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function requirements(array $requirements)
+    final public function requirements(array $requirements): self
     {
         $this->route->addRequirements($requirements);
 
@@ -50,7 +50,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function options(array $options)
+    final public function options(array $options): self
     {
         $this->route->addOptions($options);
 
@@ -62,7 +62,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function utf8(bool $utf8 = true)
+    final public function utf8(bool $utf8 = true): self
     {
         $this->route->addOptions(['utf8' => $utf8]);
 
@@ -74,7 +74,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function condition(string $condition)
+    final public function condition(string $condition): self
     {
         $this->route->setCondition($condition);
 
@@ -86,7 +86,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function host(string $pattern)
+    final public function host(string $pattern): self
     {
         $this->route->setHost($pattern);
 
@@ -101,7 +101,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function schemes(array $schemes)
+    final public function schemes(array $schemes): self
     {
         $this->route->setSchemes($schemes);
 
@@ -116,7 +116,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function methods(array $methods)
+    final public function methods(array $methods): self
     {
         $this->route->setMethods($methods);
 
@@ -130,7 +130,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function controller($controller)
+    final public function controller($controller): self
     {
         $this->route->addDefaults(['_controller' => $controller]);
 
@@ -142,7 +142,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function locale(string $locale)
+    final public function locale(string $locale): self
     {
         $this->route->addDefaults(['_locale' => $locale]);
 
@@ -154,7 +154,7 @@ trait RouteTrait
      *
      * @return $this
      */
-    final public function format(string $format)
+    final public function format(string $format): self
     {
         $this->route->addDefaults(['_format' => $format]);
 
diff --git a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
index 0276719c..ab2be102 100644
--- a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
+++ b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
@@ -12,12 +12,17 @@
 namespace Symfony\Component\Routing\Loader\DependencyInjection;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\Routing\Loader\ContainerLoader;
 use Symfony\Component\Routing\Loader\ObjectRouteLoader;
 
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ServiceRouterLoader::class, ContainerLoader::class), \E_USER_DEPRECATED);
+
 /**
  * A route loader that executes a service to load the routes.
  *
  * @author Ryan Weaver <ryan@knpuniversity.com>
+ *
+ * @deprecated since Symfony 4.4, use Symfony\Component\Routing\Loader\ContainerLoader instead.
  */
 class ServiceRouterLoader extends ObjectRouteLoader
 {
diff --git a/vendor/symfony/routing/Loader/ObjectRouteLoader.php b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
index 8f0680f0..44f28fb8 100644
--- a/vendor/symfony/routing/Loader/ObjectRouteLoader.php
+++ b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
@@ -11,16 +11,16 @@
 
 namespace Symfony\Component\Routing\Loader;
 
-use Symfony\Component\Config\Loader\Loader;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\RouteCollection;
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.4, use "%s" instead.', ObjectRouteLoader::class, ObjectLoader::class), \E_USER_DEPRECATED);
 
 /**
  * A route loader that calls a method on an object to load the routes.
  *
  * @author Ryan Weaver <ryan@knpuniversity.com>
+ *
+ * @deprecated since Symfony 4.4, use ObjectLoader instead.
  */
-abstract class ObjectRouteLoader extends Loader
+abstract class ObjectRouteLoader extends ObjectLoader
 {
     /**
      * Returns the object that the method will be called on to load routes.
@@ -34,53 +34,6 @@ abstract class ObjectRouteLoader extends Loader
      */
     abstract protected function getServiceObject($id);
 
-    /**
-     * Calls the service that will load the routes.
-     *
-     * @param string      $resource Some value that will resolve to a callable
-     * @param string|null $type     The resource type
-     *
-     * @return RouteCollection
-     */
-    public function load($resource, $type = null)
-    {
-        if (!preg_match('/^[^\:]+(?:::?(?:[^\:]+))?$/', $resource)) {
-            throw new \InvalidArgumentException(sprintf('Invalid resource "%s" passed to the "service" route loader: use the format "service::method" or "service" if your service has an "__invoke" method.', $resource));
-        }
-
-        if (1 === substr_count($resource, ':')) {
-            $resource = str_replace(':', '::', $resource);
-            @trigger_error(sprintf('Referencing service route loaders with a single colon is deprecated since Symfony 4.1. Use %s instead.', $resource), E_USER_DEPRECATED);
-        }
-
-        $parts = explode('::', $resource);
-        $serviceString = $parts[0];
-        $method = $parts[1] ?? '__invoke';
-
-        $loaderObject = $this->getServiceObject($serviceString);
-
-        if (!\is_object($loaderObject)) {
-            throw new \LogicException(sprintf('%s:getServiceObject() must return an object: %s returned', \get_class($this), \gettype($loaderObject)));
-        }
-
-        if (!\is_callable([$loaderObject, $method])) {
-            throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s"', $method, \get_class($loaderObject), $resource));
-        }
-
-        $routeCollection = $loaderObject->$method($this);
-
-        if (!$routeCollection instanceof RouteCollection) {
-            $type = \is_object($routeCollection) ? \get_class($routeCollection) : \gettype($routeCollection);
-
-            throw new \LogicException(sprintf('The %s::%s method must return a RouteCollection: %s returned', \get_class($loaderObject), $method, $type));
-        }
-
-        // make the service file tracked so that if it changes, the cache rebuilds
-        $this->addClassResource(new \ReflectionClass($loaderObject), $routeCollection);
-
-        return $routeCollection;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -89,12 +42,11 @@ abstract class ObjectRouteLoader extends Loader
         return 'service' === $type;
     }
 
-    private function addClassResource(\ReflectionClass $class, RouteCollection $collection)
+    /**
+     * {@inheritdoc}
+     */
+    protected function getObject(string $id)
     {
-        do {
-            if (is_file($class->getFileName())) {
-                $collection->addResource(new FileResource($class->getFileName()));
-            }
-        } while ($class = $class->getParentClass());
+        return $this->getServiceObject($id);
     }
 }
diff --git a/vendor/symfony/routing/Loader/PhpFileLoader.php b/vendor/symfony/routing/Loader/PhpFileLoader.php
index a5cf9515..054290bf 100644
--- a/vendor/symfony/routing/Loader/PhpFileLoader.php
+++ b/vendor/symfony/routing/Loader/PhpFileLoader.php
@@ -63,7 +63,7 @@ class PhpFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'php' === $type);
+        return \is_string($resource) && 'php' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'php' === $type);
     }
 }
 
diff --git a/vendor/symfony/routing/Loader/XmlFileLoader.php b/vendor/symfony/routing/Loader/XmlFileLoader.php
index ed4faf39..e8732b3d 100644
--- a/vendor/symfony/routing/Loader/XmlFileLoader.php
+++ b/vendor/symfony/routing/Loader/XmlFileLoader.php
@@ -16,6 +16,7 @@ use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Config\Util\XmlUtils;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 
 /**
  * XmlFileLoader loads XML routing files.
@@ -63,10 +64,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses a node from a loaded XML file.
      *
-     * @param RouteCollection $collection Collection to associate with the node
-     * @param \DOMElement     $node       Element to parse
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
+     * @param \DOMElement $node Element to parse
+     * @param string      $path Full path of the XML file being processed
+     * @param string      $file Loaded file name
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -93,15 +93,14 @@ class XmlFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
+        return \is_string($resource) && 'xml' === pathinfo($resource, \PATHINFO_EXTENSION) && (!$type || 'xml' === $type);
     }
 
     /**
      * Parses a route and adds it to the RouteCollection.
      *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
+     * @param \DOMElement $node Element to parse that represents a Route
+     * @param string      $path Full path of the XML file being processed
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -111,8 +110,8 @@ class XmlFileLoader extends FileLoader
             throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" attribute.', $path));
         }
 
-        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY);
-        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY);
+        $schemes = preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY);
+        $methods = preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY);
 
         list($defaults, $requirements, $options, $condition, $paths) = $this->parseConfigs($node, $path);
 
@@ -131,6 +130,7 @@ class XmlFileLoader extends FileLoader
             foreach ($paths as $locale => $p) {
                 $defaults['_locale'] = $locale;
                 $defaults['_canonical_route'] = $id;
+                $requirements['_locale'] = preg_quote($locale, RouteCompiler::REGEX_DELIMITER);
                 $route = new Route($p, $defaults, $requirements, $options, $node->getAttribute('host'), $schemes, $methods, $condition);
                 $collection->add($id.'.'.$locale, $route);
             }
@@ -140,10 +140,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses an import and adds the routes in the resource to the RouteCollection.
      *
-     * @param RouteCollection $collection RouteCollection instance
-     * @param \DOMElement     $node       Element to parse that represents a Route
-     * @param string          $path       Full path of the XML file being processed
-     * @param string          $file       Loaded file name
+     * @param \DOMElement $node Element to parse that represents a Route
+     * @param string      $path Full path of the XML file being processed
+     * @param string      $file Loaded file name
      *
      * @throws \InvalidArgumentException When the XML is invalid
      */
@@ -156,8 +155,8 @@ class XmlFileLoader extends FileLoader
         $type = $node->getAttribute('type');
         $prefix = $node->getAttribute('prefix');
         $host = $node->hasAttribute('host') ? $node->getAttribute('host') : null;
-        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY) : null;
-        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY) : null;
+        $schemes = $node->hasAttribute('schemes') ? preg_split('/[\s,\|]++/', $node->getAttribute('schemes'), -1, \PREG_SPLIT_NO_EMPTY) : null;
+        $methods = $node->hasAttribute('methods') ? preg_split('/[\s,\|]++/', $node->getAttribute('methods'), -1, \PREG_SPLIT_NO_EMPTY) : null;
         $trailingSlashOnRoot = $node->hasAttribute('trailing-slash-on-root') ? XmlUtils::phpize($node->getAttribute('trailing-slash-on-root')) : true;
 
         list($defaults, $requirements, $options, $condition, /* $paths */, $prefixes) = $this->parseConfigs($node, $path);
@@ -166,10 +165,24 @@ class XmlFileLoader extends FileLoader
             throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must not have both a "prefix" attribute and <prefix> child nodes.', $path));
         }
 
+        $exclude = [];
+        foreach ($node->childNodes as $child) {
+            if ($child instanceof \DOMElement && $child->localName === $exclude && self::NAMESPACE_URI === $child->namespaceURI) {
+                $exclude[] = $child->nodeValue;
+            }
+        }
+
+        if ($node->hasAttribute('exclude')) {
+            if ($exclude) {
+                throw new \InvalidArgumentException('You cannot use both the attribute "exclude" and <exclude> tags at the same time.');
+            }
+            $exclude = [$node->getAttribute('exclude')];
+        }
+
         $this->setCurrentDir(\dirname($path));
 
         /** @var RouteCollection[] $imported */
-        $imported = $this->import($resource, ('' !== $type ? $type : null), false, $file);
+        $imported = $this->import($resource, ('' !== $type ? $type : null), false, $file, $exclude) ?: [];
 
         if (!\is_array($imported)) {
             $imported = [$imported];
@@ -198,6 +211,7 @@ class XmlFileLoader extends FileLoader
                             $localizedRoute = clone $route;
                             $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                             $localizedRoute->setDefault('_locale', $locale);
+                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                             $localizedRoute->setDefault('_canonical_route', $name);
                             $subCollection->add($name.'.'.$locale, $localizedRoute);
                         }
@@ -253,14 +267,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses the config elements (default, requirement, option).
      *
-     * @param \DOMElement $node Element to parse that contains the configs
-     * @param string      $path Full path of the XML file being processed
-     *
-     * @return array An array with the defaults as first item, requirements as second and options as third
-     *
      * @throws \InvalidArgumentException When the XML is invalid
      */
-    private function parseConfigs(\DOMElement $node, $path)
+    private function parseConfigs(\DOMElement $node, string $path): array
     {
         $defaults = [];
         $requirements = [];
@@ -306,9 +315,9 @@ class XmlFileLoader extends FileLoader
 
         if ($controller = $node->getAttribute('controller')) {
             if (isset($defaults['_controller'])) {
-                $name = $node->hasAttribute('id') ? sprintf('"%s"', $node->getAttribute('id')) : sprintf('the "%s" tag', $node->tagName);
+                $name = $node->hasAttribute('id') ? sprintf('"%s".', $node->getAttribute('id')) : sprintf('the "%s" tag.', $node->tagName);
 
-                throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" attribute and the defaults key "_controller" for %s.', $path, $name));
+                throw new \InvalidArgumentException(sprintf('The routing file "%s" must not specify both the "controller" attribute and the defaults key "_controller" for ', $path).$name);
             }
 
             $defaults['_controller'] = $controller;
@@ -329,12 +338,9 @@ class XmlFileLoader extends FileLoader
     /**
      * Parses the "default" elements.
      *
-     * @param \DOMElement $element The "default" element to parse
-     * @param string      $path    Full path of the XML file being processed
-     *
      * @return array|bool|float|int|string|null The parsed value of the "default" element
      */
-    private function parseDefaultsConfig(\DOMElement $element, $path)
+    private function parseDefaultsConfig(\DOMElement $element, string $path)
     {
         if ($this->isElementValueNull($element)) {
             return null;
@@ -364,14 +370,11 @@ class XmlFileLoader extends FileLoader
     /**
      * Recursively parses the value of a "default" element.
      *
-     * @param \DOMElement $node The node value
-     * @param string      $path Full path of the XML file being processed
-     *
      * @return array|bool|float|int|string The parsed value
      *
      * @throws \InvalidArgumentException when the XML is invalid
      */
-    private function parseDefaultNode(\DOMElement $node, $path)
+    private function parseDefaultNode(\DOMElement $node, string $path)
     {
         if ($this->isElementValueNull($node)) {
             return null;
@@ -423,7 +426,7 @@ class XmlFileLoader extends FileLoader
         }
     }
 
-    private function isElementValueNull(\DOMElement $element)
+    private function isElementValueNull(\DOMElement $element): bool
     {
         $namespaceUri = 'http://www.w3.org/2001/XMLSchema-instance';
 
diff --git a/vendor/symfony/routing/Loader/YamlFileLoader.php b/vendor/symfony/routing/Loader/YamlFileLoader.php
index 15c223ec..c7aa00e1 100644
--- a/vendor/symfony/routing/Loader/YamlFileLoader.php
+++ b/vendor/symfony/routing/Loader/YamlFileLoader.php
@@ -15,6 +15,7 @@ use Symfony\Component\Config\Loader\FileLoader;
 use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Routing\RouteCompiler;
 use Symfony\Component\Yaml\Exception\ParseException;
 use Symfony\Component\Yaml\Parser as YamlParser;
 use Symfony\Component\Yaml\Yaml;
@@ -28,7 +29,7 @@ use Symfony\Component\Yaml\Yaml;
 class YamlFileLoader extends FileLoader
 {
     private static $availableKeys = [
-        'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8',
+        'resource', 'type', 'prefix', 'path', 'host', 'schemes', 'methods', 'defaults', 'requirements', 'options', 'condition', 'controller', 'name_prefix', 'trailing_slash_on_root', 'locale', 'format', 'utf8', 'exclude',
     ];
     private $yamlParser;
 
@@ -61,7 +62,7 @@ class YamlFileLoader extends FileLoader
         try {
             $parsedConfig = $this->yamlParser->parseFile($path, Yaml::PARSE_CONSTANT);
         } catch (ParseException $e) {
-            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $path), 0, $e);
+            throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML: ', $path).$e->getMessage(), 0, $e);
         }
 
         $collection = new RouteCollection();
@@ -95,16 +96,15 @@ class YamlFileLoader extends FileLoader
      */
     public function supports($resource, $type = null)
     {
-        return \is_string($resource) && \in_array(pathinfo($resource, PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type);
+        return \is_string($resource) && \in_array(pathinfo($resource, \PATHINFO_EXTENSION), ['yml', 'yaml'], true) && (!$type || 'yaml' === $type);
     }
 
     /**
      * Parses a route and adds it to the RouteCollection.
      *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param string          $name       Route name
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
+     * @param string $name   Route name
+     * @param array  $config Route definition
+     * @param string $path   Full path of the YAML file being processed
      */
     protected function parseRoute(RouteCollection $collection, $name, array $config, $path)
     {
@@ -118,7 +118,7 @@ class YamlFileLoader extends FileLoader
 
         foreach ($requirements as $placeholder => $requirement) {
             if (\is_int($placeholder)) {
-                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), E_USER_DEPRECATED);
+                @trigger_error(sprintf('A placeholder name must be a string (%d given). Did you forget to specify the placeholder key for the requirement "%s" of route "%s" in "%s"?', $placeholder, $requirement, $name, $path), \E_USER_DEPRECATED);
             }
         }
 
@@ -141,6 +141,7 @@ class YamlFileLoader extends FileLoader
             foreach ($config['path'] as $locale => $path) {
                 $localizedRoute = clone $route;
                 $localizedRoute->setDefault('_locale', $locale);
+                $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                 $localizedRoute->setDefault('_canonical_route', $name);
                 $localizedRoute->setPath($path);
                 $collection->add($name.'.'.$locale, $localizedRoute);
@@ -154,10 +155,9 @@ class YamlFileLoader extends FileLoader
     /**
      * Parses an import and adds the routes in the resource to the RouteCollection.
      *
-     * @param RouteCollection $collection A RouteCollection instance
-     * @param array           $config     Route definition
-     * @param string          $path       Full path of the YAML file being processed
-     * @param string          $file       Loaded file name
+     * @param array  $config Route definition
+     * @param string $path   Full path of the YAML file being processed
+     * @param string $file   Loaded file name
      */
     protected function parseImport(RouteCollection $collection, array $config, $path, $file)
     {
@@ -171,6 +171,7 @@ class YamlFileLoader extends FileLoader
         $schemes = isset($config['schemes']) ? $config['schemes'] : null;
         $methods = isset($config['methods']) ? $config['methods'] : null;
         $trailingSlashOnRoot = $config['trailing_slash_on_root'] ?? true;
+        $exclude = $config['exclude'] ?? null;
 
         if (isset($config['controller'])) {
             $defaults['_controller'] = $config['controller'];
@@ -187,7 +188,7 @@ class YamlFileLoader extends FileLoader
 
         $this->setCurrentDir(\dirname($path));
 
-        $imported = $this->import($config['resource'], $type, false, $file);
+        $imported = $this->import($config['resource'], $type, false, $file, $exclude) ?: [];
 
         if (!\is_array($imported)) {
             $imported = [$imported];
@@ -215,6 +216,7 @@ class YamlFileLoader extends FileLoader
                         foreach ($prefix as $locale => $localePrefix) {
                             $localizedRoute = clone $route;
                             $localizedRoute->setDefault('_locale', $locale);
+                            $localizedRoute->setRequirement('_locale', preg_quote($locale, RouteCompiler::REGEX_DELIMITER));
                             $localizedRoute->setDefault('_canonical_route', $name);
                             $localizedRoute->setPath($localePrefix.(!$trailingSlashOnRoot && '/' === $route->getPath() ? '' : $route->getPath()));
                             $subCollection->add($name.'.'.$locale, $localizedRoute);
diff --git a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
index ebf6632a..8e61d03e 100644
--- a/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
+++ b/vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd
@@ -61,9 +61,11 @@
     <xsd:sequence maxOccurs="unbounded" minOccurs="0">
       <xsd:group ref="configs" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="prefix" type="localized-path" minOccurs="0" maxOccurs="unbounded" />
+      <xsd:element name="exclude" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
     </xsd:sequence>
     <xsd:attribute name="resource" type="xsd:string" use="required" />
     <xsd:attribute name="type" type="xsd:string" />
+    <xsd:attribute name="exclude" type="xsd:string" />
     <xsd:attribute name="prefix" type="xsd:string" />
     <xsd:attribute name="name-prefix" type="xsd:string" />
     <xsd:attribute name="host" type="xsd:string" />
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
index ab67e688..73e2e1e0 100644
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
+++ b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php
@@ -121,7 +121,7 @@ EOF;
         }
     }
 EOF;
-            $compiledRoutes[4] = $forDump ? $checkConditionCode .= ",\n" : eval('return '.$checkConditionCode.';');
+            $compiledRoutes[4] = $forDump ? $checkConditionCode.",\n" : eval('return '.$checkConditionCode.';');
         } else {
             $compiledRoutes[4] = $forDump ? "    null, // \$checkCondition\n" : null;
         }
@@ -244,7 +244,7 @@ EOF;
      * Last but not least:
      *  - Because it is not possibe to mix unicode/non-unicode patterns in a single regexp, several of them can be generated.
      *  - The same regexp can be used several times when the logic in the switch rejects the match. When this happens, the
-     *    matching-but-failing subpattern is blacklisted by replacing its name by "(*F)", which forces a failure-to-match.
+     *    matching-but-failing subpattern is excluded by replacing its name by "(*F)", which forces a failure-to-match.
      *    To ease this backlisting operation, the name of subpatterns is also the string offset where the replacement should occur.
      */
     private function compileDynamicRoutes(RouteCollection $collection, bool $matchHost, int $chunkLimit, array &$conditions): array
@@ -443,7 +443,7 @@ EOF;
         ];
     }
 
-    private function getExpressionLanguage()
+    private function getExpressionLanguage(): ExpressionLanguage
     {
         if (null === $this->expressionLanguage) {
             if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
@@ -455,7 +455,7 @@ EOF;
         return $this->expressionLanguage;
     }
 
-    private function indent($code, $level = 1)
+    private function indent(string $code, int $level = 1): string
     {
         return preg_replace('/^./m', str_repeat('    ', $level).'$0', $code);
     }
diff --git a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
index 0528a7b2..8ef76df8 100644
--- a/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
+++ b/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php
@@ -32,7 +32,7 @@ trait CompiledUrlMatcherTrait
     private $dynamicRoutes = [];
     private $checkCondition;
 
-    public function match($pathinfo)
+    public function match($pathinfo): array
     {
         $allow = $allowSchemes = [];
         if ($ret = $this->doMatch($pathinfo, $allow, $allowSchemes)) {
diff --git a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
index 2a25293a..34aad927 100644
--- a/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
+++ b/vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php
@@ -24,8 +24,6 @@ interface MatcherDumperInterface
      * Dumps a set of routes to a string representation of executable code
      * that can then be used to match a request against these routes.
      *
-     * @param array $options An array of options
-     *
      * @return string Executable code
      */
     public function dump(array $options = []);
diff --git a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
index ee505e16..09404efa 100644
--- a/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
+++ b/vendor/symfony/routing/Matcher/Dumper/PhpMatcherDumper.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\Routing\Matcher\Dumper;
 
-@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "CompiledUrlMatcherDumper" instead.', PhpMatcherDumper::class), \E_USER_DEPRECATED);
 
 /**
  * PhpMatcherDumper creates a PHP class able to match URLs for a given set of routes.
diff --git a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
index fb035d1e..b687ffb4 100644
--- a/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
+++ b/vendor/symfony/routing/Matcher/TraceableUrlMatcher.php
@@ -152,7 +152,7 @@ class TraceableUrlMatcher extends UrlMatcher
         return [];
     }
 
-    private function addTrace($log, $level = self::ROUTE_DOES_NOT_MATCH, $name = null, $route = null)
+    private function addTrace(string $log, int $level = self::ROUTE_DOES_NOT_MATCH, string $name = null, Route $route = null)
     {
         $this->traces[] = [
             'log' => $log,
diff --git a/vendor/symfony/routing/Matcher/UrlMatcher.php b/vendor/symfony/routing/Matcher/UrlMatcher.php
index dca1d636..b44dfa1b 100644
--- a/vendor/symfony/routing/Matcher/UrlMatcher.php
+++ b/vendor/symfony/routing/Matcher/UrlMatcher.php
@@ -93,9 +93,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
             throw new NoConfigurationException();
         }
 
-        throw 0 < \count($this->allow)
-            ? new MethodNotAllowedException(array_unique($this->allow))
-            : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
+        throw 0 < \count($this->allow) ? new MethodNotAllowedException(array_unique($this->allow)) : new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo));
     }
 
     /**
@@ -120,8 +118,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
     /**
      * Tries to match a URL with a set of routes.
      *
-     * @param string          $pathinfo The path info to be parsed
-     * @param RouteCollection $routes   The set of routes
+     * @param string $pathinfo The path info to be parsed
      *
      * @return array An array of parameters
      *
@@ -208,7 +205,6 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
      * in matchers that do not have access to the matched Route instance
      * (like the PHP and Apache matcher dumpers).
      *
-     * @param Route  $route      The route we are matching against
      * @param string $name       The name of the route
      * @param array  $attributes An array of attributes from the matcher
      *
@@ -231,7 +227,6 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
      *
      * @param string $pathinfo The path
      * @param string $name     The route name
-     * @param Route  $route    The route
      *
      * @return array The first element represents the status, the second contains additional information
      */
@@ -279,7 +274,7 @@ class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface
     /**
      * @internal
      */
-    protected function createRequest($pathinfo)
+    protected function createRequest(string $pathinfo): ?Request
     {
         if (!class_exists('Symfony\Component\HttpFoundation\Request')) {
             return null;
diff --git a/vendor/symfony/routing/README.md b/vendor/symfony/routing/README.md
index 88fb1fde..03b258ec 100644
--- a/vendor/symfony/routing/README.md
+++ b/vendor/symfony/routing/README.md
@@ -3,10 +3,48 @@ Routing Component
 
 The Routing component maps an HTTP request to a set of configuration variables.
 
+Getting Started
+---------------
+
+```
+$ composer require symfony/routing
+```
+
+```php
+use App\Controller\BlogController;
+use Symfony\Component\Routing\Generator\UrlGenerator;
+use Symfony\Component\Routing\Matcher\UrlMatcher;
+use Symfony\Component\Routing\RequestContext;
+use Symfony\Component\Routing\Route;
+use Symfony\Component\Routing\RouteCollection;
+
+$route = new Route('/blog/{slug}', ['_controller' => BlogController::class]);
+$routes = new RouteCollection();
+$routes->add('blog_show', $route);
+
+$context = new RequestContext();
+
+// Routing can match routes with incoming requests
+$matcher = new UrlMatcher($routes, $context);
+$parameters = $matcher->match('/blog/lorem-ipsum');
+// $parameters = [
+//     '_controller' => 'App\Controller\BlogController',
+//     'slug' => 'lorem-ipsum',
+//     '_route' => 'blog_show'
+// ]
+
+// Routing can also generate URLs for a given route
+$generator = new UrlGenerator($routes, $context);
+$url = $generator->generate('blog_show', [
+    'slug' => 'my-blog-post',
+]);
+// $url = '/blog/my-blog-post'
+```
+
 Resources
 ---------
 
-  * [Documentation](https://symfony.com/doc/current/components/routing/index.html)
+  * [Documentation](https://symfony.com/doc/current/routing.html)
   * [Contributing](https://symfony.com/doc/current/contributing/index.html)
   * [Report issues](https://github.com/symfony/symfony/issues) and
     [send Pull Requests](https://github.com/symfony/symfony/pulls)
diff --git a/vendor/symfony/routing/RequestContext.php b/vendor/symfony/routing/RequestContext.php
index 591dd159..1d68b17e 100644
--- a/vendor/symfony/routing/RequestContext.php
+++ b/vendor/symfony/routing/RequestContext.php
@@ -57,8 +57,8 @@ class RequestContext
         $this->setMethod($request->getMethod());
         $this->setHost($request->getHost());
         $this->setScheme($request->getScheme());
-        $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
-        $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
+        $this->setHttpPort($request->isSecure() || null === $request->getPort() ? $this->httpPort : $request->getPort());
+        $this->setHttpsPort($request->isSecure() && null !== $request->getPort() ? $request->getPort() : $this->httpsPort);
         $this->setQueryString($request->server->get('QUERY_STRING', ''));
 
         return $this;
diff --git a/vendor/symfony/routing/Route.php b/vendor/symfony/routing/Route.php
index 90d8e617..7f20c794 100644
--- a/vendor/symfony/routing/Route.php
+++ b/vendor/symfony/routing/Route.php
@@ -45,10 +45,10 @@ class Route implements \Serializable
      * @param array           $defaults     An array of default parameter values
      * @param array           $requirements An array of requirements for parameters (regexes)
      * @param array           $options      An array of options
-     * @param string          $host         The host pattern to match
+     * @param string|null     $host         The host pattern to match
      * @param string|string[] $schemes      A required URI scheme or an array of restricted schemes
      * @param string|string[] $methods      A required HTTP method or an array of restricted methods
-     * @param string          $condition    A condition that should evaluate to true for the route to match
+     * @param string|null     $condition    A condition that should evaluate to true for the route to match
      */
     public function __construct(string $path, array $defaults = [], array $requirements = [], array $options = [], ?string $host = '', $schemes = [], $methods = [], ?string $condition = '')
     {
@@ -78,6 +78,8 @@ class Route implements \Serializable
     }
 
     /**
+     * @return string
+     *
      * @internal since Symfony 4.3
      * @final since Symfony 4.3
      */
@@ -135,7 +137,7 @@ class Route implements \Serializable
     public function setPath($pattern)
     {
         if (false !== strpbrk($pattern, '?<')) {
-            $pattern = preg_replace_callback('#\{(\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) {
+            $pattern = preg_replace_callback('#\{(!?\w++)(<.*?>)?(\?[^\}]*+)?\}#', function ($m) {
                 if (isset($m[3][0])) {
                     $this->setDefault($m[1], '?' !== $m[3] ? substr($m[3], 1) : null);
                 }
@@ -267,8 +269,6 @@ class Route implements \Serializable
      *
      * This method implements a fluent interface.
      *
-     * @param array $options The options
-     *
      * @return $this
      */
     public function setOptions(array $options)
@@ -285,8 +285,6 @@ class Route implements \Serializable
      *
      * This method implements a fluent interface.
      *
-     * @param array $options The options
-     *
      * @return $this
      */
     public function addOptions(array $options)
@@ -378,6 +376,10 @@ class Route implements \Serializable
      */
     public function addDefaults(array $defaults)
     {
+        if (isset($defaults['_locale']) && $this->isLocalized()) {
+            unset($defaults['_locale']);
+        }
+
         foreach ($defaults as $name => $default) {
             $this->defaults[$name] = $default;
         }
@@ -420,6 +422,10 @@ class Route implements \Serializable
      */
     public function setDefault($name, $default)
     {
+        if ('_locale' === $name && $this->isLocalized()) {
+            return $this;
+        }
+
         $this->defaults[$name] = $default;
         $this->compiled = null;
 
@@ -463,6 +469,10 @@ class Route implements \Serializable
      */
     public function addRequirements(array $requirements)
     {
+        if (isset($requirements['_locale']) && $this->isLocalized()) {
+            unset($requirements['_locale']);
+        }
+
         foreach ($requirements as $key => $regex) {
             $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
         }
@@ -505,6 +515,10 @@ class Route implements \Serializable
      */
     public function setRequirement($key, $regex)
     {
+        if ('_locale' === $key && $this->isLocalized()) {
+            return $this;
+        }
+
         $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
         $this->compiled = null;
 
@@ -559,7 +573,7 @@ class Route implements \Serializable
         return $this->compiled = $class::compile($this);
     }
 
-    private function sanitizeRequirement($key, $regex)
+    private function sanitizeRequirement(string $key, $regex)
     {
         if (!\is_string($regex)) {
             throw new \InvalidArgumentException(sprintf('Routing requirement for "%s" must be a string.', $key));
@@ -579,4 +593,9 @@ class Route implements \Serializable
 
         return $regex;
     }
+
+    private function isLocalized(): bool
+    {
+        return isset($this->defaults['_locale']) && isset($this->defaults['_canonical_route']) && ($this->requirements['_locale'] ?? null) === preg_quote($this->defaults['_locale'], RouteCompiler::REGEX_DELIMITER);
+    }
 }
diff --git a/vendor/symfony/routing/RouteCollection.php b/vendor/symfony/routing/RouteCollection.php
index 6c642300..6537bbae 100644
--- a/vendor/symfony/routing/RouteCollection.php
+++ b/vendor/symfony/routing/RouteCollection.php
@@ -69,8 +69,7 @@ class RouteCollection implements \IteratorAggregate, \Countable
     /**
      * Adds a route.
      *
-     * @param string $name  The route name
-     * @param Route  $route A Route instance
+     * @param string $name The route name
      */
     public function add($name, Route $route)
     {
@@ -140,6 +139,10 @@ class RouteCollection implements \IteratorAggregate, \Countable
      */
     public function addPrefix($prefix, array $defaults = [], array $requirements = [])
     {
+        if (null === $prefix) {
+            @trigger_error(sprintf('Passing null as $prefix to %s is deprecated in Symfony 4.4 and will trigger a TypeError in 5.0.', __METHOD__), \E_USER_DEPRECATED);
+        }
+
         $prefix = trim(trim($prefix), '/');
 
         if ('' === $prefix) {
@@ -236,8 +239,6 @@ class RouteCollection implements \IteratorAggregate, \Countable
      * Adds options to all routes.
      *
      * An existing option value under the same name in a route will be overridden.
-     *
-     * @param array $options An array of options
      */
     public function addOptions(array $options)
     {
diff --git a/vendor/symfony/routing/RouteCollectionBuilder.php b/vendor/symfony/routing/RouteCollectionBuilder.php
index d1b1cdf5..92cf7e79 100644
--- a/vendor/symfony/routing/RouteCollectionBuilder.php
+++ b/vendor/symfony/routing/RouteCollectionBuilder.php
@@ -115,8 +115,7 @@ class RouteCollectionBuilder
     /**
      * Add a RouteCollectionBuilder.
      *
-     * @param string                 $prefix
-     * @param RouteCollectionBuilder $builder
+     * @param string $prefix
      */
     public function mount($prefix, self $builder)
     {
@@ -308,7 +307,9 @@ class RouteCollectionBuilder
             } else {
                 /* @var self $route */
                 $subCollection = $route->build();
-                $subCollection->addPrefix($this->prefix);
+                if (null !== $this->prefix) {
+                    $subCollection->addPrefix($this->prefix);
+                }
 
                 $routeCollection->addCollection($subCollection);
             }
diff --git a/vendor/symfony/routing/RouteCompiler.php b/vendor/symfony/routing/RouteCompiler.php
index cfea6427..fa63df48 100644
--- a/vendor/symfony/routing/RouteCompiler.php
+++ b/vendor/symfony/routing/RouteCompiler.php
@@ -61,6 +61,14 @@ class RouteCompiler implements RouteCompilerInterface
             $hostRegex = $result['regex'];
         }
 
+        $locale = $route->getDefault('_locale');
+        if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale, self::REGEX_DELIMITER) === $route->getRequirement('_locale')) {
+            $requirements = $route->getRequirements();
+            unset($requirements['_locale']);
+            $route->setRequirements($requirements);
+            $route->setPath(str_replace('{_locale}', $locale, $route->getPath()));
+        }
+
         $path = $route->getPath();
 
         $result = self::compilePattern($route, $path, false);
@@ -92,7 +100,7 @@ class RouteCompiler implements RouteCompilerInterface
         );
     }
 
-    private static function compilePattern(Route $route, $pattern, $isHost)
+    private static function compilePattern(Route $route, string $pattern, bool $isHost): array
     {
         $tokens = [];
         $variables = [];
@@ -111,7 +119,7 @@ class RouteCompiler implements RouteCompilerInterface
 
         // Match all variables enclosed in "{}" and iterate over them. But we only want to match the innermost variable
         // in case of nested "{}", e.g. {foo{bar}}. This in ensured because \w does not match "{" or "}" itself.
-        preg_match_all('#\{(!)?(\w+)\}#', $pattern, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
+        preg_match_all('#\{(!)?(\w+)\}#', $pattern, $matches, \PREG_OFFSET_CAPTURE | \PREG_SET_ORDER);
         foreach ($matches as $match) {
             $important = $match[1][1] >= 0;
             $varName = $match[2][0];
@@ -139,7 +147,7 @@ class RouteCompiler implements RouteCompilerInterface
             }
 
             if (\strlen($varName) > self::VARIABLE_MAXIMUM_LENGTH) {
-                throw new \DomainException(sprintf('Variable name "%s" cannot be longer than %s characters in route pattern "%s". Please use a shorter name.', $varName, self::VARIABLE_MAXIMUM_LENGTH, $pattern));
+                throw new \DomainException(sprintf('Variable name "%s" cannot be longer than %d characters in route pattern "%s". Please use a shorter name.', $varName, self::VARIABLE_MAXIMUM_LENGTH, $pattern));
             }
 
             if ($isSeparator && $precedingText !== $precedingChar) {
@@ -199,7 +207,7 @@ class RouteCompiler implements RouteCompilerInterface
         }
 
         // find the first optional token
-        $firstOptional = PHP_INT_MAX;
+        $firstOptional = \PHP_INT_MAX;
         if (!$isHost) {
             for ($i = \count($tokens) - 1; $i >= 0; --$i) {
                 $token = $tokens[$i];
diff --git a/vendor/symfony/routing/Router.php b/vendor/symfony/routing/Router.php
index 5f8d9ffb..8bc6f21a 100644
--- a/vendor/symfony/routing/Router.php
+++ b/vendor/symfony/routing/Router.php
@@ -97,12 +97,10 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     private $expressionLanguageProviders = [];
 
+    private static $cache = [];
+
     /**
-     * @param LoaderInterface $loader   A LoaderInterface instance
-     * @param mixed           $resource The main resource to load
-     * @param array           $options  An array of options
-     * @param RequestContext  $context  The context
-     * @param LoggerInterface $logger   A logger instance
+     * @param mixed $resource The main resource to load
      */
     public function __construct(LoaderInterface $loader, $resource, array $options = [], RequestContext $context = null, LoggerInterface $logger = null, string $defaultLocale = null)
     {
@@ -129,8 +127,6 @@ class Router implements RouterInterface, RequestMatcherInterface
      *   * strict_requirements:    Configure strict requirement checking for generators
      *                             implementing ConfigurableRequirementsInterface (default is true)
      *
-     * @param array $options An array of options
-     *
      * @throws \InvalidArgumentException When unsupported option is provided
      */
     public function setOptions(array $options)
@@ -289,7 +285,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             return $this->matcher;
         }
 
-        $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']);
+        $compiled = is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && (UrlMatcher::class === $this->options['matcher_base_class'] || RedirectableUrlMatcher::class === $this->options['matcher_base_class']) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true);
 
         if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) {
             $routes = $this->getRouteCollection();
@@ -325,7 +321,7 @@ class Router implements RouterInterface, RequestMatcherInterface
         );
 
         if ($compiled) {
-            return $this->matcher = new $this->options['matcher_class'](require $cache->getPath(), $this->context);
+            return $this->matcher = new $this->options['matcher_class'](self::getCompiledRoutes($cache->getPath()), $this->context);
         }
 
         if (!class_exists($this->options['matcher_cache_class'], false)) {
@@ -346,7 +342,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             return $this->generator;
         }
 
-        $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'];
+        $compiled = is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && UrlGenerator::class === $this->options['generator_base_class'] && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true);
 
         if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) {
             $routes = $this->getRouteCollection();
@@ -369,7 +365,7 @@ class Router implements RouterInterface, RequestMatcherInterface
             );
 
             if ($compiled) {
-                $this->generator = new $this->options['generator_class'](require $cache->getPath(), $this->context, $this->logger);
+                $this->generator = new $this->options['generator_class'](self::getCompiledRoutes($cache->getPath()), $this->context, $this->logger, $this->defaultLocale);
             } else {
                 if (!class_exists($this->options['generator_cache_class'], false)) {
                     require_once $cache->getPath();
@@ -396,8 +392,8 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     protected function getGeneratorDumperInstance()
     {
-        // For BC, fallback to PhpGeneratorDumper if the UrlGenerator and UrlGeneratorDumper are not consistent with each other
-        if (is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) !== is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) {
+        // For BC, fallback to PhpGeneratorDumper (which is the old default value) if the old UrlGenerator is used with the new default CompiledUrlGeneratorDumper
+        if (!is_a($this->options['generator_class'], CompiledUrlGenerator::class, true) && is_a($this->options['generator_dumper_class'], CompiledUrlGeneratorDumper::class, true)) {
             return new PhpGeneratorDumper($this->getRouteCollection());
         }
 
@@ -409,8 +405,8 @@ class Router implements RouterInterface, RequestMatcherInterface
      */
     protected function getMatcherDumperInstance()
     {
-        // For BC, fallback to PhpMatcherDumper if the UrlMatcher and UrlMatcherDumper are not consistent with each other
-        if (is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) !== is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) {
+        // For BC, fallback to PhpMatcherDumper (which is the old default value) if the old UrlMatcher is used with the new default CompiledUrlMatcherDumper
+        if (!is_a($this->options['matcher_class'], CompiledUrlMatcher::class, true) && is_a($this->options['matcher_dumper_class'], CompiledUrlMatcherDumper::class, true)) {
             return new PhpMatcherDumper($this->getRouteCollection());
         }
 
@@ -420,10 +416,8 @@ class Router implements RouterInterface, RequestMatcherInterface
     /**
      * Provides the ConfigCache factory implementation, falling back to a
      * default implementation if necessary.
-     *
-     * @return ConfigCacheFactoryInterface
      */
-    private function getConfigCacheFactory()
+    private function getConfigCacheFactory(): ConfigCacheFactoryInterface
     {
         if (null === $this->configCacheFactory) {
             $this->configCacheFactory = new ConfigCacheFactory($this->options['debug']);
@@ -432,14 +426,31 @@ class Router implements RouterInterface, RequestMatcherInterface
         return $this->configCacheFactory;
     }
 
-    private function checkDeprecatedOption($key)
+    private function checkDeprecatedOption(string $key)
     {
         switch ($key) {
             case 'generator_base_class':
             case 'generator_cache_class':
             case 'matcher_base_class':
             case 'matcher_cache_class':
-                @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Option "%s" given to router %s is deprecated since Symfony 4.3.', $key, static::class), \E_USER_DEPRECATED);
+        }
+    }
+
+    private static function getCompiledRoutes(string $path): array
+    {
+        if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) {
+            self::$cache = null;
+        }
+
+        if (null === self::$cache) {
+            return require $path;
         }
+
+        if (isset(self::$cache[$path])) {
+            return self::$cache[$path];
+        }
+
+        return self::$cache[$path] = require $path;
     }
 }
diff --git a/vendor/symfony/routing/Tests/Annotation/RouteTest.php b/vendor/symfony/routing/Tests/Annotation/RouteTest.php
deleted file mode 100644
index 58c59dcb..00000000
--- a/vendor/symfony/routing/Tests/Annotation/RouteTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Annotation;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Annotation\Route;
-
-class RouteTest extends TestCase
-{
-    public function testInvalidRouteParameter()
-    {
-        $this->expectException('BadMethodCallException');
-        $route = new Route(['foo' => 'bar']);
-    }
-
-    public function testTryingToSetLocalesDirectly()
-    {
-        $this->expectException('BadMethodCallException');
-        $route = new Route(['locales' => ['nl' => 'bar']]);
-    }
-
-    /**
-     * @dataProvider getValidParameters
-     */
-    public function testRouteParameters($parameter, $value, $getter)
-    {
-        $route = new Route([$parameter => $value]);
-        $this->assertEquals($route->$getter(), $value);
-    }
-
-    public function getValidParameters()
-    {
-        return [
-            ['value', '/Blog', 'getPath'],
-            ['requirements', ['locale' => 'en'], 'getRequirements'],
-            ['options', ['compiler_class' => 'RouteCompiler'], 'getOptions'],
-            ['name', 'blog_index', 'getName'],
-            ['defaults', ['_controller' => 'MyBlogBundle:Blog:index'], 'getDefaults'],
-            ['schemes', ['https'], 'getSchemes'],
-            ['methods', ['GET', 'POST'], 'getMethods'],
-            ['host', '{locale}.example.com', 'getHost'],
-            ['condition', 'context.getMethod() == "GET"', 'getCondition'],
-            ['value', ['nl' => '/hier', 'en' => '/here'], 'getLocalizedPaths'],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/CompiledRouteTest.php b/vendor/symfony/routing/Tests/CompiledRouteTest.php
deleted file mode 100644
index 9c9f4f28..00000000
--- a/vendor/symfony/routing/Tests/CompiledRouteTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\CompiledRoute;
-
-class CompiledRouteTest extends TestCase
-{
-    public function testAccessors()
-    {
-        $compiled = new CompiledRoute('prefix', 'regex', ['tokens'], [], null, [], [], ['variables']);
-        $this->assertEquals('prefix', $compiled->getStaticPrefix(), '__construct() takes a static prefix as its second argument');
-        $this->assertEquals('regex', $compiled->getRegex(), '__construct() takes a regexp as its third argument');
-        $this->assertEquals(['tokens'], $compiled->getTokens(), '__construct() takes an array of tokens as its fourth argument');
-        $this->assertEquals(['variables'], $compiled->getVariables(), '__construct() takes an array of variables as its ninth argument');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php b/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php
deleted file mode 100644
index 30c7516e..00000000
--- a/vendor/symfony/routing/Tests/DependencyInjection/RoutingResolverPassTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\DependencyInjection;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\Routing\DependencyInjection\RoutingResolverPass;
-
-class RoutingResolverPassTest extends TestCase
-{
-    public function testProcess()
-    {
-        $container = new ContainerBuilder();
-        $container->register('routing.resolver', LoaderResolver::class);
-        $container->register('loader1')->addTag('routing.loader');
-        $container->register('loader2')->addTag('routing.loader');
-
-        (new RoutingResolverPass())->process($container);
-
-        $this->assertEquals(
-            [['addLoader', [new Reference('loader1')]], ['addLoader', [new Reference('loader2')]]],
-            $container->getDefinition('routing.resolver')->getMethodCalls()
-        );
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php
deleted file mode 100644
index bd7ea962..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/AbstractClass.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-abstract class AbstractClass
-{
-    abstract public function abstractRouteAction();
-
-    public function routeAction($arg1, $arg2 = 'defaultValue2', $arg3 = 'defaultValue3')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php
deleted file mode 100644
index a3882773..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BarClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class BarClass
-{
-    public function routeAction($arg1, $arg2 = 'defaultValue2', $arg3 = 'defaultValue3')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php
deleted file mode 100644
index 471968b5..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/BazClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class BazClass
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php
deleted file mode 100644
index dac72e3d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/EncodingClass.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class EncodingClass
-{
-    public function routeÀction()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php
deleted file mode 100644
index 320dc350..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooClass.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-class FooClass
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php b/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php
deleted file mode 100644
index ee8f4b07..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotatedClasses/FooTrait.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses;
-
-trait FooTrait
-{
-    public function doBar()
-    {
-        $baz = self::class;
-        if (true) {
-        }
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php
deleted file mode 100644
index 50576bcf..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/AbstractClassController.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-abstract class AbstractClassController
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php
deleted file mode 100644
index b96c4d65..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class ActionPathController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php
deleted file mode 100644
index f7e38c29..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/DefaultValueController.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class DefaultValueController
-{
-    /**
-     * @Route("/{default}/path", name="action")
-     */
-    public function action($default = 'value')
-    {
-    }
-
-    /**
-     * @Route("/hello/{name<\w+>}", name="hello_without_default")
-     * @Route("/hello/{name<\w+>?Symfony}", name="hello_with_default")
-     */
-    public function hello(string $name = 'World')
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php
deleted file mode 100644
index e832c6b3..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/ExplicitLocalizedActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class ExplicitLocalizedActionPathController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php
deleted file mode 100644
index a4acb310..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/GlobalDefaultsClass.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/defaults", locale="g_locale", format="g_format")
- */
-class GlobalDefaultsClass
-{
-    /**
-     * @Route("/specific-locale", name="specific_locale", locale="s_locale")
-     */
-    public function locale()
-    {
-    }
-
-    /**
-     * @Route("/specific-format", name="specific_format", format="s_format")
-     */
-    public function format()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php
deleted file mode 100644
index c70793a8..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/here", name="lol", methods={"GET", "POST"}, schemes={"https"})
- */
-class InvokableController
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php
deleted file mode 100644
index d9633b9f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/InvokableLocalizedController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/hier", "en": "/here"}, name="action")
- */
-class InvokableLocalizedController
-{
-    public function __invoke()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php
deleted file mode 100644
index be6a3566..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedActionPathController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class LocalizedActionPathController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php
deleted file mode 100644
index cadf3d1b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedMethodActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"en": "/the/path", "nl": "/het/pad"})
- */
-class LocalizedMethodActionControllers
-{
-    /**
-     * @Route(name="post", methods={"POST"})
-     */
-    public function post()
-    {
-    }
-
-    /**
-     * @Route(name="put", methods={"PUT"})
-     */
-    public function put()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php
deleted file mode 100644
index 68f51b48..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixLocalizedActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl", "en": "/en"})
- */
-class LocalizedPrefixLocalizedActionController
-{
-    /**
-     * @Route(path={"nl": "/actie", "en": "/action"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php
deleted file mode 100644
index a06e44e8..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingLocaleActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl"})
- */
-class LocalizedPrefixMissingLocaleActionController
-{
-    /**
-     * @Route(path={"nl": "/actie", "en": "/action"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php
deleted file mode 100644
index 8c9d96bc..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixMissingRouteLocaleActionController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"nl": "/nl", "en": "/en"})
- */
-class LocalizedPrefixMissingRouteLocaleActionController
-{
-    /**
-     * @Route(path={"nl": "/actie"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php
deleted file mode 100644
index 91dceb33..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/LocalizedPrefixWithRouteWithoutLocale.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route(path={"en": "/en", "nl": "/nl"})
- */
-class LocalizedPrefixWithRouteWithoutLocale
-{
-    /**
-     * @Route("/suffix", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php
deleted file mode 100644
index 9350f3a9..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MethodActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/the/path")
- */
-class MethodActionControllers
-{
-    /**
-     * @Route(name="post", methods={"POST"})
-     */
-    public function post()
-    {
-    }
-
-    /**
-     * @Route(name="put", methods={"PUT"})
-     */
-    public function put()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php
deleted file mode 100644
index 7a4afb1e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/MissingRouteNameController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class MissingRouteNameController
-{
-    /**
-     * @Route("/path")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php
deleted file mode 100644
index 5aa1b07c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/NothingButNameController.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-class NothingButNameController
-{
-    /**
-     * @Route(name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php
deleted file mode 100644
index 0b07d63d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionLocalizedRouteController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix")
- */
-class PrefixedActionLocalizedRouteController
-{
-    /**
-     * @Route(path={"en": "/path", "nl": "/pad"}, name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php
deleted file mode 100644
index 04c1d044..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/PrefixedActionPathController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix", host="frankdejonge.nl", condition="lol=fun")
- */
-class PrefixedActionPathController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php
deleted file mode 100644
index 301f9691..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RequirementsWithoutPlaceholderNameController.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/", requirements={"foo", "\d+"})
- */
-class RequirementsWithoutPlaceholderNameController
-{
-    /**
-     * @Route("/{foo}", name="foo", requirements={"foo", "\d+"})
-     */
-    public function foo()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php
deleted file mode 100644
index a98a527a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/RouteWithPrefixController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/prefix")
- */
-class RouteWithPrefixController
-{
-    /**
-     * @Route("/path", name="action")
-     */
-    public function action()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php b/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php
deleted file mode 100644
index ea5505f7..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/AnnotationFixtures/Utf8ActionControllers.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures;
-
-use Symfony\Component\Routing\Annotation\Route;
-
-/**
- * @Route("/test", utf8=true)
- */
-class Utf8ActionControllers
-{
-    /**
-     * @Route(name="one")
-     */
-    public function one()
-    {
-    }
-
-    /**
-     * @Route(name="two", utf8=false)
-     */
-    public function two()
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php b/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php
deleted file mode 100644
index 0f6e198c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomCompiledRoute.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\CompiledRoute;
-
-class CustomCompiledRoute extends CompiledRoute
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php b/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php
deleted file mode 100644
index 22b942d7..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomRouteCompiler.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCompiler;
-
-class CustomRouteCompiler extends RouteCompiler
-{
-    /**
-     * {@inheritdoc}
-     */
-    public static function compile(Route $route)
-    {
-        return new CustomCompiledRoute('', '', [], []);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php b/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php
deleted file mode 100644
index b7a02b60..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/CustomXmlFileLoader.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Config\Util\XmlUtils;
-use Symfony\Component\Routing\Loader\XmlFileLoader;
-
-/**
- * XmlFileLoader with schema validation turned off.
- */
-class CustomXmlFileLoader extends XmlFileLoader
-{
-    protected function loadFile($file)
-    {
-        return XmlUtils::loadFile($file, function () { return true; });
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php
deleted file mode 100644
index de878956..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\OtherAnnotatedClasses;
-
-trait AnonymousClassInTrait
-{
-    public function test()
-    {
-        return new class() {
-            public function foo()
-            {
-            }
-        };
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php
deleted file mode 100644
index 8900d34e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/NoStartTagClass.php
+++ /dev/null
@@ -1,3 +0,0 @@
-class NoStartTagClass
-{
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php b/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php
deleted file mode 100644
index 729c9b4d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/OtherAnnotatedClasses/VariadicClass.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures\OtherAnnotatedClasses;
-
-class VariadicClass
-{
-    public function routeAction(...$params)
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php b/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php
deleted file mode 100644
index 79ae1cce..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/RedirectableUrlMatcher.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Fixtures;
-
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-
-/**
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [
-            '_controller' => 'Some controller reference...',
-            'path' => $path,
-            'scheme' => $scheme,
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/annotated.php b/vendor/symfony/routing/Tests/Fixtures/annotated.php
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/bad_format.yml b/vendor/symfony/routing/Tests/Fixtures/bad_format.yml
deleted file mode 100644
index 8ba50e2e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/bad_format.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-	path:     /blog/{slug}
-	defaults: { _controller: "MyBundle:Blog:show" }
diff --git a/vendor/symfony/routing/Tests/Fixtures/bar.xml b/vendor/symfony/routing/Tests/Fixtures/bar.xml
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml
deleted file mode 100644
index 5c62914f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml">
-        <default key="_controller">FrameworkBundle:Template:template</default>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml
deleted file mode 100644
index 4240b74d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import__controller.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-_static:
-    resource: routing.yml
-    defaults:
-        _controller: FrameworkBundle:Template:template
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml
deleted file mode 100644
index 8f52c4ec..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml" controller="FrameworkBundle:Template:template" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml
deleted file mode 100644
index 1a71c62b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_controller.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-_static:
-    resource: routing.yml
-    controller: FrameworkBundle:Template:template
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml
deleted file mode 100644
index e092500f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="routing.xml" controller="FrameworkBundle:Template:template">
-        <default key="_controller">AppBundle:Blog:index</default>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml b/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml
deleted file mode 100644
index db1ab3cb..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/import_override_defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-_static:
-    resource: routing.yml
-    controller: FrameworkBundle:Template:template
-    defaults:
-        _controller: AppBundle:Homepage:show
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml
deleted file mode 100644
index f665ddbb..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_blog" path="/blog" controller="AppBundle:Homepage:show">
-        <default key="_controller">AppBundle:Blog:index</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml b/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml
deleted file mode 100644
index 00a2c0e9..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/override_defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-app_blog:
-    path: /blog
-    controller: AppBundle:Homepage:show
-    defaults:
-        _controller: AppBundle:Blog:index
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml b/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml
deleted file mode 100644
index f35e3e0a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/routing.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_homepage" path="/" controller="AppBundle:Homepage:show" />
-
-    <route id="app_blog" path="/blog">
-        <default key="_controller">AppBundle:Blog:list</default>
-    </route>
-
-    <route id="app_logout" path="/logout" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml b/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml
deleted file mode 100644
index cb71ec3b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/controller/routing.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-app_homepage:
-    path: /
-    controller: AppBundle:Homepage:show
-
-app_blog:
-    path: /blog
-    defaults:
-        _controller: AppBundle:Blog:list
-
-app_logout:
-    path: /logout
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.php b/vendor/symfony/routing/Tests/Fixtures/defaults.php
deleted file mode 100644
index 200b568b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->add('defaults', '/defaults')
-        ->locale('en')
-        ->format('html')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.xml b/vendor/symfony/routing/Tests/Fixtures/defaults.xml
deleted file mode 100644
index dfa9153a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="defaults" path="/defaults" locale="en" format="html" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/defaults.yml b/vendor/symfony/routing/Tests/Fixtures/defaults.yml
deleted file mode 100644
index a563ae08..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/defaults.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-defaults:
-  path: /defaults
-  locale: en
-  format: html
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml b/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml
deleted file mode 100644
index d0788366..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes1.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route1:
-    path: /route/1
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml b/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml
deleted file mode 100644
index 938fb245..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/recurse/routes2.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route2:
-    path: /route/2
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml b/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml
deleted file mode 100644
index 088cfb4d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory/routes3.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-route3:
-    path: /route/3
diff --git a/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml b/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml
deleted file mode 100644
index af829e58..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/directory_import/import.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-_directory:
-    resource: "../directory"
-    type: directory
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php
deleted file mode 100644
index 550288cb..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher0.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php
deleted file mode 100644
index 7811f150..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher1.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-        '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-        '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-        '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-        '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-        '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-        '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-        '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-        '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-        '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-        '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-        '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-        '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?:(?:[^./]*+\\.)++)(?'
-                .'|/foo/(baz|symfony)(*:47)'
-                .'|/bar(?'
-                    .'|/([^/]++)(*:70)'
-                    .'|head/([^/]++)(*:90)'
-                .')'
-                .'|/test/([^/]++)(?'
-                    .'|(*:115)'
-                .')'
-                .'|/([\']+)(*:131)'
-                .'|/a/(?'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:160)'
-                        .'|(*:168)'
-                    .')'
-                    .'|(.*)(*:181)'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:204)'
-                        .'|(*:212)'
-                    .')'
-                .')'
-                .'|/multi/hello(?:/([^/]++))?(*:248)'
-                .'|/([^/]++)/b/([^/]++)(?'
-                    .'|(*:279)'
-                    .'|(*:287)'
-                .')'
-                .'|/aba/([^/]++)(*:309)'
-            .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                .'|/route1(?'
-                    .'|3/([^/]++)(*:371)'
-                    .'|4/([^/]++)(*:389)'
-                .')'
-            .')|(?i:c\\.example\\.com)\\.(?'
-                .'|/route15/([^/]++)(*:441)'
-            .')|(?:(?:[^./]*+\\.)++)(?'
-                .'|/route16/([^/]++)(*:489)'
-                .'|/a/(?'
-                    .'|a\\.\\.\\.(*:510)'
-                    .'|b/(?'
-                        .'|([^/]++)(*:531)'
-                        .'|c/([^/]++)(*:549)'
-                    .')'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-        70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-        90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-        115 => [
-            [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-            [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-            [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-        ],
-        131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-        160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-        168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-        181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-        204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-        212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-        248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-        279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-        287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-        309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-        371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-        389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-        441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-        489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-        510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-        531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-        549 => [
-            [['_route' => 'c'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php
deleted file mode 100644
index c1822190..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher10.php
+++ /dev/null
@@ -1,2774 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/c(?'
-                    .'|f(?'
-                        .'|cd20/([^/]++)/([^/]++)/([^/]++)/cfcd20(*:54)'
-                        .'|e(?'
-                            .'|cdb/([^/]++)/([^/]++)/([^/]++)/cfecdb(*:102)'
-                            .'|e39/([^/]++)/([^/]++)/([^/]++)/cfee39(*:147)'
-                        .')'
-                        .'|a086/([^/]++)/([^/]++)/([^/]++)/cfa086(*:194)'
-                        .'|004f/([^/]++)/([^/]++)/([^/]++)/cf004f(*:240)'
-                    .')'
-                    .'|4(?'
-                        .'|ca42/([^/]++)/([^/]++)/([^/]++)/c4ca42(*:291)'
-                        .'|5147/([^/]++)/([^/]++)/([^/]++)/c45147(*:337)'
-                        .'|1000/([^/]++)/([^/]++)/([^/]++)/c41000(*:383)'
-                    .')'
-                    .'|8(?'
-                        .'|1e72/([^/]++)/([^/]++)/([^/]++)/c81e72(*:434)'
-                        .'|ffe9/([^/]++)/([^/]++)/([^/]++)/c8ffe9(*:480)'
-                        .'|6a7e/([^/]++)/([^/]++)/([^/]++)/c86a7e(*:526)'
-                    .')'
-                    .'|9(?'
-                        .'|f0f8/([^/]++)/([^/]++)/([^/]++)/c9f0f8(*:577)'
-                        .'|e107/([^/]++)/([^/]++)/([^/]++)/c9e107(*:623)'
-                    .')'
-                    .'|2(?'
-                        .'|0(?'
-                            .'|ad4/([^/]++)/([^/]++)/([^/]++)/c20ad4(*:677)'
-                            .'|3d8/([^/]++)/([^/]++)/([^/]++)/c203d8(*:722)'
-                        .')'
-                        .'|4cd7/([^/]++)/([^/]++)/([^/]++)/c24cd7(*:769)'
-                    .')'
-                    .'|5(?'
-                        .'|1ce4/([^/]++)/([^/]++)/([^/]++)/c51ce4(*:820)'
-                        .'|2f1b/([^/]++)/([^/]++)/([^/]++)/c52f1b(*:866)'
-                        .'|ff25/([^/]++)/([^/]++)/([^/]++)/c5ff25(*:912)'
-                    .')'
-                    .'|7(?'
-                        .'|4d97/([^/]++)/([^/]++)/([^/]++)/c74d97(*:963)'
-                        .'|e124/([^/]++)/([^/]++)/([^/]++)/c7e124(*:1009)'
-                    .')'
-                    .'|16a53/([^/]++)/([^/]++)/([^/]++)/c16a53(*:1058)'
-                    .'|0(?'
-                        .'|c7c7/([^/]++)/([^/]++)/([^/]++)/c0c7c7(*:1109)'
-                        .'|e190/([^/]++)/([^/]++)/([^/]++)/c0e190(*:1156)'
-                        .'|42f4/([^/]++)/([^/]++)/([^/]++)/c042f4(*:1203)'
-                        .'|58f5/([^/]++)/([^/]++)/([^/]++)/c058f5(*:1250)'
-                    .')'
-                    .'|e(?'
-                        .'|debb/([^/]++)/([^/]++)/([^/]++)/cedebb(*:1302)'
-                        .'|e631/([^/]++)/([^/]++)/([^/]++)/cee631(*:1349)'
-                    .')'
-                    .'|a(?'
-                        .'|46c1/([^/]++)/([^/]++)/([^/]++)/ca46c1(*:1401)'
-                        .'|f1a3/([^/]++)/([^/]++)/([^/]++)/caf1a3(*:1448)'
-                    .')'
-                    .'|b70ab/([^/]++)/([^/]++)/([^/]++)/cb70ab(*:1497)'
-                    .'|d0069/([^/]++)/([^/]++)/([^/]++)/cd0069(*:1545)'
-                    .'|3(?'
-                        .'|e878/([^/]++)/([^/]++)/([^/]++)/c3e878(*:1596)'
-                        .'|c59e/([^/]++)/([^/]++)/([^/]++)/c3c59e(*:1643)'
-                    .')'
-                .')'
-                .'|/e(?'
-                    .'|c(?'
-                        .'|cbc8/([^/]++)/([^/]++)/([^/]++)/eccbc8(*:1701)'
-                        .'|8(?'
-                            .'|956/([^/]++)/([^/]++)/([^/]++)/ec8956(*:1751)'
-                            .'|ce6/([^/]++)/([^/]++)/([^/]++)/ec8ce6(*:1797)'
-                        .')'
-                        .'|5dec/([^/]++)/([^/]++)/([^/]++)/ec5dec(*:1845)'
-                    .')'
-                    .'|4(?'
-                        .'|da3b/([^/]++)/([^/]++)/([^/]++)/e4da3b(*:1897)'
-                        .'|a622/([^/]++)/([^/]++)/([^/]++)/e4a622(*:1944)'
-                        .'|6de7/([^/]++)/([^/]++)/([^/]++)/e46de7(*:1991)'
-                        .'|4fea/([^/]++)/([^/]++)/([^/]++)/e44fea(*:2038)'
-                    .')'
-                    .'|3(?'
-                        .'|6985/([^/]++)/([^/]++)/([^/]++)/e36985(*:2090)'
-                        .'|796a/([^/]++)/([^/]++)/([^/]++)/e3796a(*:2137)'
-                    .')'
-                    .'|a(?'
-                        .'|5d2f/([^/]++)/([^/]++)/([^/]++)/ea5d2f(*:2189)'
-                        .'|e27d/([^/]++)/([^/]++)/([^/]++)/eae27d(*:2236)'
-                    .')'
-                    .'|2(?'
-                        .'|c(?'
-                            .'|420/([^/]++)/([^/]++)/([^/]++)/e2c420(*:2291)'
-                            .'|0be/([^/]++)/([^/]++)/([^/]++)/e2c0be(*:2337)'
-                        .')'
-                        .'|ef52/([^/]++)/([^/]++)/([^/]++)/e2ef52(*:2385)'
-                    .')'
-                    .'|d(?'
-                        .'|3d2c/([^/]++)/([^/]++)/([^/]++)/ed3d2c(*:2437)'
-                        .'|a80a/([^/]++)/([^/]++)/([^/]++)/eda80a(*:2484)'
-                        .'|dea8/([^/]++)/([^/]++)/([^/]++)/eddea8(*:2531)'
-                    .')'
-                    .'|b(?'
-                        .'|16(?'
-                            .'|0d/([^/]++)/([^/]++)/([^/]++)/eb160d(*:2586)'
-                            .'|37/([^/]++)/([^/]++)/([^/]++)/eb1637(*:2631)'
-                        .')'
-                        .'|a0dc/([^/]++)/([^/]++)/([^/]++)/eba0dc(*:2679)'
-                    .')'
-                    .'|0(?'
-                        .'|0da0/([^/]++)/([^/]++)/([^/]++)/e00da0(*:2731)'
-                        .'|c641/([^/]++)/([^/]++)/([^/]++)/e0c641(*:2778)'
-                    .')'
-                    .'|e(?'
-                        .'|cca5/([^/]++)/([^/]++)/([^/]++)/eecca5(*:2830)'
-                        .'|d5af/([^/]++)/([^/]++)/([^/]++)/eed5af(*:2877)'
-                    .')'
-                    .'|96ed4/([^/]++)/([^/]++)/([^/]++)/e96ed4(*:2926)'
-                    .'|1(?'
-                        .'|6542/([^/]++)/([^/]++)/([^/]++)/e16542(*:2977)'
-                        .'|e32e/([^/]++)/([^/]++)/([^/]++)/e1e32e(*:3024)'
-                    .')'
-                    .'|56954/([^/]++)/([^/]++)/([^/]++)/e56954(*:3073)'
-                    .'|f(?'
-                        .'|0d39/([^/]++)/([^/]++)/([^/]++)/ef0d39(*:3124)'
-                        .'|e937/([^/]++)/([^/]++)/([^/]++)/efe937(*:3171)'
-                        .'|575e/([^/]++)/([^/]++)/([^/]++)/ef575e(*:3218)'
-                    .')'
-                    .'|7b24b/([^/]++)/([^/]++)/([^/]++)/e7b24b(*:3267)'
-                    .'|836d8/([^/]++)/([^/]++)/([^/]++)/e836d8(*:3315)'
-                .')'
-                .'|/a(?'
-                    .'|8(?'
-                        .'|7ff6/([^/]++)/([^/]++)/([^/]++)/a87ff6(*:3372)'
-                        .'|baa5/([^/]++)/([^/]++)/([^/]++)/a8baa5(*:3419)'
-                        .'|f15e/([^/]++)/([^/]++)/([^/]++)/a8f15e(*:3466)'
-                        .'|c88a/([^/]++)/([^/]++)/([^/]++)/a8c88a(*:3513)'
-                        .'|abb4/([^/]++)/([^/]++)/([^/]++)/a8abb4(*:3560)'
-                    .')'
-                    .'|a(?'
-                        .'|b323/([^/]++)/([^/]++)/([^/]++)/aab323(*:3612)'
-                        .'|942a/([^/]++)/([^/]++)/([^/]++)/aa942a(*:3659)'
-                    .')'
-                    .'|5(?'
-                        .'|bfc9/([^/]++)/([^/]++)/([^/]++)/a5bfc9(*:3711)'
-                        .'|771b/([^/]++)/([^/]++)/([^/]++)/a5771b(*:3758)'
-                        .'|e001/([^/]++)/([^/]++)/([^/]++)/a5e001(*:3805)'
-                        .'|97e5/([^/]++)/([^/]++)/([^/]++)/a597e5(*:3852)'
-                        .'|16a8/([^/]++)/([^/]++)/([^/]++)/a516a8(*:3899)'
-                    .')'
-                    .'|1d0c6/([^/]++)/([^/]++)/([^/]++)/a1d0c6(*:3948)'
-                    .'|6(?'
-                        .'|84ec/([^/]++)/([^/]++)/([^/]++)/a684ec(*:3999)'
-                        .'|6658/([^/]++)/([^/]++)/([^/]++)/a66658(*:4046)'
-                    .')'
-                    .'|3(?'
-                        .'|f390/([^/]++)/([^/]++)/([^/]++)/a3f390(*:4098)'
-                        .'|c65c/([^/]++)/([^/]++)/([^/]++)/a3c65c(*:4145)'
-                    .')'
-                    .'|d(?'
-                        .'|61ab/([^/]++)/([^/]++)/([^/]++)/ad61ab(*:4197)'
-                        .'|13a2/([^/]++)/([^/]++)/([^/]++)/ad13a2(*:4244)'
-                        .'|972f/([^/]++)/([^/]++)/([^/]++)/ad972f(*:4291)'
-                    .')'
-                    .'|c(?'
-                        .'|627a/([^/]++)/([^/]++)/([^/]++)/ac627a(*:4343)'
-                        .'|1dd2/([^/]++)/([^/]++)/([^/]++)/ac1dd2(*:4390)'
-                    .')'
-                    .'|9(?'
-                        .'|7da6/([^/]++)/([^/]++)/([^/]++)/a97da6(*:4442)'
-                        .'|6b65/([^/]++)/([^/]++)/([^/]++)/a96b65(*:4489)'
-                    .')'
-                    .'|0(?'
-                        .'|a080/([^/]++)/([^/]++)/([^/]++)/a0a080(*:4541)'
-                        .'|2ffd/([^/]++)/([^/]++)/([^/]++)/a02ffd(*:4588)'
-                        .'|1a03/([^/]++)/([^/]++)/([^/]++)/a01a03(*:4635)'
-                    .')'
-                    .'|4(?'
-                        .'|a042/([^/]++)/([^/]++)/([^/]++)/a4a042(*:4687)'
-                        .'|f236/([^/]++)/([^/]++)/([^/]++)/a4f236(*:4734)'
-                        .'|9e94/([^/]++)/([^/]++)/([^/]++)/a49e94(*:4781)'
-                    .')'
-                    .'|2557a/([^/]++)/([^/]++)/([^/]++)/a2557a(*:4830)'
-                    .'|b817c/([^/]++)/([^/]++)/([^/]++)/ab817c(*:4878)'
-                .')'
-                .'|/1(?'
-                    .'|6(?'
-                        .'|7909/([^/]++)/([^/]++)/([^/]++)/167909(*:4935)'
-                        .'|a5cd/([^/]++)/([^/]++)/([^/]++)/16a5cd(*:4982)'
-                        .'|51cf/([^/]++)/([^/]++)/([^/]++)/1651cf(*:5029)'
-                    .')'
-                    .'|f(?'
-                        .'|0e3d/([^/]++)/([^/]++)/([^/]++)/1f0e3d(*:5081)'
-                        .'|f(?'
-                            .'|1de/([^/]++)/([^/]++)/([^/]++)/1ff1de(*:5131)'
-                            .'|8a7/([^/]++)/([^/]++)/([^/]++)/1ff8a7(*:5177)'
-                        .')'
-                    .')'
-                    .'|8(?'
-                        .'|2be0/([^/]++)/([^/]++)/([^/]++)/182be0(*:5230)'
-                        .'|d804/([^/]++)/([^/]++)/([^/]++)/18d804(*:5277)'
-                        .'|9977/([^/]++)/([^/]++)/([^/]++)/189977(*:5324)'
-                    .')'
-                    .'|c(?'
-                        .'|383c/([^/]++)/([^/]++)/([^/]++)/1c383c(*:5376)'
-                        .'|9ac0/([^/]++)/([^/]++)/([^/]++)/1c9ac0(*:5423)'
-                    .')'
-                    .'|9(?'
-                        .'|ca14/([^/]++)/([^/]++)/([^/]++)/19ca14(*:5475)'
-                        .'|f3cd/([^/]++)/([^/]++)/([^/]++)/19f3cd(*:5522)'
-                    .')'
-                    .'|7(?'
-                        .'|e621/([^/]++)/([^/]++)/([^/]++)/17e621(*:5574)'
-                        .'|0000/([^/]++)/([^/]++)/([^/]++)/170000(*:5621)'
-                        .'|d63b/([^/]++)/([^/]++)/([^/]++)/17d63b(*:5668)'
-                    .')'
-                    .'|4(?'
-                        .'|bfa6/([^/]++)/([^/]++)/([^/]++)/14bfa6(*:5720)'
-                        .'|0f69/([^/]++)/([^/]++)/([^/]++)/140f69(*:5767)'
-                        .'|9e96/([^/]++)/([^/]++)/([^/]++)/149e96(*:5814)'
-                        .'|2949/([^/]++)/([^/]++)/([^/]++)/142949(*:5861)'
-                    .')'
-                    .'|a(?'
-                        .'|fa34/([^/]++)/([^/]++)/([^/]++)/1afa34(*:5913)'
-                        .'|5b1e/([^/]++)/([^/]++)/([^/]++)/1a5b1e(*:5960)'
-                    .')'
-                    .'|3(?'
-                        .'|8(?'
-                            .'|597/([^/]++)/([^/]++)/([^/]++)/138597(*:6015)'
-                            .'|bb0/([^/]++)/([^/]++)/([^/]++)/138bb0(*:6061)'
-                        .')'
-                        .'|f(?'
-                            .'|e9d/([^/]++)/([^/]++)/([^/]++)/13fe9d(*:6112)'
-                            .'|989/([^/]++)/([^/]++)/([^/]++)/13f989(*:6158)'
-                            .'|3cf/([^/]++)/([^/]++)/([^/]++)/13f3cf(*:6204)'
-                        .')'
-                    .')'
-                    .'|d7f7a/([^/]++)/([^/]++)/([^/]++)/1d7f7a(*:6254)'
-                    .'|5(?'
-                        .'|34b7/([^/]++)/([^/]++)/([^/]++)/1534b7(*:6305)'
-                        .'|8f30/([^/]++)/([^/]++)/([^/]++)/158f30(*:6352)'
-                        .'|4384/([^/]++)/([^/]++)/([^/]++)/154384(*:6399)'
-                        .'|d4e8/([^/]++)/([^/]++)/([^/]++)/15d4e8(*:6446)'
-                    .')'
-                    .'|1(?'
-                        .'|5f89/([^/]++)/([^/]++)/([^/]++)/115f89(*:6498)'
-                        .'|b984/([^/]++)/([^/]++)/([^/]++)/11b984(*:6545)'
-                    .')'
-                    .'|068c6/([^/]++)/([^/]++)/([^/]++)/1068c6(*:6594)'
-                    .'|be3bc/([^/]++)/([^/]++)/([^/]++)/1be3bc(*:6642)'
-                .')'
-                .'|/8(?'
-                    .'|f(?'
-                        .'|1(?'
-                            .'|4e4/([^/]++)/([^/]++)/([^/]++)/8f14e4(*:6702)'
-                            .'|21c/([^/]++)/([^/]++)/([^/]++)/8f121c(*:6748)'
-                        .')'
-                        .'|8551/([^/]++)/([^/]++)/([^/]++)/8f8551(*:6796)'
-                        .'|5329/([^/]++)/([^/]++)/([^/]++)/8f5329(*:6843)'
-                        .'|e009/([^/]++)/([^/]++)/([^/]++)/8fe009(*:6890)'
-                    .')'
-                    .'|e(?'
-                        .'|296a/([^/]++)/([^/]++)/([^/]++)/8e296a(*:6942)'
-                        .'|98d8/([^/]++)/([^/]++)/([^/]++)/8e98d8(*:6989)'
-                        .'|fb10/([^/]++)/([^/]++)/([^/]++)/8efb10(*:7036)'
-                        .'|6b42/([^/]++)/([^/]++)/([^/]++)/8e6b42(*:7083)'
-                    .')'
-                    .'|61398/([^/]++)/([^/]++)/([^/]++)/861398(*:7132)'
-                    .'|1(?'
-                        .'|2b4b/([^/]++)/([^/]++)/([^/]++)/812b4b(*:7183)'
-                        .'|9f46/([^/]++)/([^/]++)/([^/]++)/819f46(*:7230)'
-                        .'|6b11/([^/]++)/([^/]++)/([^/]++)/816b11(*:7277)'
-                    .')'
-                    .'|d(?'
-                        .'|5e95/([^/]++)/([^/]++)/([^/]++)/8d5e95(*:7329)'
-                        .'|3bba/([^/]++)/([^/]++)/([^/]++)/8d3bba(*:7376)'
-                        .'|d48d/([^/]++)/([^/]++)/([^/]++)/8dd48d(*:7423)'
-                        .'|7d8e/([^/]++)/([^/]++)/([^/]++)/8d7d8e(*:7470)'
-                    .')'
-                    .'|2(?'
-                        .'|aa4b/([^/]++)/([^/]++)/([^/]++)/82aa4b(*:7522)'
-                        .'|1(?'
-                            .'|612/([^/]++)/([^/]++)/([^/]++)/821612(*:7572)'
-                            .'|fa7/([^/]++)/([^/]++)/([^/]++)/821fa7(*:7618)'
-                        .')'
-                        .'|cec9/([^/]++)/([^/]++)/([^/]++)/82cec9(*:7666)'
-                    .')'
-                    .'|5(?'
-                        .'|d8ce/([^/]++)/([^/]++)/([^/]++)/85d8ce(*:7718)'
-                        .'|4d(?'
-                            .'|6f/([^/]++)/([^/]++)/([^/]++)/854d6f(*:7768)'
-                            .'|9f/([^/]++)/([^/]++)/([^/]++)/854d9f(*:7813)'
-                        .')'
-                    .')'
-                    .'|4d9ee/([^/]++)/([^/]++)/([^/]++)/84d9ee(*:7863)'
-                    .'|c(?'
-                        .'|19f5/([^/]++)/([^/]++)/([^/]++)/8c19f5(*:7914)'
-                        .'|b22b/([^/]++)/([^/]++)/([^/]++)/8cb22b(*:7961)'
-                    .')'
-                    .'|39ab4/([^/]++)/([^/]++)/([^/]++)/839ab4(*:8010)'
-                    .'|9f0fd/([^/]++)/([^/]++)/([^/]++)/89f0fd(*:8058)'
-                    .'|bf121/([^/]++)/([^/]++)/([^/]++)/8bf121(*:8106)'
-                    .'|77a9b/([^/]++)/([^/]++)/([^/]++)/877a9b(*:8154)'
-                .')'
-                .'|/4(?'
-                    .'|5(?'
-                        .'|c48c/([^/]++)/([^/]++)/([^/]++)/45c48c(*:8211)'
-                        .'|fbc6/([^/]++)/([^/]++)/([^/]++)/45fbc6(*:8258)'
-                    .')'
-                    .'|e732c/([^/]++)/([^/]++)/([^/]++)/4e732c(*:8307)'
-                    .'|4f683/([^/]++)/([^/]++)/([^/]++)/44f683(*:8355)'
-                    .'|3(?'
-                        .'|ec51/([^/]++)/([^/]++)/([^/]++)/43ec51(*:8406)'
-                        .'|2aca/([^/]++)/([^/]++)/([^/]++)/432aca(*:8453)'
-                    .')'
-                    .'|c5(?'
-                        .'|6ff/([^/]++)/([^/]++)/([^/]++)/4c56ff(*:8505)'
-                        .'|bde/([^/]++)/([^/]++)/([^/]++)/4c5bde(*:8551)'
-                    .')'
-                    .'|2(?'
-                        .'|a0e1/([^/]++)/([^/]++)/([^/]++)/42a0e1(*:8603)'
-                        .'|e7aa/([^/]++)/([^/]++)/([^/]++)/42e7aa(*:8650)'
-                        .'|998c/([^/]++)/([^/]++)/([^/]++)/42998c(*:8697)'
-                        .'|8fca/([^/]++)/([^/]++)/([^/]++)/428fca(*:8744)'
-                    .')'
-                    .'|7(?'
-                        .'|d1e9/([^/]++)/([^/]++)/([^/]++)/47d1e9(*:8796)'
-                        .'|34ba/([^/]++)/([^/]++)/([^/]++)/4734ba(*:8843)'
-                    .')'
-                    .'|6ba9f/([^/]++)/([^/]++)/([^/]++)/46ba9f(*:8892)'
-                    .'|8aedb/([^/]++)/([^/]++)/([^/]++)/48aedb(*:8940)'
-                    .'|9(?'
-                        .'|182f/([^/]++)/([^/]++)/([^/]++)/49182f(*:8991)'
-                        .'|6e05/([^/]++)/([^/]++)/([^/]++)/496e05(*:9038)'
-                        .'|ae49/([^/]++)/([^/]++)/([^/]++)/49ae49(*:9085)'
-                    .')'
-                    .'|0008b/([^/]++)/([^/]++)/([^/]++)/40008b(*:9134)'
-                    .'|1(?'
-                        .'|f1f1/([^/]++)/([^/]++)/([^/]++)/41f1f1(*:9185)'
-                        .'|ae36/([^/]++)/([^/]++)/([^/]++)/41ae36(*:9232)'
-                    .')'
-                    .'|f(?'
-                        .'|6ffe/([^/]++)/([^/]++)/([^/]++)/4f6ffe(*:9284)'
-                        .'|4adc/([^/]++)/([^/]++)/([^/]++)/4f4adc(*:9331)'
-                    .')'
-                .')'
-                .'|/d(?'
-                    .'|3(?'
-                        .'|d944/([^/]++)/([^/]++)/([^/]++)/d3d944(*:9389)'
-                        .'|9577/([^/]++)/([^/]++)/([^/]++)/d39577(*:9436)'
-                        .'|4ab1/([^/]++)/([^/]++)/([^/]++)/d34ab1(*:9483)'
-                    .')'
-                    .'|6(?'
-                        .'|7d8a/([^/]++)/([^/]++)/([^/]++)/d67d8a(*:9535)'
-                        .'|4592/([^/]++)/([^/]++)/([^/]++)/d64592(*:9582)'
-                        .'|baf6/([^/]++)/([^/]++)/([^/]++)/d6baf6(*:9629)'
-                        .'|1e4b/([^/]++)/([^/]++)/([^/]++)/d61e4b(*:9676)'
-                    .')'
-                    .'|9(?'
-                        .'|d4f4/([^/]++)/([^/]++)/([^/]++)/d9d4f4(*:9728)'
-                        .'|6409/([^/]++)/([^/]++)/([^/]++)/d96409(*:9775)'
-                        .'|47bf/([^/]++)/([^/]++)/([^/]++)/d947bf(*:9822)'
-                        .'|fc5b/([^/]++)/([^/]++)/([^/]++)/d9fc5b(*:9869)'
-                    .')'
-                    .'|8(?'
-                        .'|2c8d/([^/]++)/([^/]++)/([^/]++)/d82c8d(*:9921)'
-                        .'|1f9c/([^/]++)/([^/]++)/([^/]++)/d81f9c(*:9968)'
-                    .')'
-                    .'|2(?'
-                        .'|ddea/([^/]++)/([^/]++)/([^/]++)/d2ddea(*:10020)'
-                        .'|96c1/([^/]++)/([^/]++)/([^/]++)/d296c1(*:10068)'
-                    .')'
-                    .'|0(?'
-                        .'|9bf4/([^/]++)/([^/]++)/([^/]++)/d09bf4(*:10121)'
-                        .'|7e70/([^/]++)/([^/]++)/([^/]++)/d07e70(*:10169)'
-                    .')'
-                    .'|1(?'
-                        .'|f(?'
-                            .'|e17/([^/]++)/([^/]++)/([^/]++)/d1fe17(*:10225)'
-                            .'|491/([^/]++)/([^/]++)/([^/]++)/d1f491(*:10272)'
-                            .'|255/([^/]++)/([^/]++)/([^/]++)/d1f255(*:10319)'
-                        .')'
-                        .'|c38a/([^/]++)/([^/]++)/([^/]++)/d1c38a(*:10368)'
-                        .'|8f65/([^/]++)/([^/]++)/([^/]++)/d18f65(*:10416)'
-                    .')'
-                    .'|a4fb5/([^/]++)/([^/]++)/([^/]++)/da4fb5(*:10466)'
-                    .'|b8e1a/([^/]++)/([^/]++)/([^/]++)/db8e1a(*:10515)'
-                    .'|709f3/([^/]++)/([^/]++)/([^/]++)/d709f3(*:10564)'
-                    .'|c(?'
-                        .'|912a/([^/]++)/([^/]++)/([^/]++)/dc912a(*:10616)'
-                        .'|6a64/([^/]++)/([^/]++)/([^/]++)/dc6a64(*:10664)'
-                    .')'
-                    .'|db306/([^/]++)/([^/]++)/([^/]++)/ddb306(*:10714)'
-                .')'
-                .'|/6(?'
-                    .'|5(?'
-                        .'|12bd/([^/]++)/([^/]++)/([^/]++)/6512bd(*:10772)'
-                        .'|b9ee/([^/]++)/([^/]++)/([^/]++)/65b9ee(*:10820)'
-                        .'|ded5/([^/]++)/([^/]++)/([^/]++)/65ded5(*:10868)'
-                    .')'
-                    .'|f(?'
-                        .'|4922/([^/]++)/([^/]++)/([^/]++)/6f4922(*:10921)'
-                        .'|3ef7/([^/]++)/([^/]++)/([^/]++)/6f3ef7(*:10969)'
-                        .'|aa80/([^/]++)/([^/]++)/([^/]++)/6faa80(*:11017)'
-                    .')'
-                    .'|e(?'
-                        .'|a(?'
-                            .'|9ab/([^/]++)/([^/]++)/([^/]++)/6ea9ab(*:11073)'
-                            .'|2ef/([^/]++)/([^/]++)/([^/]++)/6ea2ef(*:11120)'
-                        .')'
-                        .'|cbdd/([^/]++)/([^/]++)/([^/]++)/6ecbdd(*:11169)'
-                    .')'
-                    .'|3(?'
-                        .'|64d3/([^/]++)/([^/]++)/([^/]++)/6364d3(*:11222)'
-                        .'|dc7e/([^/]++)/([^/]++)/([^/]++)/63dc7e(*:11270)'
-                        .'|923f/([^/]++)/([^/]++)/([^/]++)/63923f(*:11318)'
-                    .')'
-                    .'|c(?'
-                        .'|8349/([^/]++)/([^/]++)/([^/]++)/6c8349(*:11371)'
-                        .'|4b76/([^/]++)/([^/]++)/([^/]++)/6c4b76(*:11419)'
-                        .'|dd60/([^/]++)/([^/]++)/([^/]++)/6cdd60(*:11467)'
-                        .'|9882/([^/]++)/([^/]++)/([^/]++)/6c9882(*:11515)'
-                        .'|524f/([^/]++)/([^/]++)/([^/]++)/6c524f(*:11563)'
-                    .')'
-                    .'|7(?'
-                        .'|c6a1/([^/]++)/([^/]++)/([^/]++)/67c6a1(*:11616)'
-                        .'|f7fb/([^/]++)/([^/]++)/([^/]++)/67f7fb(*:11664)'
-                    .')'
-                    .'|42e92/([^/]++)/([^/]++)/([^/]++)/642e92(*:11714)'
-                    .'|6(?'
-                        .'|f041/([^/]++)/([^/]++)/([^/]++)/66f041(*:11766)'
-                        .'|808e/([^/]++)/([^/]++)/([^/]++)/66808e(*:11814)'
-                        .'|3682/([^/]++)/([^/]++)/([^/]++)/663682(*:11862)'
-                    .')'
-                    .'|8(?'
-                        .'|d30a/([^/]++)/([^/]++)/([^/]++)/68d30a(*:11915)'
-                        .'|8396/([^/]++)/([^/]++)/([^/]++)/688396(*:11963)'
-                        .'|5545/([^/]++)/([^/]++)/([^/]++)/685545(*:12011)'
-                        .'|ce19/([^/]++)/([^/]++)/([^/]++)/68ce19(*:12059)'
-                    .')'
-                    .'|9(?'
-                        .'|74ce/([^/]++)/([^/]++)/([^/]++)/6974ce(*:12112)'
-                        .'|8d51/([^/]++)/([^/]++)/([^/]++)/698d51(*:12160)'
-                        .'|adc1/([^/]++)/([^/]++)/([^/]++)/69adc1(*:12208)'
-                        .'|cb3e/([^/]++)/([^/]++)/([^/]++)/69cb3e(*:12256)'
-                    .')'
-                    .'|da(?'
-                        .'|900/([^/]++)/([^/]++)/([^/]++)/6da900(*:12309)'
-                        .'|37d/([^/]++)/([^/]++)/([^/]++)/6da37d(*:12356)'
-                    .')'
-                    .'|21bf6/([^/]++)/([^/]++)/([^/]++)/621bf6(*:12406)'
-                    .'|a9aed/([^/]++)/([^/]++)/([^/]++)/6a9aed(*:12455)'
-                .')'
-                .'|/9(?'
-                    .'|b(?'
-                        .'|f31c/([^/]++)/([^/]++)/([^/]++)/9bf31c(*:12513)'
-                        .'|8619/([^/]++)/([^/]++)/([^/]++)/9b8619(*:12561)'
-                        .'|04d1/([^/]++)/([^/]++)/([^/]++)/9b04d1(*:12609)'
-                        .'|e40c/([^/]++)/([^/]++)/([^/]++)/9be40c(*:12657)'
-                        .'|70e8/([^/]++)/([^/]++)/([^/]++)/9b70e8(*:12705)'
-                    .')'
-                    .'|8(?'
-                        .'|f137/([^/]++)/([^/]++)/([^/]++)/98f137(*:12758)'
-                        .'|dce8/([^/]++)/([^/]++)/([^/]++)/98dce8(*:12806)'
-                        .'|72ed/([^/]++)/([^/]++)/([^/]++)/9872ed(*:12854)'
-                        .'|b297/([^/]++)/([^/]++)/([^/]++)/98b297(*:12902)'
-                    .')'
-                    .'|a(?'
-                        .'|1158/([^/]++)/([^/]++)/([^/]++)/9a1158(*:12955)'
-                        .'|9687/([^/]++)/([^/]++)/([^/]++)/9a9687(*:13003)'
-                    .')'
-                    .'|f(?'
-                        .'|6140/([^/]++)/([^/]++)/([^/]++)/9f6140(*:13056)'
-                        .'|c3d7/([^/]++)/([^/]++)/([^/]++)/9fc3d7(*:13104)'
-                        .'|d818/([^/]++)/([^/]++)/([^/]++)/9fd818(*:13152)'
-                    .')'
-                    .'|7(?'
-                        .'|78d5/([^/]++)/([^/]++)/([^/]++)/9778d5(*:13205)'
-                        .'|6652/([^/]++)/([^/]++)/([^/]++)/976652(*:13253)'
-                        .'|9d47/([^/]++)/([^/]++)/([^/]++)/979d47(*:13301)'
-                    .')'
-                    .'|3db85/([^/]++)/([^/]++)/([^/]++)/93db85(*:13351)'
-                    .'|2c(?'
-                        .'|c22/([^/]++)/([^/]++)/([^/]++)/92cc22(*:13403)'
-                        .'|8c9/([^/]++)/([^/]++)/([^/]++)/92c8c9(*:13450)'
-                    .')'
-                    .'|03ce9/([^/]++)/([^/]++)/([^/]++)/903ce9(*:13500)'
-                    .'|6da2f/([^/]++)/([^/]++)/([^/]++)/96da2f(*:13549)'
-                    .'|d(?'
-                        .'|cb88/([^/]++)/([^/]++)/([^/]++)/9dcb88(*:13601)'
-                        .'|fcd5/([^/]++)/([^/]++)/([^/]++)/9dfcd5(*:13649)'
-                        .'|e6d1/([^/]++)/([^/]++)/([^/]++)/9de6d1(*:13697)'
-                    .')'
-                    .'|c(?'
-                        .'|fdf1/([^/]++)/([^/]++)/([^/]++)/9cfdf1(*:13750)'
-                        .'|838d/([^/]++)/([^/]++)/([^/]++)/9c838d(*:13798)'
-                    .')'
-                    .'|18(?'
-                        .'|890/([^/]++)/([^/]++)/([^/]++)/918890(*:13851)'
-                        .'|317/([^/]++)/([^/]++)/([^/]++)/918317(*:13898)'
-                    .')'
-                    .'|4(?'
-                        .'|f6d7/([^/]++)/([^/]++)/([^/]++)/94f6d7(*:13951)'
-                        .'|1e1a/([^/]++)/([^/]++)/([^/]++)/941e1a(*:13999)'
-                        .'|31c8/([^/]++)/([^/]++)/([^/]++)/9431c8(*:14047)'
-                        .'|61cc/([^/]++)/([^/]++)/([^/]++)/9461cc(*:14095)'
-                    .')'
-                    .'|50a41/([^/]++)/([^/]++)/([^/]++)/950a41(*:14145)'
-                .')'
-                .'|/7(?'
-                    .'|0(?'
-                        .'|efdf/([^/]++)/([^/]++)/([^/]++)/70efdf(*:14203)'
-                        .'|5f21/([^/]++)/([^/]++)/([^/]++)/705f21(*:14251)'
-                        .'|c639/([^/]++)/([^/]++)/([^/]++)/70c639(*:14299)'
-                    .')'
-                    .'|2b32a/([^/]++)/([^/]++)/([^/]++)/72b32a(*:14349)'
-                    .'|f(?'
-                        .'|39f8/([^/]++)/([^/]++)/([^/]++)/7f39f8(*:14401)'
-                        .'|6ffa/([^/]++)/([^/]++)/([^/]++)/7f6ffa(*:14449)'
-                        .'|1(?'
-                            .'|de2/([^/]++)/([^/]++)/([^/]++)/7f1de2(*:14500)'
-                            .'|00b/([^/]++)/([^/]++)/([^/]++)/7f100b(*:14547)'
-                        .')'
-                        .'|e1f8/([^/]++)/([^/]++)/([^/]++)/7fe1f8(*:14596)'
-                    .')'
-                    .'|3(?'
-                        .'|5b90/([^/]++)/([^/]++)/([^/]++)/735b90(*:14649)'
-                        .'|278a/([^/]++)/([^/]++)/([^/]++)/73278a(*:14697)'
-                        .'|80ad/([^/]++)/([^/]++)/([^/]++)/7380ad(*:14745)'
-                    .')'
-                    .'|cbbc4/([^/]++)/([^/]++)/([^/]++)/7cbbc4(*:14795)'
-                    .'|6(?'
-                        .'|4796/([^/]++)/([^/]++)/([^/]++)/764796(*:14847)'
-                        .'|dc61/([^/]++)/([^/]++)/([^/]++)/76dc61(*:14895)'
-                    .')'
-                    .'|e(?'
-                        .'|f605/([^/]++)/([^/]++)/([^/]++)/7ef605(*:14948)'
-                        .'|7757/([^/]++)/([^/]++)/([^/]++)/7e7757(*:14996)'
-                        .'|a(?'
-                            .'|be3/([^/]++)/([^/]++)/([^/]++)/7eabe3(*:15047)'
-                            .'|cb5/([^/]++)/([^/]++)/([^/]++)/7eacb5(*:15094)'
-                        .')'
-                    .')'
-                    .'|5(?'
-                        .'|7b50/([^/]++)/([^/]++)/([^/]++)/757b50(*:15148)'
-                        .'|8874/([^/]++)/([^/]++)/([^/]++)/758874(*:15196)'
-                        .'|fc09/([^/]++)/([^/]++)/([^/]++)/75fc09(*:15244)'
-                    .')'
-                    .'|4(?'
-                        .'|db12/([^/]++)/([^/]++)/([^/]++)/74db12(*:15297)'
-                        .'|071a/([^/]++)/([^/]++)/([^/]++)/74071a(*:15345)'
-                    .')'
-                    .'|a614f/([^/]++)/([^/]++)/([^/]++)/7a614f(*:15395)'
-                    .'|d04bb/([^/]++)/([^/]++)/([^/]++)/7d04bb(*:15444)'
-                .')'
-                .'|/3(?'
-                    .'|c(?'
-                        .'|59dc/([^/]++)/([^/]++)/([^/]++)/3c59dc(*:15502)'
-                        .'|ec07/([^/]++)/([^/]++)/([^/]++)/3cec07(*:15550)'
-                        .'|7781/([^/]++)/([^/]++)/([^/]++)/3c7781(*:15598)'
-                        .'|f166/([^/]++)/([^/]++)/([^/]++)/3cf166(*:15646)'
-                    .')'
-                    .'|7(?'
-                        .'|693c/([^/]++)/([^/]++)/([^/]++)/37693c(*:15699)'
-                        .'|a749/([^/]++)/([^/]++)/([^/]++)/37a749(*:15747)'
-                        .'|bc2f/([^/]++)/([^/]++)/([^/]++)/37bc2f(*:15795)'
-                        .'|1bce/([^/]++)/([^/]++)/([^/]++)/371bce(*:15843)'
-                    .')'
-                    .'|3(?'
-                        .'|e75f/([^/]++)/([^/]++)/([^/]++)/33e75f(*:15896)'
-                        .'|5f53/([^/]++)/([^/]++)/([^/]++)/335f53(*:15944)'
-                    .')'
-                    .'|4(?'
-                        .'|1(?'
-                            .'|73c/([^/]++)/([^/]++)/([^/]++)/34173c(*:16000)'
-                            .'|6a7/([^/]++)/([^/]++)/([^/]++)/3416a7(*:16047)'
-                        .')'
-                        .'|ed06/([^/]++)/([^/]++)/([^/]++)/34ed06(*:16096)'
-                    .')'
-                    .'|2(?'
-                        .'|95c7/([^/]++)/([^/]++)/([^/]++)/3295c7(*:16149)'
-                        .'|bb90/([^/]++)/([^/]++)/([^/]++)/32bb90(*:16197)'
-                        .'|0722/([^/]++)/([^/]++)/([^/]++)/320722(*:16245)'
-                    .')'
-                    .'|5(?'
-                        .'|f4a8/([^/]++)/([^/]++)/([^/]++)/35f4a8(*:16298)'
-                        .'|7a6f/([^/]++)/([^/]++)/([^/]++)/357a6f(*:16346)'
-                        .'|2fe2/([^/]++)/([^/]++)/([^/]++)/352fe2(*:16394)'
-                        .'|0510/([^/]++)/([^/]++)/([^/]++)/350510(*:16442)'
-                    .')'
-                    .'|ef815/([^/]++)/([^/]++)/([^/]++)/3ef815(*:16492)'
-                    .'|8(?'
-                        .'|b3ef/([^/]++)/([^/]++)/([^/]++)/38b3ef(*:16544)'
-                        .'|af86/([^/]++)/([^/]++)/([^/]++)/38af86(*:16592)'
-                        .'|db3a/([^/]++)/([^/]++)/([^/]++)/38db3a(*:16640)'
-                    .')'
-                    .'|d(?'
-                        .'|ef18/([^/]++)/([^/]++)/([^/]++)/3def18(*:16693)'
-                        .'|d48a/([^/]++)/([^/]++)/([^/]++)/3dd48a(*:16741)'
-                    .')'
-                    .'|9(?'
-                        .'|88c7/([^/]++)/([^/]++)/([^/]++)/3988c7(*:16794)'
-                        .'|0597/([^/]++)/([^/]++)/([^/]++)/390597(*:16842)'
-                        .'|461a/([^/]++)/([^/]++)/([^/]++)/39461a(*:16890)'
-                    .')'
-                    .'|6(?'
-                        .'|3663/([^/]++)/([^/]++)/([^/]++)/363663(*:16943)'
-                        .'|44a6/([^/]++)/([^/]++)/([^/]++)/3644a6(*:16991)'
-                        .'|660e/([^/]++)/([^/]++)/([^/]++)/36660e(*:17039)'
-                    .')'
-                    .'|1(?'
-                        .'|fefc/([^/]++)/([^/]++)/([^/]++)/31fefc(*:17092)'
-                        .'|0dcb/([^/]++)/([^/]++)/([^/]++)/310dcb(*:17140)'
-                    .')'
-                    .'|b8a61/([^/]++)/([^/]++)/([^/]++)/3b8a61(*:17190)'
-                    .'|fe94a/([^/]++)/([^/]++)/([^/]++)/3fe94a(*:17239)'
-                    .'|ad7c2/([^/]++)/([^/]++)/([^/]++)/3ad7c2(*:17288)'
-                .')'
-                .'|/b(?'
-                    .'|6(?'
-                        .'|d767/([^/]++)/([^/]++)/([^/]++)/b6d767(*:17346)'
-                        .'|f047/([^/]++)/([^/]++)/([^/]++)/b6f047(*:17394)'
-                    .')'
-                    .'|53(?'
-                        .'|b3a/([^/]++)/([^/]++)/([^/]++)/b53b3a(*:17447)'
-                        .'|4ba/([^/]++)/([^/]++)/([^/]++)/b534ba(*:17494)'
-                    .')'
-                    .'|3(?'
-                        .'|e3e3/([^/]++)/([^/]++)/([^/]++)/b3e3e3(*:17547)'
-                        .'|967a/([^/]++)/([^/]++)/([^/]++)/b3967a(*:17595)'
-                    .')'
-                    .'|7(?'
-                        .'|3ce3/([^/]++)/([^/]++)/([^/]++)/b73ce3(*:17648)'
-                        .'|b16e/([^/]++)/([^/]++)/([^/]++)/b7b16e(*:17696)'
-                    .')'
-                    .'|d(?'
-                        .'|4c9a/([^/]++)/([^/]++)/([^/]++)/bd4c9a(*:17749)'
-                        .'|686f/([^/]++)/([^/]++)/([^/]++)/bd686f(*:17797)'
-                    .')'
-                    .'|f8229/([^/]++)/([^/]++)/([^/]++)/bf8229(*:17847)'
-                    .'|1(?'
-                        .'|d10e/([^/]++)/([^/]++)/([^/]++)/b1d10e(*:17899)'
-                        .'|a59b/([^/]++)/([^/]++)/([^/]++)/b1a59b(*:17947)'
-                    .')'
-                    .'|c(?'
-                        .'|be33/([^/]++)/([^/]++)/([^/]++)/bcbe33(*:18000)'
-                        .'|6dc4/([^/]++)/([^/]++)/([^/]++)/bc6dc4(*:18048)'
-                        .'|a82e/([^/]++)/([^/]++)/([^/]++)/bca82e(*:18096)'
-                    .')'
-                    .'|e(?'
-                        .'|83ab/([^/]++)/([^/]++)/([^/]++)/be83ab(*:18149)'
-                        .'|ed13/([^/]++)/([^/]++)/([^/]++)/beed13(*:18197)'
-                    .')'
-                    .'|2eb73/([^/]++)/([^/]++)/([^/]++)/b2eb73(*:18247)'
-                    .'|83aac/([^/]++)/([^/]++)/([^/]++)/b83aac(*:18296)'
-                    .'|ac916/([^/]++)/([^/]++)/([^/]++)/bac916(*:18345)'
-                    .'|b(?'
-                        .'|f94b/([^/]++)/([^/]++)/([^/]++)/bbf94b(*:18397)'
-                        .'|cbff/([^/]++)/([^/]++)/([^/]++)/bbcbff(*:18445)'
-                    .')'
-                    .'|9228e/([^/]++)/([^/]++)/([^/]++)/b9228e(*:18495)'
-                .')'
-                .'|/0(?'
-                    .'|2(?'
-                        .'|e74f/([^/]++)/([^/]++)/([^/]++)/02e74f(*:18553)'
-                        .'|522a/([^/]++)/([^/]++)/([^/]++)/02522a(*:18601)'
-                        .'|66e3/([^/]++)/([^/]++)/([^/]++)/0266e3(*:18649)'
-                    .')'
-                    .'|9(?'
-                        .'|3f65/([^/]++)/([^/]++)/([^/]++)/093f65(*:18702)'
-                        .'|1d58/([^/]++)/([^/]++)/([^/]++)/091d58(*:18750)'
-                    .')'
-                    .'|7(?'
-                        .'|2b03/([^/]++)/([^/]++)/([^/]++)/072b03(*:18803)'
-                        .'|e1cd/([^/]++)/([^/]++)/([^/]++)/07e1cd(*:18851)'
-                        .'|7(?'
-                            .'|7d5/([^/]++)/([^/]++)/([^/]++)/0777d5(*:18902)'
-                            .'|e29/([^/]++)/([^/]++)/([^/]++)/077e29(*:18949)'
-                        .')'
-                        .'|cdfd/([^/]++)/([^/]++)/([^/]++)/07cdfd(*:18998)'
-                    .')'
-                    .'|3(?'
-                        .'|afdb/([^/]++)/([^/]++)/([^/]++)/03afdb(*:19051)'
-                        .'|36dc/([^/]++)/([^/]++)/([^/]++)/0336dc(*:19099)'
-                        .'|c6b0/([^/]++)/([^/]++)/([^/]++)/03c6b0(*:19147)'
-                        .'|53ab/([^/]++)/([^/]++)/([^/]++)/0353ab(*:19195)'
-                    .')'
-                    .'|6(?'
-                        .'|9059/([^/]++)/([^/]++)/([^/]++)/069059(*:19248)'
-                        .'|4096/([^/]++)/([^/]++)/([^/]++)/064096(*:19296)'
-                        .'|0ad9/([^/]++)/([^/]++)/([^/]++)/060ad9(*:19344)'
-                        .'|138b/([^/]++)/([^/]++)/([^/]++)/06138b(*:19392)'
-                        .'|eb61/([^/]++)/([^/]++)/([^/]++)/06eb61(*:19440)'
-                    .')'
-                    .'|1(?'
-                        .'|3(?'
-                            .'|d40/([^/]++)/([^/]++)/([^/]++)/013d40(*:19496)'
-                            .'|86b/([^/]++)/([^/]++)/([^/]++)/01386b(*:19543)'
-                        .')'
-                        .'|161a/([^/]++)/([^/]++)/([^/]++)/01161a(*:19592)'
-                        .'|9d38/([^/]++)/([^/]++)/([^/]++)/019d38(*:19640)'
-                    .')'
-                    .'|f(?'
-                        .'|28b5/([^/]++)/([^/]++)/([^/]++)/0f28b5(*:19693)'
-                        .'|49c8/([^/]++)/([^/]++)/([^/]++)/0f49c8(*:19741)'
-                    .')'
-                    .'|a(?'
-                        .'|09c8/([^/]++)/([^/]++)/([^/]++)/0a09c8(*:19794)'
-                        .'|a188/([^/]++)/([^/]++)/([^/]++)/0aa188(*:19842)'
-                    .')'
-                    .'|0(?'
-                        .'|6f52/([^/]++)/([^/]++)/([^/]++)/006f52(*:19895)'
-                        .'|4114/([^/]++)/([^/]++)/([^/]++)/004114(*:19943)'
-                        .'|ec53/([^/]++)/([^/]++)/([^/]++)/00ec53(*:19991)'
-                    .')'
-                    .'|4(?'
-                        .'|5117/([^/]++)/([^/]++)/([^/]++)/045117(*:20044)'
-                        .'|0259/([^/]++)/([^/]++)/([^/]++)/040259(*:20092)'
-                    .')'
-                    .'|84b6f/([^/]++)/([^/]++)/([^/]++)/084b6f(*:20142)'
-                    .'|e(?'
-                        .'|6597/([^/]++)/([^/]++)/([^/]++)/0e6597(*:20194)'
-                        .'|0193/([^/]++)/([^/]++)/([^/]++)/0e0193(*:20242)'
-                    .')'
-                    .'|bb4ae/([^/]++)/([^/]++)/([^/]++)/0bb4ae(*:20292)'
-                    .'|5(?'
-                        .'|049e/([^/]++)/([^/]++)/([^/]++)/05049e(*:20344)'
-                        .'|84ce/([^/]++)/([^/]++)/([^/]++)/0584ce(*:20392)'
-                        .'|f971/([^/]++)/([^/]++)/([^/]++)/05f971(*:20440)'
-                    .')'
-                    .'|c74b7/([^/]++)/([^/]++)/([^/]++)/0c74b7(*:20490)'
-                    .'|d(?'
-                        .'|0fd7/([^/]++)/([^/]++)/([^/]++)/0d0fd7(*:20542)'
-                        .'|eb1c/([^/]++)/([^/]++)/([^/]++)/0deb1c(*:20590)'
-                    .')'
-                .')'
-                .'|/f(?'
-                    .'|7(?'
-                        .'|1(?'
-                            .'|771/([^/]++)/([^/]++)/([^/]++)/f71771(*:20652)'
-                            .'|849/([^/]++)/([^/]++)/([^/]++)/f71849(*:20699)'
-                        .')'
-                        .'|e6c8/([^/]++)/([^/]++)/([^/]++)/f7e6c8(*:20748)'
-                        .'|6640/([^/]++)/([^/]++)/([^/]++)/f76640(*:20796)'
-                        .'|3b76/([^/]++)/([^/]++)/([^/]++)/f73b76(*:20844)'
-                        .'|4909/([^/]++)/([^/]++)/([^/]++)/f74909(*:20892)'
-                        .'|70b6/([^/]++)/([^/]++)/([^/]++)/f770b6(*:20940)'
-                    .')'
-                    .'|4(?'
-                        .'|57c5/([^/]++)/([^/]++)/([^/]++)/f457c5(*:20993)'
-                        .'|b9ec/([^/]++)/([^/]++)/([^/]++)/f4b9ec(*:21041)'
-                        .'|f6dc/([^/]++)/([^/]++)/([^/]++)/f4f6dc(*:21089)'
-                    .')'
-                    .'|c(?'
-                        .'|490c/([^/]++)/([^/]++)/([^/]++)/fc490c(*:21142)'
-                        .'|2213/([^/]++)/([^/]++)/([^/]++)/fc2213(*:21190)'
-                        .'|cb60/([^/]++)/([^/]++)/([^/]++)/fccb60(*:21238)'
-                    .')'
-                    .'|b(?'
-                        .'|d793/([^/]++)/([^/]++)/([^/]++)/fbd793(*:21291)'
-                        .'|7b9f/([^/]++)/([^/]++)/([^/]++)/fb7b9f(*:21339)'
-                    .')'
-                    .'|0(?'
-                        .'|33ab/([^/]++)/([^/]++)/([^/]++)/f033ab(*:21392)'
-                        .'|935e/([^/]++)/([^/]++)/([^/]++)/f0935e(*:21440)'
-                    .')'
-                    .'|e(?'
-                        .'|9fc2/([^/]++)/([^/]++)/([^/]++)/fe9fc2(*:21493)'
-                        .'|131d/([^/]++)/([^/]++)/([^/]++)/fe131d(*:21541)'
-                        .'|73f6/([^/]++)/([^/]++)/([^/]++)/fe73f6(*:21589)'
-                    .')'
-                    .'|8(?'
-                        .'|9913/([^/]++)/([^/]++)/([^/]++)/f89913(*:21642)'
-                        .'|c1f2/([^/]++)/([^/]++)/([^/]++)/f8c1f2(*:21690)'
-                        .'|5454/([^/]++)/([^/]++)/([^/]++)/f85454(*:21738)'
-                    .')'
-                    .'|2(?'
-                        .'|2170/([^/]++)/([^/]++)/([^/]++)/f22170(*:21791)'
-                        .'|fc99/([^/]++)/([^/]++)/([^/]++)/f2fc99(*:21839)'
-                    .')'
-                    .'|a(?'
-                        .'|7cdf/([^/]++)/([^/]++)/([^/]++)/fa7cdf(*:21892)'
-                        .'|a9af/([^/]++)/([^/]++)/([^/]++)/faa9af(*:21940)'
-                    .')'
-                    .'|340f1/([^/]++)/([^/]++)/([^/]++)/f340f1(*:21990)'
-                    .'|9(?'
-                        .'|0f2a/([^/]++)/([^/]++)/([^/]++)/f90f2a(*:22042)'
-                        .'|b902/([^/]++)/([^/]++)/([^/]++)/f9b902(*:22090)'
-                    .')'
-                    .'|fd52f/([^/]++)/([^/]++)/([^/]++)/ffd52f(*:22140)'
-                    .'|61d69/([^/]++)/([^/]++)/([^/]++)/f61d69(*:22189)'
-                    .'|5f859/([^/]++)/([^/]++)/([^/]++)/f5f859(*:22238)'
-                    .'|1b6f2/([^/]++)/([^/]++)/([^/]++)/f1b6f2(*:22287)'
-                .')'
-                .'|/2(?'
-                    .'|8(?'
-                        .'|3802/([^/]++)/([^/]++)/([^/]++)/283802(*:22345)'
-                        .'|dd2c/([^/]++)/([^/]++)/([^/]++)/28dd2c(*:22393)'
-                        .'|9dff/([^/]++)/([^/]++)/([^/]++)/289dff(*:22441)'
-                        .'|f0b8/([^/]++)/([^/]++)/([^/]++)/28f0b8(*:22489)'
-                    .')'
-                    .'|a(?'
-                        .'|38a4/([^/]++)/([^/]++)/([^/]++)/2a38a4(*:22542)'
-                        .'|79ea/([^/]++)/([^/]++)/([^/]++)/2a79ea(*:22590)'
-                    .')'
-                    .'|6(?'
-                        .'|657d/([^/]++)/([^/]++)/([^/]++)/26657d(*:22643)'
-                        .'|e359/([^/]++)/([^/]++)/([^/]++)/26e359(*:22691)'
-                        .'|3373/([^/]++)/([^/]++)/([^/]++)/263373(*:22739)'
-                    .')'
-                    .'|7(?'
-                        .'|23d0/([^/]++)/([^/]++)/([^/]++)/2723d0(*:22792)'
-                        .'|4ad4/([^/]++)/([^/]++)/([^/]++)/274ad4(*:22840)'
-                    .')'
-                    .'|b(?'
-                        .'|4492/([^/]++)/([^/]++)/([^/]++)/2b4492(*:22893)'
-                        .'|24d4/([^/]++)/([^/]++)/([^/]++)/2b24d4(*:22941)'
-                    .')'
-                    .'|0(?'
-                        .'|2cb9/([^/]++)/([^/]++)/([^/]++)/202cb9(*:22994)'
-                        .'|f075/([^/]++)/([^/]++)/([^/]++)/20f075(*:23042)'
-                        .'|50e0/([^/]++)/([^/]++)/([^/]++)/2050e0(*:23090)'
-                    .')'
-                    .'|f(?'
-                        .'|2b26/([^/]++)/([^/]++)/([^/]++)/2f2b26(*:23143)'
-                        .'|5570/([^/]++)/([^/]++)/([^/]++)/2f5570(*:23191)'
-                    .')'
-                    .'|4(?'
-                        .'|b16f/([^/]++)/([^/]++)/([^/]++)/24b16f(*:23244)'
-                        .'|8e84/([^/]++)/([^/]++)/([^/]++)/248e84(*:23292)'
-                        .'|21fc/([^/]++)/([^/]++)/([^/]++)/2421fc(*:23340)'
-                    .')'
-                    .'|5(?'
-                        .'|b282/([^/]++)/([^/]++)/([^/]++)/25b282(*:23393)'
-                        .'|0cf8/([^/]++)/([^/]++)/([^/]++)/250cf8(*:23441)'
-                        .'|ddc0/([^/]++)/([^/]++)/([^/]++)/25ddc0(*:23489)'
-                    .')'
-                    .'|18a0a/([^/]++)/([^/]++)/([^/]++)/218a0a(*:23539)'
-                .')'
-                .'|/5(?'
-                    .'|4229a/([^/]++)/([^/]++)/([^/]++)/54229a(*:23594)'
-                    .'|f(?'
-                        .'|93f9/([^/]++)/([^/]++)/([^/]++)/5f93f9(*:23646)'
-                        .'|d0b3/([^/]++)/([^/]++)/([^/]++)/5fd0b3(*:23694)'
-                    .')'
-                    .'|ef(?'
-                        .'|0(?'
-                            .'|59/([^/]++)/([^/]++)/([^/]++)/5ef059(*:23750)'
-                            .'|b4/([^/]++)/([^/]++)/([^/]++)/5ef0b4(*:23796)'
-                        .')'
-                        .'|698/([^/]++)/([^/]++)/([^/]++)/5ef698(*:23844)'
-                    .')'
-                    .'|8(?'
-                        .'|78a7/([^/]++)/([^/]++)/([^/]++)/5878a7(*:23897)'
-                        .'|a2fc/([^/]++)/([^/]++)/([^/]++)/58a2fc(*:23945)'
-                        .'|238e/([^/]++)/([^/]++)/([^/]++)/58238e(*:23993)'
-                    .')'
-                    .'|7(?'
-                        .'|aeee/([^/]++)/([^/]++)/([^/]++)/57aeee(*:24046)'
-                        .'|7(?'
-                            .'|ef1/([^/]++)/([^/]++)/([^/]++)/577ef1(*:24097)'
-                            .'|bcc/([^/]++)/([^/]++)/([^/]++)/577bcc(*:24144)'
-                        .')'
-                        .'|37c6/([^/]++)/([^/]++)/([^/]++)/5737c6(*:24193)'
-                    .')'
-                    .'|3(?'
-                        .'|9fd5/([^/]++)/([^/]++)/([^/]++)/539fd5(*:24246)'
-                        .'|c3bc/([^/]++)/([^/]++)/([^/]++)/53c3bc(*:24294)'
-                    .')'
-                    .'|5(?'
-                        .'|5d67/([^/]++)/([^/]++)/([^/]++)/555d67(*:24347)'
-                        .'|0a14/([^/]++)/([^/]++)/([^/]++)/550a14(*:24395)'
-                        .'|9cb9/([^/]++)/([^/]++)/([^/]++)/559cb9(*:24443)'
-                        .'|a7cf/([^/]++)/([^/]++)/([^/]++)/55a7cf(*:24491)'
-                    .')'
-                    .'|02e4a/([^/]++)/([^/]++)/([^/]++)/502e4a(*:24541)'
-                    .'|b8add/([^/]++)/([^/]++)/([^/]++)/5b8add(*:24590)'
-                    .'|2720e/([^/]++)/([^/]++)/([^/]++)/52720e(*:24639)'
-                    .'|a4b25/([^/]++)/([^/]++)/([^/]++)/5a4b25(*:24688)'
-                    .'|1d92b/([^/]++)/([^/]++)/([^/]++)/51d92b(*:24737)'
-                    .'|98b3e/([^/]++)/([^/]++)/([^/]++)/598b3e(*:24786)'
-                .')'
-            .')/?$}sD',
-        24786 => '{^(?'
-                .'|/5(?'
-                    .'|b69b9/([^/]++)/([^/]++)/([^/]++)/5b69b9(*:24837)'
-                    .'|9(?'
-                        .'|b90e/([^/]++)/([^/]++)/([^/]++)/59b90e(*:24889)'
-                        .'|c330/([^/]++)/([^/]++)/([^/]++)/59c330(*:24937)'
-                    .')'
-                    .'|3(?'
-                        .'|fde9/([^/]++)/([^/]++)/([^/]++)/53fde9(*:24990)'
-                        .'|e3a7/([^/]++)/([^/]++)/([^/]++)/53e3a7(*:25038)'
-                    .')'
-                    .'|e(?'
-                        .'|a164/([^/]++)/([^/]++)/([^/]++)/5ea164(*:25091)'
-                        .'|3881/([^/]++)/([^/]++)/([^/]++)/5e3881(*:25139)'
-                        .'|9f92/([^/]++)/([^/]++)/([^/]++)/5e9f92(*:25187)'
-                        .'|c91a/([^/]++)/([^/]++)/([^/]++)/5ec91a(*:25235)'
-                    .')'
-                    .'|7(?'
-                        .'|3703/([^/]++)/([^/]++)/([^/]++)/573703(*:25288)'
-                        .'|51ec/([^/]++)/([^/]++)/([^/]++)/5751ec(*:25336)'
-                        .'|05e1/([^/]++)/([^/]++)/([^/]++)/5705e1(*:25384)'
-                    .')'
-                    .'|8(?'
-                        .'|ae74/([^/]++)/([^/]++)/([^/]++)/58ae74(*:25437)'
-                        .'|d4d1/([^/]++)/([^/]++)/([^/]++)/58d4d1(*:25485)'
-                        .'|07a6/([^/]++)/([^/]++)/([^/]++)/5807a6(*:25533)'
-                        .'|e4d4/([^/]++)/([^/]++)/([^/]++)/58e4d4(*:25581)'
-                    .')'
-                    .'|d(?'
-                        .'|44ee/([^/]++)/([^/]++)/([^/]++)/5d44ee(*:25634)'
-                        .'|d9db/([^/]++)/([^/]++)/([^/]++)/5dd9db(*:25682)'
-                    .')'
-                    .'|5(?'
-                        .'|b37c/([^/]++)/([^/]++)/([^/]++)/55b37c(*:25735)'
-                        .'|743c/([^/]++)/([^/]++)/([^/]++)/55743c(*:25783)'
-                        .'|6f39/([^/]++)/([^/]++)/([^/]++)/556f39(*:25831)'
-                    .')'
-                    .'|c(?'
-                        .'|0492/([^/]++)/([^/]++)/([^/]++)/5c0492(*:25884)'
-                        .'|572e/([^/]++)/([^/]++)/([^/]++)/5c572e(*:25932)'
-                        .'|9362/([^/]++)/([^/]++)/([^/]++)/5c9362(*:25980)'
-                    .')'
-                    .'|4(?'
-                        .'|8731/([^/]++)/([^/]++)/([^/]++)/548731(*:26033)'
-                        .'|a367/([^/]++)/([^/]++)/([^/]++)/54a367(*:26081)'
-                    .')'
-                    .'|0(?'
-                        .'|0e75/([^/]++)/([^/]++)/([^/]++)/500e75(*:26134)'
-                        .'|c3d7/([^/]++)/([^/]++)/([^/]++)/50c3d7(*:26182)'
-                    .')'
-                    .'|f(?'
-                        .'|2c22/([^/]++)/([^/]++)/([^/]++)/5f2c22(*:26235)'
-                        .'|0f5e/([^/]++)/([^/]++)/([^/]++)/5f0f5e(*:26283)'
-                    .')'
-                    .'|1ef18/([^/]++)/([^/]++)/([^/]++)/51ef18(*:26333)'
-                .')'
-                .'|/b(?'
-                    .'|5(?'
-                        .'|b41f/([^/]++)/([^/]++)/([^/]++)/b5b41f(*:26391)'
-                        .'|dc4e/([^/]++)/([^/]++)/([^/]++)/b5dc4e(*:26439)'
-                        .'|6a18/([^/]++)/([^/]++)/([^/]++)/b56a18(*:26487)'
-                        .'|5ec2/([^/]++)/([^/]++)/([^/]++)/b55ec2(*:26535)'
-                    .')'
-                    .'|337e8/([^/]++)/([^/]++)/([^/]++)/b337e8(*:26585)'
-                    .'|a(?'
-                        .'|2fd3/([^/]++)/([^/]++)/([^/]++)/ba2fd3(*:26637)'
-                        .'|3866/([^/]++)/([^/]++)/([^/]++)/ba3866(*:26685)'
-                    .')'
-                    .'|2(?'
-                        .'|eeb7/([^/]++)/([^/]++)/([^/]++)/b2eeb7(*:26738)'
-                        .'|f627/([^/]++)/([^/]++)/([^/]++)/b2f627(*:26786)'
-                    .')'
-                    .'|7(?'
-                        .'|3dfe/([^/]++)/([^/]++)/([^/]++)/b73dfe(*:26839)'
-                        .'|bb35/([^/]++)/([^/]++)/([^/]++)/b7bb35(*:26887)'
-                        .'|ee6f/([^/]++)/([^/]++)/([^/]++)/b7ee6f(*:26935)'
-                        .'|892f/([^/]++)/([^/]++)/([^/]++)/b7892f(*:26983)'
-                        .'|0683/([^/]++)/([^/]++)/([^/]++)/b70683(*:27031)'
-                    .')'
-                    .'|4(?'
-                        .'|288d/([^/]++)/([^/]++)/([^/]++)/b4288d(*:27084)'
-                        .'|a528/([^/]++)/([^/]++)/([^/]++)/b4a528(*:27132)'
-                    .')'
-                    .'|e(?'
-                        .'|3159/([^/]++)/([^/]++)/([^/]++)/be3159(*:27185)'
-                        .'|b22f/([^/]++)/([^/]++)/([^/]++)/beb22f(*:27233)'
-                        .'|a595/([^/]++)/([^/]++)/([^/]++)/bea595(*:27281)'
-                    .')'
-                    .'|1(?'
-                        .'|eec3/([^/]++)/([^/]++)/([^/]++)/b1eec3(*:27334)'
-                        .'|37fd/([^/]++)/([^/]++)/([^/]++)/b137fd(*:27382)'
-                    .')'
-                    .'|0(?'
-                        .'|56eb/([^/]++)/([^/]++)/([^/]++)/b056eb(*:27435)'
-                        .'|b183/([^/]++)/([^/]++)/([^/]++)/b0b183(*:27483)'
-                    .')'
-                    .'|f6276/([^/]++)/([^/]++)/([^/]++)/bf6276(*:27533)'
-                    .'|6(?'
-                        .'|edc1/([^/]++)/([^/]++)/([^/]++)/b6edc1(*:27585)'
-                        .'|a108/([^/]++)/([^/]++)/([^/]++)/b6a108(*:27633)'
-                    .')'
-                    .'|86e8d/([^/]++)/([^/]++)/([^/]++)/b86e8d(*:27683)'
-                .')'
-                .'|/2(?'
-                    .'|8(?'
-                        .'|5e19/([^/]++)/([^/]++)/([^/]++)/285e19(*:27741)'
-                        .'|2(?'
-                            .'|3f4/([^/]++)/([^/]++)/([^/]++)/2823f4(*:27792)'
-                            .'|67a/([^/]++)/([^/]++)/([^/]++)/28267a(*:27839)'
-                        .')'
-                        .'|8cc0/([^/]++)/([^/]++)/([^/]++)/288cc0(*:27888)'
-                        .'|7e03/([^/]++)/([^/]++)/([^/]++)/287e03(*:27936)'
-                    .')'
-                    .'|d(?'
-                        .'|6cc4/([^/]++)/([^/]++)/([^/]++)/2d6cc4(*:27989)'
-                        .'|ea61/([^/]++)/([^/]++)/([^/]++)/2dea61(*:28037)'
-                        .'|ace7/([^/]++)/([^/]++)/([^/]++)/2dace7(*:28085)'
-                    .')'
-                    .'|b(?'
-                        .'|8a61/([^/]++)/([^/]++)/([^/]++)/2b8a61(*:28138)'
-                        .'|b232/([^/]++)/([^/]++)/([^/]++)/2bb232(*:28186)'
-                        .'|a596/([^/]++)/([^/]++)/([^/]++)/2ba596(*:28234)'
-                        .'|cab9/([^/]++)/([^/]++)/([^/]++)/2bcab9(*:28282)'
-                    .')'
-                    .'|9(?'
-                        .'|8f95/([^/]++)/([^/]++)/([^/]++)/298f95(*:28335)'
-                        .'|1597/([^/]++)/([^/]++)/([^/]++)/291597(*:28383)'
-                    .')'
-                    .'|58be1/([^/]++)/([^/]++)/([^/]++)/258be1(*:28433)'
-                    .'|3(?'
-                        .'|3509/([^/]++)/([^/]++)/([^/]++)/233509(*:28485)'
-                        .'|ce18/([^/]++)/([^/]++)/([^/]++)/23ce18(*:28533)'
-                    .')'
-                    .'|6(?'
-                        .'|dd0d/([^/]++)/([^/]++)/([^/]++)/26dd0d(*:28586)'
-                        .'|408f/([^/]++)/([^/]++)/([^/]++)/26408f(*:28634)'
-                    .')'
-                    .'|f(?'
-                        .'|37d1/([^/]++)/([^/]++)/([^/]++)/2f37d1(*:28687)'
-                        .'|885d/([^/]++)/([^/]++)/([^/]++)/2f885d(*:28735)'
-                    .')'
-                    .'|2(?'
-                        .'|91d2/([^/]++)/([^/]++)/([^/]++)/2291d2(*:28788)'
-                        .'|ac3c/([^/]++)/([^/]++)/([^/]++)/22ac3c(*:28836)'
-                        .'|fb0c/([^/]++)/([^/]++)/([^/]++)/22fb0c(*:28884)'
-                    .')'
-                    .'|4(?'
-                        .'|6819/([^/]++)/([^/]++)/([^/]++)/246819(*:28937)'
-                        .'|896e/([^/]++)/([^/]++)/([^/]++)/24896e(*:28985)'
-                    .')'
-                    .'|a(?'
-                        .'|fe45/([^/]++)/([^/]++)/([^/]++)/2afe45(*:29038)'
-                        .'|084e/([^/]++)/([^/]++)/([^/]++)/2a084e(*:29086)'
-                        .'|9d12/([^/]++)/([^/]++)/([^/]++)/2a9d12(*:29134)'
-                        .'|b564/([^/]++)/([^/]++)/([^/]++)/2ab564(*:29182)'
-                    .')'
-                    .'|1(?'
-                        .'|7eed/([^/]++)/([^/]++)/([^/]++)/217eed(*:29235)'
-                        .'|0f76/([^/]++)/([^/]++)/([^/]++)/210f76(*:29283)'
-                    .')'
-                    .'|e65f2/([^/]++)/([^/]++)/([^/]++)/2e65f2(*:29333)'
-                    .'|ca65f/([^/]++)/([^/]++)/([^/]++)/2ca65f(*:29382)'
-                    .'|0aee3/([^/]++)/([^/]++)/([^/]++)/20aee3(*:29431)'
-                .')'
-                .'|/e(?'
-                    .'|8(?'
-                        .'|c065/([^/]++)/([^/]++)/([^/]++)/e8c065(*:29489)'
-                        .'|20a4/([^/]++)/([^/]++)/([^/]++)/e820a4(*:29537)'
-                    .')'
-                    .'|2(?'
-                        .'|230b/([^/]++)/([^/]++)/([^/]++)/e2230b(*:29590)'
-                        .'|a2dc/([^/]++)/([^/]++)/([^/]++)/e2a2dc(*:29638)'
-                        .'|05ee/([^/]++)/([^/]++)/([^/]++)/e205ee(*:29686)'
-                    .')'
-                    .'|b(?'
-                        .'|d962/([^/]++)/([^/]++)/([^/]++)/ebd962(*:29739)'
-                        .'|6fdc/([^/]++)/([^/]++)/([^/]++)/eb6fdc(*:29787)'
-                    .')'
-                    .'|d(?'
-                        .'|265b/([^/]++)/([^/]++)/([^/]++)/ed265b(*:29840)'
-                        .'|fbe1/([^/]++)/([^/]++)/([^/]++)/edfbe1(*:29888)'
-                        .'|e7e2/([^/]++)/([^/]++)/([^/]++)/ede7e2(*:29936)'
-                    .')'
-                    .'|6(?'
-                        .'|b4b2/([^/]++)/([^/]++)/([^/]++)/e6b4b2(*:29989)'
-                        .'|cb2a/([^/]++)/([^/]++)/([^/]++)/e6cb2a(*:30037)'
-                    .')'
-                    .'|5(?'
-                        .'|f6ad/([^/]++)/([^/]++)/([^/]++)/e5f6ad(*:30090)'
-                        .'|55eb/([^/]++)/([^/]++)/([^/]++)/e555eb(*:30138)'
-                        .'|841d/([^/]++)/([^/]++)/([^/]++)/e5841d(*:30186)'
-                        .'|7c6b/([^/]++)/([^/]++)/([^/]++)/e57c6b(*:30234)'
-                    .')'
-                    .'|aae33/([^/]++)/([^/]++)/([^/]++)/eaae33(*:30284)'
-                    .'|4(?'
-                        .'|bb4c/([^/]++)/([^/]++)/([^/]++)/e4bb4c(*:30336)'
-                        .'|9b8b/([^/]++)/([^/]++)/([^/]++)/e49b8b(*:30384)'
-                    .')'
-                    .'|7(?'
-                        .'|0611/([^/]++)/([^/]++)/([^/]++)/e70611(*:30437)'
-                        .'|f8a7/([^/]++)/([^/]++)/([^/]++)/e7f8a7(*:30485)'
-                        .'|44f9/([^/]++)/([^/]++)/([^/]++)/e744f9(*:30533)'
-                    .')'
-                    .'|9(?'
-                        .'|95f9/([^/]++)/([^/]++)/([^/]++)/e995f9(*:30586)'
-                        .'|4550/([^/]++)/([^/]++)/([^/]++)/e94550(*:30634)'
-                        .'|7ee2/([^/]++)/([^/]++)/([^/]++)/e97ee2(*:30682)'
-                    .')'
-                    .'|e(?'
-                        .'|fc9e/([^/]++)/([^/]++)/([^/]++)/eefc9e(*:30735)'
-                        .'|b69a/([^/]++)/([^/]++)/([^/]++)/eeb69a(*:30783)'
-                    .')'
-                    .'|0(?'
-                        .'|7413/([^/]++)/([^/]++)/([^/]++)/e07413(*:30836)'
-                        .'|cf1f/([^/]++)/([^/]++)/([^/]++)/e0cf1f(*:30884)'
-                        .'|ec45/([^/]++)/([^/]++)/([^/]++)/e0ec45(*:30932)'
-                    .')'
-                    .'|f4e3b/([^/]++)/([^/]++)/([^/]++)/ef4e3b(*:30982)'
-                    .'|c5aa0/([^/]++)/([^/]++)/([^/]++)/ec5aa0(*:31031)'
-                .')'
-                .'|/f(?'
-                    .'|f(?'
-                        .'|4d5f/([^/]++)/([^/]++)/([^/]++)/ff4d5f(*:31089)'
-                        .'|eabd/([^/]++)/([^/]++)/([^/]++)/ffeabd(*:31137)'
-                    .')'
-                    .'|3(?'
-                        .'|f27a/([^/]++)/([^/]++)/([^/]++)/f3f27a(*:31190)'
-                        .'|8762/([^/]++)/([^/]++)/([^/]++)/f38762(*:31238)'
-                    .')'
-                    .'|4(?'
-                        .'|be00/([^/]++)/([^/]++)/([^/]++)/f4be00(*:31291)'
-                        .'|5526/([^/]++)/([^/]++)/([^/]++)/f45526(*:31339)'
-                        .'|7d0a/([^/]++)/([^/]++)/([^/]++)/f47d0a(*:31387)'
-                    .')'
-                    .'|0(?'
-                        .'|e52b/([^/]++)/([^/]++)/([^/]++)/f0e52b(*:31440)'
-                        .'|adc8/([^/]++)/([^/]++)/([^/]++)/f0adc8(*:31488)'
-                    .')'
-                    .'|de926/([^/]++)/([^/]++)/([^/]++)/fde926(*:31538)'
-                    .'|5(?'
-                        .'|deae/([^/]++)/([^/]++)/([^/]++)/f5deae(*:31590)'
-                        .'|7a2f/([^/]++)/([^/]++)/([^/]++)/f57a2f(*:31638)'
-                    .')'
-                    .'|7(?'
-                        .'|6a89/([^/]++)/([^/]++)/([^/]++)/f76a89(*:31691)'
-                        .'|9921/([^/]++)/([^/]++)/([^/]++)/f79921(*:31739)'
-                        .'|e905/([^/]++)/([^/]++)/([^/]++)/f7e905(*:31787)'
-                    .')'
-                    .'|2(?'
-                        .'|9c21/([^/]++)/([^/]++)/([^/]++)/f29c21(*:31840)'
-                        .'|201f/([^/]++)/([^/]++)/([^/]++)/f2201f(*:31888)'
-                    .')'
-                    .'|a(?'
-                        .'|e0b2/([^/]++)/([^/]++)/([^/]++)/fae0b2(*:31941)'
-                        .'|14d4/([^/]++)/([^/]++)/([^/]++)/fa14d4(*:31989)'
-                        .'|3a3c/([^/]++)/([^/]++)/([^/]++)/fa3a3c(*:32037)'
-                        .'|83a1/([^/]++)/([^/]++)/([^/]++)/fa83a1(*:32085)'
-                    .')'
-                    .'|c(?'
-                        .'|cb3c/([^/]++)/([^/]++)/([^/]++)/fccb3c(*:32138)'
-                        .'|8001/([^/]++)/([^/]++)/([^/]++)/fc8001(*:32186)'
-                        .'|3cf4/([^/]++)/([^/]++)/([^/]++)/fc3cf4(*:32234)'
-                        .'|4930/([^/]++)/([^/]++)/([^/]++)/fc4930(*:32282)'
-                    .')'
-                    .'|64eac/([^/]++)/([^/]++)/([^/]++)/f64eac(*:32332)'
-                    .'|b8970/([^/]++)/([^/]++)/([^/]++)/fb8970(*:32381)'
-                    .'|1c159/([^/]++)/([^/]++)/([^/]++)/f1c159(*:32430)'
-                    .'|9(?'
-                        .'|028f/([^/]++)/([^/]++)/([^/]++)/f9028f(*:32482)'
-                        .'|a40a/([^/]++)/([^/]++)/([^/]++)/f9a40a(*:32530)'
-                    .')'
-                    .'|e(?'
-                        .'|8c15/([^/]++)/([^/]++)/([^/]++)/fe8c15(*:32583)'
-                        .'|c8d4/([^/]++)/([^/]++)/([^/]++)/fec8d4(*:32631)'
-                        .'|7ee8/([^/]++)/([^/]++)/([^/]++)/fe7ee8(*:32679)'
-                    .')'
-                .')'
-                .'|/3(?'
-                    .'|8(?'
-                        .'|9(?'
-                            .'|bc7/([^/]++)/([^/]++)/([^/]++)/389bc7(*:32741)'
-                            .'|13e/([^/]++)/([^/]++)/([^/]++)/38913e(*:32788)'
-                        .')'
-                        .'|71bd/([^/]++)/([^/]++)/([^/]++)/3871bd(*:32837)'
-                    .')'
-                    .'|d(?'
-                        .'|c487/([^/]++)/([^/]++)/([^/]++)/3dc487(*:32890)'
-                        .'|2d8c/([^/]++)/([^/]++)/([^/]++)/3d2d8c(*:32938)'
-                        .'|8e28/([^/]++)/([^/]++)/([^/]++)/3d8e28(*:32986)'
-                        .'|f1d4/([^/]++)/([^/]++)/([^/]++)/3df1d4(*:33034)'
-                    .')'
-                    .'|7f0e8/([^/]++)/([^/]++)/([^/]++)/37f0e8(*:33084)'
-                    .'|3(?'
-                        .'|e807/([^/]++)/([^/]++)/([^/]++)/33e807(*:33136)'
-                        .'|28bd/([^/]++)/([^/]++)/([^/]++)/3328bd(*:33184)'
-                    .')'
-                    .'|a(?'
-                        .'|0(?'
-                            .'|772/([^/]++)/([^/]++)/([^/]++)/3a0772(*:33240)'
-                            .'|66b/([^/]++)/([^/]++)/([^/]++)/3a066b(*:33287)'
-                        .')'
-                        .'|835d/([^/]++)/([^/]++)/([^/]++)/3a835d(*:33336)'
-                    .')'
-                    .'|0(?'
-                        .'|bb38/([^/]++)/([^/]++)/([^/]++)/30bb38(*:33389)'
-                        .'|3ed4/([^/]++)/([^/]++)/([^/]++)/303ed4(*:33437)'
-                        .'|ef30/([^/]++)/([^/]++)/([^/]++)/30ef30(*:33485)'
-                        .'|1ad0/([^/]++)/([^/]++)/([^/]++)/301ad0(*:33533)'
-                    .')'
-                    .'|4(?'
-                        .'|9389/([^/]++)/([^/]++)/([^/]++)/349389(*:33586)'
-                        .'|35c3/([^/]++)/([^/]++)/([^/]++)/3435c3(*:33634)'
-                    .')'
-                    .'|62(?'
-                        .'|1f1/([^/]++)/([^/]++)/([^/]++)/3621f1(*:33687)'
-                        .'|e80/([^/]++)/([^/]++)/([^/]++)/362e80(*:33734)'
-                    .')'
-                    .'|5(?'
-                        .'|cf86/([^/]++)/([^/]++)/([^/]++)/35cf86(*:33787)'
-                        .'|2407/([^/]++)/([^/]++)/([^/]++)/352407(*:33835)'
-                    .')'
-                    .'|2b30a/([^/]++)/([^/]++)/([^/]++)/32b30a(*:33885)'
-                    .'|1839b/([^/]++)/([^/]++)/([^/]++)/31839b(*:33934)'
-                    .'|b(?'
-                        .'|5dca/([^/]++)/([^/]++)/([^/]++)/3b5dca(*:33986)'
-                        .'|3dba/([^/]++)/([^/]++)/([^/]++)/3b3dba(*:34034)'
-                    .')'
-                    .'|e89eb/([^/]++)/([^/]++)/([^/]++)/3e89eb(*:34084)'
-                    .'|cef96/([^/]++)/([^/]++)/([^/]++)/3cef96(*:34133)'
-                .')'
-                .'|/0(?'
-                    .'|8(?'
-                        .'|7408/([^/]++)/([^/]++)/([^/]++)/087408(*:34191)'
-                        .'|b255/([^/]++)/([^/]++)/([^/]++)/08b255(*:34239)'
-                        .'|c543/([^/]++)/([^/]++)/([^/]++)/08c543(*:34287)'
-                        .'|d986/([^/]++)/([^/]++)/([^/]++)/08d986(*:34335)'
-                        .'|419b/([^/]++)/([^/]++)/([^/]++)/08419b(*:34383)'
-                    .')'
-                    .'|7(?'
-                        .'|563a/([^/]++)/([^/]++)/([^/]++)/07563a(*:34436)'
-                        .'|6a0c/([^/]++)/([^/]++)/([^/]++)/076a0c(*:34484)'
-                        .'|a96b/([^/]++)/([^/]++)/([^/]++)/07a96b(*:34532)'
-                        .'|c580/([^/]++)/([^/]++)/([^/]++)/07c580(*:34580)'
-                        .'|8719/([^/]++)/([^/]++)/([^/]++)/078719(*:34628)'
-                    .')'
-                    .'|f(?'
-                        .'|cbc6/([^/]++)/([^/]++)/([^/]++)/0fcbc6(*:34681)'
-                        .'|9661/([^/]++)/([^/]++)/([^/]++)/0f9661(*:34729)'
-                        .'|f(?'
-                            .'|39b/([^/]++)/([^/]++)/([^/]++)/0ff39b(*:34780)'
-                            .'|803/([^/]++)/([^/]++)/([^/]++)/0ff803(*:34827)'
-                        .')'
-                        .'|840b/([^/]++)/([^/]++)/([^/]++)/0f840b(*:34876)'
-                    .')'
-                    .'|1(?'
-                        .'|f78b/([^/]++)/([^/]++)/([^/]++)/01f78b(*:34929)'
-                        .'|3a00/([^/]++)/([^/]++)/([^/]++)/013a00(*:34977)'
-                        .'|8825/([^/]++)/([^/]++)/([^/]++)/018825(*:35025)'
-                    .')'
-                    .'|6(?'
-                        .'|9(?'
-                            .'|d3b/([^/]++)/([^/]++)/([^/]++)/069d3b(*:35081)'
-                            .'|97f/([^/]++)/([^/]++)/([^/]++)/06997f(*:35128)'
-                        .')'
-                        .'|1412/([^/]++)/([^/]++)/([^/]++)/061412(*:35177)'
-                    .')'
-                    .'|4(?'
-                        .'|ecb1/([^/]++)/([^/]++)/([^/]++)/04ecb1(*:35230)'
-                        .'|3c3d/([^/]++)/([^/]++)/([^/]++)/043c3d(*:35278)'
-                    .')'
-                    .'|0ac8e/([^/]++)/([^/]++)/([^/]++)/00ac8e(*:35328)'
-                    .'|5(?'
-                        .'|1e4e/([^/]++)/([^/]++)/([^/]++)/051e4e(*:35380)'
-                        .'|37fb/([^/]++)/([^/]++)/([^/]++)/0537fb(*:35428)'
-                    .')'
-                    .'|d(?'
-                        .'|7de1/([^/]++)/([^/]++)/([^/]++)/0d7de1(*:35481)'
-                        .'|3180/([^/]++)/([^/]++)/([^/]++)/0d3180(*:35529)'
-                        .'|0871/([^/]++)/([^/]++)/([^/]++)/0d0871(*:35577)'
-                    .')'
-                    .'|cb929/([^/]++)/([^/]++)/([^/]++)/0cb929(*:35627)'
-                    .'|2(?'
-                        .'|a32a/([^/]++)/([^/]++)/([^/]++)/02a32a(*:35679)'
-                        .'|4d7f/([^/]++)/([^/]++)/([^/]++)/024d7f(*:35727)'
-                    .')'
-                    .'|efe32/([^/]++)/([^/]++)/([^/]++)/0efe32(*:35777)'
-                    .'|a113e/([^/]++)/([^/]++)/([^/]++)/0a113e(*:35826)'
-                    .'|b8aff/([^/]++)/([^/]++)/([^/]++)/0b8aff(*:35875)'
-                .')'
-                .'|/a(?'
-                    .'|7(?'
-                        .'|6088/([^/]++)/([^/]++)/([^/]++)/a76088(*:35933)'
-                        .'|aeed/([^/]++)/([^/]++)/([^/]++)/a7aeed(*:35981)'
-                        .'|33fa/([^/]++)/([^/]++)/([^/]++)/a733fa(*:36029)'
-                    .')'
-                    .'|9a(?'
-                        .'|665/([^/]++)/([^/]++)/([^/]++)/a9a665(*:36082)'
-                        .'|1d5/([^/]++)/([^/]++)/([^/]++)/a9a1d5(*:36129)'
-                    .')'
-                    .'|8(?'
-                        .'|6c45/([^/]++)/([^/]++)/([^/]++)/a86c45(*:36182)'
-                        .'|849b/([^/]++)/([^/]++)/([^/]++)/a8849b(*:36230)'
-                        .'|e(?'
-                            .'|864/([^/]++)/([^/]++)/([^/]++)/a8e864(*:36281)'
-                            .'|cba/([^/]++)/([^/]++)/([^/]++)/a8ecba(*:36328)'
-                        .')'
-                    .')'
-                    .'|c(?'
-                        .'|c3e0/([^/]++)/([^/]++)/([^/]++)/acc3e0(*:36382)'
-                        .'|f4b8/([^/]++)/([^/]++)/([^/]++)/acf4b8(*:36430)'
-                    .')'
-                    .'|b(?'
-                        .'|d815/([^/]++)/([^/]++)/([^/]++)/abd815(*:36483)'
-                        .'|233b/([^/]++)/([^/]++)/([^/]++)/ab233b(*:36531)'
-                        .'|a3b6/([^/]++)/([^/]++)/([^/]++)/aba3b6(*:36579)'
-                        .'|88b1/([^/]++)/([^/]++)/([^/]++)/ab88b1(*:36627)'
-                    .')'
-                    .'|5(?'
-                        .'|3240/([^/]++)/([^/]++)/([^/]++)/a53240(*:36680)'
-                        .'|cdd4/([^/]++)/([^/]++)/([^/]++)/a5cdd4(*:36728)'
-                    .')'
-                    .'|f(?'
-                        .'|d(?'
-                            .'|483/([^/]++)/([^/]++)/([^/]++)/afd483(*:36784)'
-                            .'|a33/([^/]++)/([^/]++)/([^/]++)/afda33(*:36831)'
-                        .')'
-                        .'|f162/([^/]++)/([^/]++)/([^/]++)/aff162(*:36880)'
-                    .')'
-                    .'|e(?'
-                        .'|0eb3/([^/]++)/([^/]++)/([^/]++)/ae0eb3(*:36933)'
-                        .'|b313/([^/]++)/([^/]++)/([^/]++)/aeb313(*:36981)'
-                    .')'
-                    .'|1(?'
-                        .'|d33d/([^/]++)/([^/]++)/([^/]++)/a1d33d(*:37034)'
-                        .'|140a/([^/]++)/([^/]++)/([^/]++)/a1140a(*:37082)'
-                    .')'
-                    .'|ddfa9/([^/]++)/([^/]++)/([^/]++)/addfa9(*:37132)'
-                    .'|6(?'
-                        .'|7f09/([^/]++)/([^/]++)/([^/]++)/a67f09(*:37184)'
-                        .'|4c94/([^/]++)/([^/]++)/([^/]++)/a64c94(*:37232)'
-                    .')'
-                    .'|a169b/([^/]++)/([^/]++)/([^/]++)/aa169b(*:37282)'
-                    .'|4300b/([^/]++)/([^/]++)/([^/]++)/a4300b(*:37331)'
-                    .'|3d68b/([^/]++)/([^/]++)/([^/]++)/a3d68b(*:37380)'
-                .')'
-                .'|/1(?'
-                    .'|0(?'
-                        .'|a(?'
-                            .'|7cd/([^/]++)/([^/]++)/([^/]++)/10a7cd(*:37441)'
-                            .'|5ab/([^/]++)/([^/]++)/([^/]++)/10a5ab(*:37488)'
-                        .')'
-                        .'|9a0c/([^/]++)/([^/]++)/([^/]++)/109a0c(*:37537)'
-                    .')'
-                    .'|3f320/([^/]++)/([^/]++)/([^/]++)/13f320(*:37587)'
-                    .'|6(?'
-                        .'|c222/([^/]++)/([^/]++)/([^/]++)/16c222(*:37639)'
-                        .'|8908/([^/]++)/([^/]++)/([^/]++)/168908(*:37687)'
-                    .')'
-                    .'|5(?'
-                        .'|de21/([^/]++)/([^/]++)/([^/]++)/15de21(*:37740)'
-                        .'|95af/([^/]++)/([^/]++)/([^/]++)/1595af(*:37788)'
-                    .')'
-                    .'|1(?'
-                        .'|b921/([^/]++)/([^/]++)/([^/]++)/11b921(*:37841)'
-                        .'|4193/([^/]++)/([^/]++)/([^/]++)/114193(*:37889)'
-                    .')'
-                    .'|bb91f/([^/]++)/([^/]++)/([^/]++)/1bb91f(*:37939)'
-                    .'|7(?'
-                        .'|28ef/([^/]++)/([^/]++)/([^/]++)/1728ef(*:37991)'
-                        .'|c276/([^/]++)/([^/]++)/([^/]++)/17c276(*:38039)'
-                        .'|0c94/([^/]++)/([^/]++)/([^/]++)/170c94(*:38087)'
-                    .')'
-                    .'|85(?'
-                        .'|c29/([^/]++)/([^/]++)/([^/]++)/185c29(*:38140)'
-                        .'|e65/([^/]++)/([^/]++)/([^/]++)/185e65(*:38187)'
-                    .')'
-                    .'|9(?'
-                        .'|2fc0/([^/]++)/([^/]++)/([^/]++)/192fc0(*:38240)'
-                        .'|b(?'
-                            .'|c91/([^/]++)/([^/]++)/([^/]++)/19bc91(*:38291)'
-                            .'|650/([^/]++)/([^/]++)/([^/]++)/19b650(*:38338)'
-                        .')'
-                        .'|05ae/([^/]++)/([^/]++)/([^/]++)/1905ae(*:38387)'
-                    .')'
-                    .'|e(?'
-                        .'|cfb4/([^/]++)/([^/]++)/([^/]++)/1ecfb4(*:38440)'
-                        .'|fa39/([^/]++)/([^/]++)/([^/]++)/1efa39(*:38488)'
-                        .'|056d/([^/]++)/([^/]++)/([^/]++)/1e056d(*:38536)'
-                    .')'
-                    .'|aa48f/([^/]++)/([^/]++)/([^/]++)/1aa48f(*:38586)'
-                    .'|f(?'
-                        .'|c214/([^/]++)/([^/]++)/([^/]++)/1fc214(*:38638)'
-                        .'|5089/([^/]++)/([^/]++)/([^/]++)/1f5089(*:38686)'
-                        .'|4477/([^/]++)/([^/]++)/([^/]++)/1f4477(*:38734)'
-                    .')'
-                    .'|c(?'
-                        .'|c363/([^/]++)/([^/]++)/([^/]++)/1cc363(*:38787)'
-                        .'|1d4d/([^/]++)/([^/]++)/([^/]++)/1c1d4d(*:38835)'
-                        .'|e927/([^/]++)/([^/]++)/([^/]++)/1ce927(*:38883)'
-                    .')'
-                .')'
-                .'|/6(?'
-                    .'|3(?'
-                        .'|538f/([^/]++)/([^/]++)/([^/]++)/63538f(*:38942)'
-                        .'|2cee/([^/]++)/([^/]++)/([^/]++)/632cee(*:38990)'
-                        .'|95eb/([^/]++)/([^/]++)/([^/]++)/6395eb(*:39038)'
-                    .')'
-                    .'|9(?'
-                        .'|421f/([^/]++)/([^/]++)/([^/]++)/69421f(*:39091)'
-                        .'|2f93/([^/]++)/([^/]++)/([^/]++)/692f93(*:39139)'
-                    .')'
-                    .'|5658f/([^/]++)/([^/]++)/([^/]++)/65658f(*:39189)'
-                    .'|4(?'
-                        .'|7bba/([^/]++)/([^/]++)/([^/]++)/647bba(*:39241)'
-                        .'|223c/([^/]++)/([^/]++)/([^/]++)/64223c(*:39289)'
-                    .')'
-                    .'|e(?'
-                        .'|2713/([^/]++)/([^/]++)/([^/]++)/6e2713(*:39342)'
-                        .'|0721/([^/]++)/([^/]++)/([^/]++)/6e0721(*:39390)'
-                        .'|7b33/([^/]++)/([^/]++)/([^/]++)/6e7b33(*:39438)'
-                    .')'
-                    .'|0(?'
-                        .'|5ff7/([^/]++)/([^/]++)/([^/]++)/605ff7(*:39491)'
-                        .'|8159/([^/]++)/([^/]++)/([^/]++)/608159(*:39539)'
-                    .')'
-                    .'|a(?'
-                        .'|ca97/([^/]++)/([^/]++)/([^/]++)/6aca97(*:39592)'
-                        .'|10bb/([^/]++)/([^/]++)/([^/]++)/6a10bb(*:39640)'
-                        .'|ab12/([^/]++)/([^/]++)/([^/]++)/6aab12(*:39688)'
-                    .')'
-                    .'|7(?'
-                        .'|66aa/([^/]++)/([^/]++)/([^/]++)/6766aa(*:39741)'
-                        .'|e103/([^/]++)/([^/]++)/([^/]++)/67e103(*:39789)'
-                        .'|d(?'
-                            .'|96d/([^/]++)/([^/]++)/([^/]++)/67d96d(*:39840)'
-                            .'|16d/([^/]++)/([^/]++)/([^/]++)/67d16d(*:39887)'
-                        .')'
-                        .'|0e8a/([^/]++)/([^/]++)/([^/]++)/670e8a(*:39936)'
-                        .'|7e09/([^/]++)/([^/]++)/([^/]++)/677e09(*:39984)'
-                    .')'
-                    .'|8(?'
-                        .'|264b/([^/]++)/([^/]++)/([^/]++)/68264b(*:40037)'
-                        .'|053a/([^/]++)/([^/]++)/([^/]++)/68053a(*:40085)'
-                    .')'
-                    .'|c(?'
-                        .'|2979/([^/]++)/([^/]++)/([^/]++)/6c2979(*:40138)'
-                        .'|d67d/([^/]++)/([^/]++)/([^/]++)/6cd67d(*:40186)'
-                        .'|3cf7/([^/]++)/([^/]++)/([^/]++)/6c3cf7(*:40234)'
-                        .'|fe0e/([^/]++)/([^/]++)/([^/]++)/6cfe0e(*:40282)'
-                    .')'
-                    .'|bc24f/([^/]++)/([^/]++)/([^/]++)/6bc24f(*:40332)'
-                    .'|f2268/([^/]++)/([^/]++)/([^/]++)/6f2268(*:40381)'
-                    .'|1b4a6/([^/]++)/([^/]++)/([^/]++)/61b4a6(*:40430)'
-                    .'|21461/([^/]++)/([^/]++)/([^/]++)/621461(*:40479)'
-                    .'|d0f84/([^/]++)/([^/]++)/([^/]++)/6d0f84(*:40528)'
-                    .'|60229/([^/]++)/([^/]++)/([^/]++)/660229(*:40577)'
-                .')'
-                .'|/c(?'
-                    .'|f(?'
-                        .'|6735/([^/]++)/([^/]++)/([^/]++)/cf6735(*:40635)'
-                        .'|bce4/([^/]++)/([^/]++)/([^/]++)/cfbce4(*:40683)'
-                    .')'
-                    .'|3(?'
-                        .'|99(?'
-                            .'|86/([^/]++)/([^/]++)/([^/]++)/c39986(*:40739)'
-                            .'|2e/([^/]++)/([^/]++)/([^/]++)/c3992e(*:40785)'
-                        .')'
-                        .'|61bc/([^/]++)/([^/]++)/([^/]++)/c361bc(*:40834)'
-                        .'|2d9b/([^/]++)/([^/]++)/([^/]++)/c32d9b(*:40882)'
-                    .')'
-                    .'|75b6f/([^/]++)/([^/]++)/([^/]++)/c75b6f(*:40932)'
-                    .'|c(?'
-                        .'|b(?'
-                            .'|1d4/([^/]++)/([^/]++)/([^/]++)/ccb1d4(*:40987)'
-                            .'|098/([^/]++)/([^/]++)/([^/]++)/ccb098(*:41034)'
-                        .')'
-                        .'|c0aa/([^/]++)/([^/]++)/([^/]++)/ccc0aa(*:41083)'
-                        .'|1aa4/([^/]++)/([^/]++)/([^/]++)/cc1aa4(*:41131)'
-                    .')'
-                    .'|b(?'
-                        .'|cb58/([^/]++)/([^/]++)/([^/]++)/cbcb58(*:41184)'
-                        .'|b6a3/([^/]++)/([^/]++)/([^/]++)/cbb6a3(*:41232)'
-                    .')'
-                    .'|9892a/([^/]++)/([^/]++)/([^/]++)/c9892a(*:41282)'
-                    .'|6e19e/([^/]++)/([^/]++)/([^/]++)/c6e19e(*:41331)'
-                    .'|dc0d6/([^/]++)/([^/]++)/([^/]++)/cdc0d6(*:41380)'
-                    .'|5ab0b/([^/]++)/([^/]++)/([^/]++)/c5ab0b(*:41429)'
-                    .'|a(?'
-                        .'|9c26/([^/]++)/([^/]++)/([^/]++)/ca9c26(*:41481)'
-                        .'|8155/([^/]++)/([^/]++)/([^/]++)/ca8155(*:41529)'
-                        .'|7591/([^/]++)/([^/]++)/([^/]++)/ca7591(*:41577)'
-                    .')'
-                    .'|0(?'
-                        .'|6d06/([^/]++)/([^/]++)/([^/]++)/c06d06(*:41630)'
-                        .'|f168/([^/]++)/([^/]++)/([^/]++)/c0f168(*:41678)'
-                    .')'
-                    .'|8(?'
-                        .'|ed21/([^/]++)/([^/]++)/([^/]++)/c8ed21(*:41731)'
-                        .'|fbbc/([^/]++)/([^/]++)/([^/]++)/c8fbbc(*:41779)'
-                        .'|c41c/([^/]++)/([^/]++)/([^/]++)/c8c41c(*:41827)'
-                    .')'
-                    .'|15da1/([^/]++)/([^/]++)/([^/]++)/c15da1(*:41877)'
-                    .'|2(?'
-                        .'|626d/([^/]++)/([^/]++)/([^/]++)/c2626d(*:41929)'
-                        .'|aee8/([^/]++)/([^/]++)/([^/]++)/c2aee8(*:41977)'
-                        .'|2abf/([^/]++)/([^/]++)/([^/]++)/c22abf(*:42025)'
-                    .')'
-                    .'|e78d1/([^/]++)/([^/]++)/([^/]++)/ce78d1(*:42075)'
-                    .'|4(?'
-                        .'|015b/([^/]++)/([^/]++)/([^/]++)/c4015b(*:42127)'
-                        .'|b31c/([^/]++)/([^/]++)/([^/]++)/c4b31c(*:42175)'
-                    .')'
-                .')'
-                .'|/8(?'
-                    .'|5(?'
-                        .'|422a/([^/]++)/([^/]++)/([^/]++)/85422a(*:42234)'
-                        .'|1ddf/([^/]++)/([^/]++)/([^/]++)/851ddf(*:42282)'
-                        .'|fc37/([^/]++)/([^/]++)/([^/]++)/85fc37(*:42330)'
-                    .')'
-                    .'|1(?'
-                        .'|4481/([^/]++)/([^/]++)/([^/]++)/814481(*:42383)'
-                        .'|e74d/([^/]++)/([^/]++)/([^/]++)/81e74d(*:42431)'
-                    .')'
-                    .'|d(?'
-                        .'|3(?'
-                            .'|420/([^/]++)/([^/]++)/([^/]++)/8d3420(*:42487)'
-                            .'|17b/([^/]++)/([^/]++)/([^/]++)/8d317b(*:42534)'
-                        .')'
-                        .'|f707/([^/]++)/([^/]++)/([^/]++)/8df707(*:42583)'
-                        .'|6dc3/([^/]++)/([^/]++)/([^/]++)/8d6dc3(*:42631)'
-                    .')'
-                    .'|e(?'
-                        .'|efcf/([^/]++)/([^/]++)/([^/]++)/8eefcf(*:42684)'
-                        .'|bda5/([^/]++)/([^/]++)/([^/]++)/8ebda5(*:42732)'
-                        .'|82ab/([^/]++)/([^/]++)/([^/]++)/8e82ab(*:42780)'
-                    .')'
-                    .'|b(?'
-                        .'|16eb/([^/]++)/([^/]++)/([^/]++)/8b16eb(*:42833)'
-                        .'|6dd7/([^/]++)/([^/]++)/([^/]++)/8b6dd7(*:42881)'
-                        .'|5040/([^/]++)/([^/]++)/([^/]++)/8b5040(*:42929)'
-                    .')'
-                    .'|c(?'
-                        .'|7bbb/([^/]++)/([^/]++)/([^/]++)/8c7bbb(*:42982)'
-                        .'|6744/([^/]++)/([^/]++)/([^/]++)/8c6744(*:43030)'
-                        .'|235f/([^/]++)/([^/]++)/([^/]++)/8c235f(*:43078)'
-                    .')'
-                    .'|8(?'
-                        .'|4d24/([^/]++)/([^/]++)/([^/]++)/884d24(*:43131)'
-                        .'|ae63/([^/]++)/([^/]++)/([^/]++)/88ae63(*:43179)'
-                    .')'
-                    .'|7(?'
-                        .'|5715/([^/]++)/([^/]++)/([^/]++)/875715(*:43232)'
-                        .'|2488/([^/]++)/([^/]++)/([^/]++)/872488(*:43280)'
-                    .')'
-                    .'|4(?'
-                        .'|1172/([^/]++)/([^/]++)/([^/]++)/841172(*:43333)'
-                        .'|6c26/([^/]++)/([^/]++)/([^/]++)/846c26(*:43381)'
-                        .'|f7e6/([^/]++)/([^/]++)/([^/]++)/84f7e6(*:43429)'
-                        .'|7cc5/([^/]++)/([^/]++)/([^/]++)/847cc5(*:43477)'
-                    .')'
-                    .'|f(?'
-                        .'|ecb2/([^/]++)/([^/]++)/([^/]++)/8fecb2(*:43530)'
-                        .'|7d80/([^/]++)/([^/]++)/([^/]++)/8f7d80(*:43578)'
-                        .'|468c/([^/]++)/([^/]++)/([^/]++)/8f468c(*:43626)'
-                    .')'
-                    .'|a0e11/([^/]++)/([^/]++)/([^/]++)/8a0e11(*:43676)'
-                    .'|2(?'
-                        .'|f2b3/([^/]++)/([^/]++)/([^/]++)/82f2b3(*:43728)'
-                        .'|489c/([^/]++)/([^/]++)/([^/]++)/82489c(*:43776)'
-                    .')'
-                    .'|6(?'
-                        .'|b122/([^/]++)/([^/]++)/([^/]++)/86b122(*:43829)'
-                        .'|0320/([^/]++)/([^/]++)/([^/]++)/860320(*:43877)'
-                    .')'
-                    .'|9(?'
-                        .'|2c91/([^/]++)/([^/]++)/([^/]++)/892c91(*:43930)'
-                        .'|fcd0/([^/]++)/([^/]++)/([^/]++)/89fcd0(*:43978)'
-                    .')'
-                    .'|065d0/([^/]++)/([^/]++)/([^/]++)/8065d0(*:44028)'
-                .')'
-                .'|/d(?'
-                    .'|6(?'
-                        .'|4a34/([^/]++)/([^/]++)/([^/]++)/d64a34(*:44086)'
-                        .'|c651/([^/]++)/([^/]++)/([^/]++)/d6c651(*:44134)'
-                    .')'
-                    .'|f(?'
-                        .'|877f/([^/]++)/([^/]++)/([^/]++)/df877f(*:44187)'
-                        .'|263d/([^/]++)/([^/]++)/([^/]++)/df263d(*:44235)'
-                        .'|7f28/([^/]++)/([^/]++)/([^/]++)/df7f28(*:44283)'
-                        .'|6d23/([^/]++)/([^/]++)/([^/]++)/df6d23(*:44331)'
-                    .')'
-                    .'|b(?'
-                        .'|85e2/([^/]++)/([^/]++)/([^/]++)/db85e2(*:44384)'
-                        .'|e272/([^/]++)/([^/]++)/([^/]++)/dbe272(*:44432)'
-                    .')'
-                    .'|d(?'
-                        .'|45(?'
-                            .'|85/([^/]++)/([^/]++)/([^/]++)/dd4585(*:44488)'
-                            .'|04/([^/]++)/([^/]++)/([^/]++)/dd4504(*:44534)'
-                        .')'
-                        .'|8eb9/([^/]++)/([^/]++)/([^/]++)/dd8eb9(*:44583)'
-                    .')'
-                    .'|a(?'
-                        .'|ca41/([^/]++)/([^/]++)/([^/]++)/daca41(*:44636)'
-                        .'|8ce5/([^/]++)/([^/]++)/([^/]++)/da8ce5(*:44684)'
-                        .'|0d11/([^/]++)/([^/]++)/([^/]++)/da0d11(*:44732)'
-                    .')'
-                    .'|4(?'
-                        .'|90d7/([^/]++)/([^/]++)/([^/]++)/d490d7(*:44785)'
-                        .'|c2e4/([^/]++)/([^/]++)/([^/]++)/d4c2e4(*:44833)'
-                    .')'
-                    .'|8(?'
-                        .'|6ea6/([^/]++)/([^/]++)/([^/]++)/d86ea6(*:44886)'
-                        .'|40cc/([^/]++)/([^/]++)/([^/]++)/d840cc(*:44934)'
-                    .')'
-                    .'|c(?'
-                        .'|82d6/([^/]++)/([^/]++)/([^/]++)/dc82d6(*:44987)'
-                        .'|6a70/([^/]++)/([^/]++)/([^/]++)/dc6a70(*:45035)'
-                        .'|5689/([^/]++)/([^/]++)/([^/]++)/dc5689(*:45083)'
-                    .')'
-                    .'|7(?'
-                        .'|a728/([^/]++)/([^/]++)/([^/]++)/d7a728(*:45136)'
-                        .'|0732/([^/]++)/([^/]++)/([^/]++)/d70732(*:45184)'
-                        .'|9aac/([^/]++)/([^/]++)/([^/]++)/d79aac(*:45232)'
-                    .')'
-                    .'|14220/([^/]++)/([^/]++)/([^/]++)/d14220(*:45282)'
-                    .'|5(?'
-                        .'|cfea/([^/]++)/([^/]++)/([^/]++)/d5cfea(*:45334)'
-                        .'|8072/([^/]++)/([^/]++)/([^/]++)/d58072(*:45382)'
-                        .'|54f7/([^/]++)/([^/]++)/([^/]++)/d554f7(*:45430)'
-                        .'|16b1/([^/]++)/([^/]++)/([^/]++)/d516b1(*:45478)'
-                        .'|6b9f/([^/]++)/([^/]++)/([^/]++)/d56b9f(*:45526)'
-                    .')'
-                    .'|045c5/([^/]++)/([^/]++)/([^/]++)/d045c5(*:45576)'
-                    .'|2(?'
-                        .'|ed45/([^/]++)/([^/]++)/([^/]++)/d2ed45(*:45628)'
-                        .'|40e3/([^/]++)/([^/]++)/([^/]++)/d240e3(*:45676)'
-                    .')'
-                    .'|93ed5/([^/]++)/([^/]++)/([^/]++)/d93ed5(*:45726)'
-                .')'
-                .'|/7(?'
-                    .'|b(?'
-                        .'|cdf7/([^/]++)/([^/]++)/([^/]++)/7bcdf7(*:45784)'
-                        .'|13b2/([^/]++)/([^/]++)/([^/]++)/7b13b2(*:45832)'
-                    .')'
-                    .'|dcd34/([^/]++)/([^/]++)/([^/]++)/7dcd34(*:45882)'
-                    .'|f(?'
-                        .'|24d2/([^/]++)/([^/]++)/([^/]++)/7f24d2(*:45934)'
-                        .'|5d04/([^/]++)/([^/]++)/([^/]++)/7f5d04(*:45982)'
-                        .'|1171/([^/]++)/([^/]++)/([^/]++)/7f1171(*:46030)'
-                        .'|a732/([^/]++)/([^/]++)/([^/]++)/7fa732(*:46078)'
-                    .')'
-                    .'|6(?'
-                        .'|6ebc/([^/]++)/([^/]++)/([^/]++)/766ebc(*:46131)'
-                        .'|34ea/([^/]++)/([^/]++)/([^/]++)/7634ea(*:46179)'
-                    .')'
-                    .'|750ca/([^/]++)/([^/]++)/([^/]++)/7750ca(*:46229)'
-                    .'|1(?'
-                        .'|a(?'
-                            .'|3cb/([^/]++)/([^/]++)/([^/]++)/71a3cb(*:46284)'
-                            .'|d16/([^/]++)/([^/]++)/([^/]++)/71ad16(*:46331)'
-                        .')'
-                        .'|43d7/([^/]++)/([^/]++)/([^/]++)/7143d7(*:46380)'
-                    .')'
-                    .'|88d98/([^/]++)/([^/]++)/([^/]++)/788d98(*:46430)'
-                    .'|2(?'
-                        .'|da7f/([^/]++)/([^/]++)/([^/]++)/72da7f(*:46482)'
-                        .'|50eb/([^/]++)/([^/]++)/([^/]++)/7250eb(*:46530)'
-                    .')'
-                    .'|c(?'
-                        .'|590f/([^/]++)/([^/]++)/([^/]++)/7c590f(*:46583)'
-                        .'|e328/([^/]++)/([^/]++)/([^/]++)/7ce328(*:46631)'
-                    .')'
-                    .'|a5392/([^/]++)/([^/]++)/([^/]++)/7a5392(*:46681)'
-                    .'|95c7a/([^/]++)/([^/]++)/([^/]++)/795c7a(*:46730)'
-                    .'|504ad/([^/]++)/([^/]++)/([^/]++)/7504ad(*:46779)'
-                    .'|04afe/([^/]++)/([^/]++)/([^/]++)/704afe(*:46828)'
-                    .'|4bba2/([^/]++)/([^/]++)/([^/]++)/74bba2(*:46877)'
-                .')'
-                .'|/9(?'
-                    .'|b(?'
-                        .'|72e3/([^/]++)/([^/]++)/([^/]++)/9b72e3(*:46935)'
-                        .'|698e/([^/]++)/([^/]++)/([^/]++)/9b698e(*:46983)'
-                    .')'
-                    .'|7e852/([^/]++)/([^/]++)/([^/]++)/97e852(*:47033)'
-                    .'|4c7bb/([^/]++)/([^/]++)/([^/]++)/94c7bb(*:47082)'
-                    .'|9(?'
-                        .'|c5e0/([^/]++)/([^/]++)/([^/]++)/99c5e0(*:47134)'
-                        .'|6a7f/([^/]++)/([^/]++)/([^/]++)/996a7f(*:47182)'
-                        .'|bcfc/([^/]++)/([^/]++)/([^/]++)/99bcfc(*:47230)'
-                        .'|0827/([^/]++)/([^/]++)/([^/]++)/990827(*:47278)'
-                    .')'
-                    .'|a(?'
-                        .'|d6aa/([^/]++)/([^/]++)/([^/]++)/9ad6aa(*:47331)'
-                        .'|b0d8/([^/]++)/([^/]++)/([^/]++)/9ab0d8(*:47379)'
-                    .')'
-                    .'|c(?'
-                        .'|f81d/([^/]++)/([^/]++)/([^/]++)/9cf81d(*:47432)'
-                        .'|c138/([^/]++)/([^/]++)/([^/]++)/9cc138(*:47480)'
-                        .'|82c7/([^/]++)/([^/]++)/([^/]++)/9c82c7(*:47528)'
-                        .'|0180/([^/]++)/([^/]++)/([^/]++)/9c0180(*:47576)'
-                    .')'
-                    .'|f(?'
-                        .'|396f/([^/]++)/([^/]++)/([^/]++)/9f396f(*:47629)'
-                        .'|e859/([^/]++)/([^/]++)/([^/]++)/9fe859(*:47677)'
-                        .'|53d8/([^/]++)/([^/]++)/([^/]++)/9f53d8(*:47725)'
-                    .')'
-                    .'|12d2b/([^/]++)/([^/]++)/([^/]++)/912d2b(*:47775)'
-                    .'|59a55/([^/]++)/([^/]++)/([^/]++)/959a55(*:47824)'
-                    .'|6(?'
-                        .'|ea64/([^/]++)/([^/]++)/([^/]++)/96ea64(*:47876)'
-                        .'|b9bf/([^/]++)/([^/]++)/([^/]++)/96b9bf(*:47924)'
-                    .')'
-                    .'|e3cfc/([^/]++)/([^/]++)/([^/]++)/9e3cfc(*:47974)'
-                    .'|2(?'
-                        .'|fb0c/([^/]++)/([^/]++)/([^/]++)/92fb0c(*:48026)'
-                        .'|262b/([^/]++)/([^/]++)/([^/]++)/92262b(*:48074)'
-                        .'|32fe/([^/]++)/([^/]++)/([^/]++)/9232fe(*:48122)'
-                        .'|977a/([^/]++)/([^/]++)/([^/]++)/92977a(*:48170)'
-                    .')'
-                    .'|8d6f5/([^/]++)/([^/]++)/([^/]++)/98d6f5(*:48220)'
-                    .'|0794e/([^/]++)/([^/]++)/([^/]++)/90794e(*:48269)'
-                    .'|34815/([^/]++)/([^/]++)/([^/]++)/934815(*:48318)'
-                .')'
-                .'|/4(?'
-                    .'|e(?'
-                        .'|4b5f/([^/]++)/([^/]++)/([^/]++)/4e4b5f(*:48376)'
-                        .'|a06f/([^/]++)/([^/]++)/([^/]++)/4ea06f(*:48424)'
-                        .'|0(?'
-                            .'|928/([^/]++)/([^/]++)/([^/]++)/4e0928(*:48475)'
-                            .'|cb6/([^/]++)/([^/]++)/([^/]++)/4e0cb6(*:48522)'
-                        .')'
-                    .')'
-                    .'|6922a/([^/]++)/([^/]++)/([^/]++)/46922a(*:48573)'
-                    .'|4(?'
-                        .'|c4c1/([^/]++)/([^/]++)/([^/]++)/44c4c1(*:48625)'
-                        .'|3cb0/([^/]++)/([^/]++)/([^/]++)/443cb0(*:48673)'
-                    .')'
-                    .'|8ab2f/([^/]++)/([^/]++)/([^/]++)/48ab2f(*:48723)'
-                    .'|5(?'
-                        .'|645a/([^/]++)/([^/]++)/([^/]++)/45645a(*:48775)'
-                        .'|58db/([^/]++)/([^/]++)/([^/]++)/4558db(*:48823)'
-                    .')'
-                    .'|2e77b/([^/]++)/([^/]++)/([^/]++)/42e77b(*:48873)'
-                    .'|c27ce/([^/]++)/([^/]++)/([^/]++)/4c27ce(*:48922)'
-                    .'|f(?'
-                        .'|fce0/([^/]++)/([^/]++)/([^/]++)/4ffce0(*:48974)'
-                        .'|ac9b/([^/]++)/([^/]++)/([^/]++)/4fac9b(*:49022)'
-                    .')'
-                    .'|a47d2/([^/]++)/([^/]++)/([^/]++)/4a47d2(*:49072)'
-                    .'|70e7a/([^/]++)/([^/]++)/([^/]++)/470e7a(*:49121)'
-                    .'|b(?'
-                        .'|0(?'
-                            .'|4a6/([^/]++)/([^/]++)/([^/]++)/4b04a6(*:49176)'
-                            .'|a59/([^/]++)/([^/]++)/([^/]++)/4b0a59(*:49223)'
-                            .'|250/([^/]++)/([^/]++)/([^/]++)/4b0250(*:49270)'
-                        .')'
-                        .'|6538/([^/]++)/([^/]++)/([^/]++)/4b6538(*:49319)'
-                    .')'
-                    .'|3(?'
-                        .'|f(?'
-                            .'|a7f/([^/]++)/([^/]++)/([^/]++)/43fa7f(*:49375)'
-                            .'|eae/([^/]++)/([^/]++)/([^/]++)/43feae(*:49422)'
-                        .')'
-                        .'|0c36/([^/]++)/([^/]++)/([^/]++)/430c36(*:49471)'
-                        .'|7d7d/([^/]++)/([^/]++)/([^/]++)/437d7d(*:49519)'
-                        .'|1135/([^/]++)/([^/]++)/([^/]++)/431135(*:49567)'
-                    .')'
-                    .'|d(?'
-                        .'|5b99/([^/]++)/([^/]++)/([^/]++)/4d5b99(*:49620)'
-                        .'|aa3d/([^/]++)/([^/]++)/([^/]++)/4daa3d(*:49668)'
-                    .')'
-                    .'|9c9ad/([^/]++)/([^/]++)/([^/]++)/49c9ad(*:49718)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        54 => [[['_route' => '_0'], ['a', 'b', 'c'], null, null, false, false, null]],
-        102 => [[['_route' => '_190'], ['a', 'b', 'c'], null, null, false, false, null]],
-        147 => [[['_route' => '_478'], ['a', 'b', 'c'], null, null, false, false, null]],
-        194 => [[['_route' => '_259'], ['a', 'b', 'c'], null, null, false, false, null]],
-        240 => [[['_route' => '_368'], ['a', 'b', 'c'], null, null, false, false, null]],
-        291 => [[['_route' => '_1'], ['a', 'b', 'c'], null, null, false, false, null]],
-        337 => [[['_route' => '_116'], ['a', 'b', 'c'], null, null, false, false, null]],
-        383 => [[['_route' => '_490'], ['a', 'b', 'c'], null, null, false, false, null]],
-        434 => [[['_route' => '_2'], ['a', 'b', 'c'], null, null, false, false, null]],
-        480 => [[['_route' => '_124'], ['a', 'b', 'c'], null, null, false, false, null]],
-        526 => [[['_route' => '_389'], ['a', 'b', 'c'], null, null, false, false, null]],
-        577 => [[['_route' => '_8'], ['a', 'b', 'c'], null, null, false, false, null]],
-        623 => [[['_route' => '_104'], ['a', 'b', 'c'], null, null, false, false, null]],
-        677 => [[['_route' => '_12'], ['a', 'b', 'c'], null, null, false, false, null]],
-        722 => [[['_route' => '_442'], ['a', 'b', 'c'], null, null, false, false, null]],
-        769 => [[['_route' => '_253'], ['a', 'b', 'c'], null, null, false, false, null]],
-        820 => [[['_route' => '_13'], ['a', 'b', 'c'], null, null, false, false, null]],
-        866 => [[['_route' => '_254'], ['a', 'b', 'c'], null, null, false, false, null]],
-        912 => [[['_route' => '_347'], ['a', 'b', 'c'], null, null, false, false, null]],
-        963 => [[['_route' => '_16'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1009 => [[['_route' => '_87'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1058 => [[['_route' => '_31'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1109 => [[['_route' => '_50'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1156 => [[['_route' => '_219'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1203 => [[['_route' => '_332'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1250 => [[['_route' => '_359'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1302 => [[['_route' => '_183'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1349 => [[['_route' => '_500'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1401 => [[['_route' => '_214'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1448 => [[['_route' => '_321'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1497 => [[['_route' => '_243'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1545 => [[['_route' => '_328'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1596 => [[['_route' => '_362'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1643 => [[['_route' => '_488'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1701 => [[['_route' => '_3'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1751 => [[['_route' => '_102'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1797 => [[['_route' => '_220'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1845 => [[['_route' => '_127'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1897 => [[['_route' => '_5'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1944 => [[['_route' => '_242'], ['a', 'b', 'c'], null, null, false, false, null]],
-        1991 => [[['_route' => '_397'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2038 => [[['_route' => '_454'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2090 => [[['_route' => '_34'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2137 => [[['_route' => '_281'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2189 => [[['_route' => '_64'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2236 => [[['_route' => '_205'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2291 => [[['_route' => '_71'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2337 => [[['_route' => '_203'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2385 => [[['_route' => '_97'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2437 => [[['_route' => '_98'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2484 => [[['_route' => '_267'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2531 => [[['_route' => '_309'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2586 => [[['_route' => '_117'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2631 => [[['_route' => '_211'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2679 => [[['_route' => '_484'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2731 => [[['_route' => '_139'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2778 => [[['_route' => '_421'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2830 => [[['_route' => '_185'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2877 => [[['_route' => '_439'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2926 => [[['_route' => '_218'], ['a', 'b', 'c'], null, null, false, false, null]],
-        2977 => [[['_route' => '_233'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3024 => [[['_route' => '_483'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3073 => [[['_route' => '_265'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3124 => [[['_route' => '_299'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3171 => [[['_route' => '_351'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3218 => [[['_route' => '_472'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3267 => [[['_route' => '_360'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3315 => [[['_route' => '_466'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3372 => [[['_route' => '_4'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3419 => [[['_route' => '_142'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3466 => [[['_route' => '_151'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3513 => [[['_route' => '_308'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3560 => [[['_route' => '_440'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3612 => [[['_route' => '_14'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3659 => [[['_route' => '_358'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3711 => [[['_route' => '_37'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3758 => [[['_route' => '_38'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3805 => [[['_route' => '_146'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3852 => [[['_route' => '_194'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3899 => [[['_route' => '_487'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3948 => [[['_route' => '_42'], ['a', 'b', 'c'], null, null, false, false, null]],
-        3999 => [[['_route' => '_54'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4046 => [[['_route' => '_326'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4098 => [[['_route' => '_68'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4145 => [[['_route' => '_108'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4197 => [[['_route' => '_74'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4244 => [[['_route' => '_315'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4291 => [[['_route' => '_374'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4343 => [[['_route' => '_99'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4390 => [[['_route' => '_238'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4442 => [[['_route' => '_107'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4489 => [[['_route' => '_409'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4541 => [[['_route' => '_122'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4588 => [[['_route' => '_379'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4635 => [[['_route' => '_390'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4687 => [[['_route' => '_171'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4734 => [[['_route' => '_260'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4781 => [[['_route' => '_434'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4830 => [[['_route' => '_189'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4878 => [[['_route' => '_467'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4935 => [[['_route' => '_6'], ['a', 'b', 'c'], null, null, false, false, null]],
-        4982 => [[['_route' => '_286'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5029 => [[['_route' => '_438'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5081 => [[['_route' => '_19'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5131 => [[['_route' => '_24'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5177 => [[['_route' => '_172'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5230 => [[['_route' => '_33'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5277 => [[['_route' => '_400'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5324 => [[['_route' => '_427'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5376 => [[['_route' => '_35'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5423 => [[['_route' => '_156'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5475 => [[['_route' => '_36'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5522 => [[['_route' => '_251'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5574 => [[['_route' => '_43'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5621 => [[['_route' => '_292'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5668 => [[['_route' => '_411'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5720 => [[['_route' => '_69'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5767 => [[['_route' => '_159'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5814 => [[['_route' => '_170'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5861 => [[['_route' => '_376'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5913 => [[['_route' => '_131'], ['a', 'b', 'c'], null, null, false, false, null]],
-        5960 => [[['_route' => '_446'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6015 => [[['_route' => '_140'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6061 => [[['_route' => '_353'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6112 => [[['_route' => '_224'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6158 => [[['_route' => '_346'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6204 => [[['_route' => '_443'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6254 => [[['_route' => '_154'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6305 => [[['_route' => '_212'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6352 => [[['_route' => '_313'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6399 => [[['_route' => '_395'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6446 => [[['_route' => '_441'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6498 => [[['_route' => '_223'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6545 => [[['_route' => '_303'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6594 => [[['_route' => '_410'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6642 => [[['_route' => '_494'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6702 => [[['_route' => '_7'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6748 => [[['_route' => '_268'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6796 => [[['_route' => '_178'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6843 => [[['_route' => '_179'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6890 => [[['_route' => '_416'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6942 => [[['_route' => '_25'], ['a', 'b', 'c'], null, null, false, false, null]],
-        6989 => [[['_route' => '_307'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7036 => [[['_route' => '_387'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7083 => [[['_route' => '_471'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7132 => [[['_route' => '_90'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7183 => [[['_route' => '_95'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7230 => [[['_route' => '_338'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7277 => [[['_route' => '_401'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7329 => [[['_route' => '_147'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7376 => [[['_route' => '_319'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7423 => [[['_route' => '_354'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7470 => [[['_route' => '_428'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7522 => [[['_route' => '_162'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7572 => [[['_route' => '_175'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7618 => [[['_route' => '_455'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7666 => [[['_route' => '_355'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7718 => [[['_route' => '_197'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7768 => [[['_route' => '_202'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7813 => [[['_route' => '_489'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7863 => [[['_route' => '_199'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7914 => [[['_route' => '_263'], ['a', 'b', 'c'], null, null, false, false, null]],
-        7961 => [[['_route' => '_406'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8010 => [[['_route' => '_289'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8058 => [[['_route' => '_325'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8106 => [[['_route' => '_378'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8154 => [[['_route' => '_468'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8211 => [[['_route' => '_9'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8258 => [[['_route' => '_216'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8307 => [[['_route' => '_26'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8355 => [[['_route' => '_62'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8406 => [[['_route' => '_81'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8453 => [[['_route' => '_318'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8505 => [[['_route' => '_121'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8551 => [[['_route' => '_182'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8603 => [[['_route' => '_136'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8650 => [[['_route' => '_415'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8697 => [[['_route' => '_457'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8744 => [[['_route' => '_463'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8796 => [[['_route' => '_148'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8843 => [[['_route' => '_273'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8892 => [[['_route' => '_284'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8940 => [[['_route' => '_288'], ['a', 'b', 'c'], null, null, false, false, null]],
-        8991 => [[['_route' => '_295'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9038 => [[['_route' => '_305'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9085 => [[['_route' => '_453'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9134 => [[['_route' => '_340'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9185 => [[['_route' => '_371'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9232 => [[['_route' => '_417'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9284 => [[['_route' => '_382'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9331 => [[['_route' => '_404'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9389 => [[['_route' => '_10'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9436 => [[['_route' => '_279'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9483 => [[['_route' => '_377'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9535 => [[['_route' => '_39'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9582 => [[['_route' => '_40'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9629 => [[['_route' => '_264'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9676 => [[['_route' => '_449'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9728 => [[['_route' => '_46'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9775 => [[['_route' => '_257'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9822 => [[['_route' => '_274'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9869 => [[['_route' => '_388'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9921 => [[['_route' => '_53'], ['a', 'b', 'c'], null, null, false, false, null]],
-        9968 => [[['_route' => '_345'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10020 => [[['_route' => '_73'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10068 => [[['_route' => '_296'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10121 => [[['_route' => '_75'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10169 => [[['_route' => '_458'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10225 => [[['_route' => '_79'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10272 => [[['_route' => '_129'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10319 => [[['_route' => '_418'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10368 => [[['_route' => '_225'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10416 => [[['_route' => '_479'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10466 => [[['_route' => '_120'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10515 => [[['_route' => '_276'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10564 => [[['_route' => '_370'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10616 => [[['_route' => '_385'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10664 => [[['_route' => '_469'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10714 => [[['_route' => '_435'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10772 => [[['_route' => '_11'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10820 => [[['_route' => '_105'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10868 => [[['_route' => '_132'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10921 => [[['_route' => '_18'], ['a', 'b', 'c'], null, null, false, false, null]],
-        10969 => [[['_route' => '_210'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11017 => [[['_route' => '_329'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11073 => [[['_route' => '_29'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11120 => [[['_route' => '_480'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11169 => [[['_route' => '_426'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11222 => [[['_route' => '_32'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11270 => [[['_route' => '_217'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11318 => [[['_route' => '_275'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11371 => [[['_route' => '_45'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11419 => [[['_route' => '_157'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11467 => [[['_route' => '_184'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11515 => [[['_route' => '_250'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11563 => [[['_route' => '_356'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11616 => [[['_route' => '_47'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11664 => [[['_route' => '_445'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11714 => [[['_route' => '_48'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11766 => [[['_route' => '_58'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11814 => [[['_route' => '_414'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11862 => [[['_route' => '_431'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11915 => [[['_route' => '_84'], ['a', 'b', 'c'], null, null, false, false, null]],
-        11963 => [[['_route' => '_294'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12011 => [[['_route' => '_336'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12059 => [[['_route' => '_465'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12112 => [[['_route' => '_103'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12160 => [[['_route' => '_111'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12208 => [[['_route' => '_207'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12256 => [[['_route' => '_402'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12309 => [[['_route' => '_230'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12356 => [[['_route' => '_331'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12406 => [[['_route' => '_248'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12455 => [[['_route' => '_282'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12513 => [[['_route' => '_15'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12561 => [[['_route' => '_130'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12609 => [[['_route' => '_231'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12657 => [[['_route' => '_365'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12705 => [[['_route' => '_448'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12758 => [[['_route' => '_20'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12806 => [[['_route' => '_93'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12854 => [[['_route' => '_186'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12902 => [[['_route' => '_460'], ['a', 'b', 'c'], null, null, false, false, null]],
-        12955 => [[['_route' => '_52'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13003 => [[['_route' => '_447'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13056 => [[['_route' => '_56'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13104 => [[['_route' => '_133'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13152 => [[['_route' => '_297'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13205 => [[['_route' => '_82'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13253 => [[['_route' => '_165'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13301 => [[['_route' => '_213'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13351 => [[['_route' => '_86'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13403 => [[['_route' => '_92'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13450 => [[['_route' => '_280'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13500 => [[['_route' => '_143'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13549 => [[['_route' => '_177'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13601 => [[['_route' => '_188'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13649 => [[['_route' => '_311'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13697 => [[['_route' => '_350'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13750 => [[['_route' => '_226'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13798 => [[['_route' => '_291'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13851 => [[['_route' => '_244'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13898 => [[['_route' => '_287'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13951 => [[['_route' => '_300'], ['a', 'b', 'c'], null, null, false, false, null]],
-        13999 => [[['_route' => '_451'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14047 => [[['_route' => '_452'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14095 => [[['_route' => '_481'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14145 => [[['_route' => '_312'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14203 => [[['_route' => '_17'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14251 => [[['_route' => '_227'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14299 => [[['_route' => '_393'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14349 => [[['_route' => '_57'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14401 => [[['_route' => '_61'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14449 => [[['_route' => '_112'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14500 => [[['_route' => '_135'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14547 => [[['_route' => '_271'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14596 => [[['_route' => '_459'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14649 => [[['_route' => '_67'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14697 => [[['_route' => '_113'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14745 => [[['_route' => '_497'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14795 => [[['_route' => '_70'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14847 => [[['_route' => '_89'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14895 => [[['_route' => '_128'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14948 => [[['_route' => '_150'], ['a', 'b', 'c'], null, null, false, false, null]],
-        14996 => [[['_route' => '_166'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15047 => [[['_route' => '_206'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15094 => [[['_route' => '_419'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15148 => [[['_route' => '_201'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15196 => [[['_route' => '_314'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15244 => [[['_route' => '_429'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15297 => [[['_route' => '_228'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15345 => [[['_route' => '_477'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15395 => [[['_route' => '_272'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15444 => [[['_route' => '_486'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15502 => [[['_route' => '_21'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15550 => [[['_route' => '_247'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15598 => [[['_route' => '_424'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15646 => [[['_route' => '_499'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15699 => [[['_route' => '_23'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15747 => [[['_route' => '_152'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15795 => [[['_route' => '_304'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15843 => [[['_route' => '_352'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15896 => [[['_route' => '_28'], ['a', 'b', 'c'], null, null, false, false, null]],
-        15944 => [[['_route' => '_240'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16000 => [[['_route' => '_30'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16047 => [[['_route' => '_41'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16096 => [[['_route' => '_301'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16149 => [[['_route' => '_66'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16197 => [[['_route' => '_72'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16245 => [[['_route' => '_320'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16298 => [[['_route' => '_78'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16346 => [[['_route' => '_337'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16394 => [[['_route' => '_399'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16442 => [[['_route' => '_495'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16492 => [[['_route' => '_85'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16544 => [[['_route' => '_101'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16592 => [[['_route' => '_176'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16640 => [[['_route' => '_246'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16693 => [[['_route' => '_125'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16741 => [[['_route' => '_341'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16794 => [[['_route' => '_137'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16842 => [[['_route' => '_270'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16890 => [[['_route' => '_386'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16943 => [[['_route' => '_169'], ['a', 'b', 'c'], null, null, false, false, null]],
-        16991 => [[['_route' => '_200'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17039 => [[['_route' => '_262'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17092 => [[['_route' => '_187'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17140 => [[['_route' => '_333'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17190 => [[['_route' => '_215'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17239 => [[['_route' => '_316'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17288 => [[['_route' => '_343'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17346 => [[['_route' => '_22'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17394 => [[['_route' => '_420'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17447 => [[['_route' => '_55'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17494 => [[['_route' => '_496'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17547 => [[['_route' => '_153'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17595 => [[['_route' => '_344'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17648 => [[['_route' => '_160'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17696 => [[['_route' => '_398'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17749 => [[['_route' => '_161'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17797 => [[['_route' => '_193'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17847 => [[['_route' => '_174'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17899 => [[['_route' => '_209'], ['a', 'b', 'c'], null, null, false, false, null]],
-        17947 => [[['_route' => '_261'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18000 => [[['_route' => '_222'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18048 => [[['_route' => '_323'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18096 => [[['_route' => '_380'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18149 => [[['_route' => '_232'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18197 => [[['_route' => '_383'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18247 => [[['_route' => '_306'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18296 => [[['_route' => '_327'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18345 => [[['_route' => '_364'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18397 => [[['_route' => '_403'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18445 => [[['_route' => '_405'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18495 => [[['_route' => '_412'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18553 => [[['_route' => '_27'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18601 => [[['_route' => '_134'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18649 => [[['_route' => '_245'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18702 => [[['_route' => '_59'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18750 => [[['_route' => '_208'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18803 => [[['_route' => '_60'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18851 => [[['_route' => '_119'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18902 => [[['_route' => '_163'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18949 => [[['_route' => '_249'], ['a', 'b', 'c'], null, null, false, false, null]],
-        18998 => [[['_route' => '_278'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19051 => [[['_route' => '_63'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19099 => [[['_route' => '_195'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19147 => [[['_route' => '_252'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19195 => [[['_route' => '_461'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19248 => [[['_route' => '_126'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19296 => [[['_route' => '_158'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19344 => [[['_route' => '_221'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19392 => [[['_route' => '_269'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19440 => [[['_route' => '_310'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19496 => [[['_route' => '_138'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19543 => [[['_route' => '_348'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19592 => [[['_route' => '_236'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19640 => [[['_route' => '_433'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19693 => [[['_route' => '_141'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19741 => [[['_route' => '_283'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19794 => [[['_route' => '_144'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19842 => [[['_route' => '_191'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19895 => [[['_route' => '_168'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19943 => [[['_route' => '_363'], ['a', 'b', 'c'], null, null, false, false, null]],
-        19991 => [[['_route' => '_381'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20044 => [[['_route' => '_180'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20092 => [[['_route' => '_339'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20142 => [[['_route' => '_196'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20194 => [[['_route' => '_198'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20242 => [[['_route' => '_285'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20292 => [[['_route' => '_349'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20344 => [[['_route' => '_367'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20392 => [[['_route' => '_384'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20440 => [[['_route' => '_498'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20490 => [[['_route' => '_369'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20542 => [[['_route' => '_408'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20590 => [[['_route' => '_413'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20652 => [[['_route' => '_44'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20699 => [[['_route' => '_256'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20748 => [[['_route' => '_173'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20796 => [[['_route' => '_266'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20844 => [[['_route' => '_392'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20892 => [[['_route' => '_430'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20940 => [[['_route' => '_482'], ['a', 'b', 'c'], null, null, false, false, null]],
-        20993 => [[['_route' => '_49'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21041 => [[['_route' => '_94'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21089 => [[['_route' => '_407'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21142 => [[['_route' => '_65'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21190 => [[['_route' => '_181'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21238 => [[['_route' => '_437'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21291 => [[['_route' => '_76'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21339 => [[['_route' => '_357'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21392 => [[['_route' => '_80'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21440 => [[['_route' => '_106'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21493 => [[['_route' => '_83'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21541 => [[['_route' => '_255'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21589 => [[['_route' => '_330'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21642 => [[['_route' => '_100'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21690 => [[['_route' => '_396'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21738 => [[['_route' => '_422'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21791 => [[['_route' => '_149'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21839 => [[['_route' => '_324'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21892 => [[['_route' => '_164'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21940 => [[['_route' => '_423'], ['a', 'b', 'c'], null, null, false, false, null]],
-        21990 => [[['_route' => '_241'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22042 => [[['_route' => '_290'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22090 => [[['_route' => '_335'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22140 => [[['_route' => '_373'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22189 => [[['_route' => '_375'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22238 => [[['_route' => '_450'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22287 => [[['_route' => '_464'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22345 => [[['_route' => '_51'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22393 => [[['_route' => '_77'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22441 => [[['_route' => '_234'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22489 => [[['_route' => '_394'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22542 => [[['_route' => '_88'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22590 => [[['_route' => '_155'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22643 => [[['_route' => '_96'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22691 => [[['_route' => '_298'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22739 => [[['_route' => '_470'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22792 => [[['_route' => '_109'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22840 => [[['_route' => '_204'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22893 => [[['_route' => '_115'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22941 => [[['_route' => '_145'], ['a', 'b', 'c'], null, null, false, false, null]],
-        22994 => [[['_route' => '_123'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23042 => [[['_route' => '_277'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23090 => [[['_route' => '_473'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23143 => [[['_route' => '_334'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23191 => [[['_route' => '_493'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23244 => [[['_route' => '_372'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23292 => [[['_route' => '_432'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23340 => [[['_route' => '_436'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23393 => [[['_route' => '_425'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23441 => [[['_route' => '_456'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23489 => [[['_route' => '_474'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23539 => [[['_route' => '_485'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23594 => [[['_route' => '_91'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23646 => [[['_route' => '_110'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23694 => [[['_route' => '_114'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23750 => [[['_route' => '_118'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23796 => [[['_route' => '_475'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23844 => [[['_route' => '_366'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23897 => [[['_route' => '_167'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23945 => [[['_route' => '_192'], ['a', 'b', 'c'], null, null, false, false, null]],
-        23993 => [[['_route' => '_342'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24046 => [[['_route' => '_229'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24097 => [[['_route' => '_235'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24144 => [[['_route' => '_302'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24193 => [[['_route' => '_322'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24246 => [[['_route' => '_237'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24294 => [[['_route' => '_293'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24347 => [[['_route' => '_239'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24395 => [[['_route' => '_444'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24443 => [[['_route' => '_491'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24491 => [[['_route' => '_492'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24541 => [[['_route' => '_258'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24590 => [[['_route' => '_317'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24639 => [[['_route' => '_361'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24688 => [[['_route' => '_391'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24737 => [[['_route' => '_462'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24786 => [[['_route' => '_476'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24837 => [[['_route' => '_501'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24889 => [[['_route' => '_514'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24937 => [[['_route' => '_731'], ['a', 'b', 'c'], null, null, false, false, null]],
-        24990 => [[['_route' => '_522'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25038 => [[['_route' => '_693'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25091 => [[['_route' => '_537'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25139 => [[['_route' => '_554'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25187 => [[['_route' => '_645'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25235 => [[['_route' => '_862'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25288 => [[['_route' => '_539'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25336 => [[['_route' => '_729'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25384 => [[['_route' => '_897'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25437 => [[['_route' => '_561'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25485 => [[['_route' => '_615'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25533 => [[['_route' => '_764'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25581 => [[['_route' => '_948'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25634 => [[['_route' => '_617'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25682 => [[['_route' => '_671'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25735 => [[['_route' => '_649'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25783 => [[['_route' => '_651'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25831 => [[['_route' => '_684'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25884 => [[['_route' => '_669'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25932 => [[['_route' => '_743'], ['a', 'b', 'c'], null, null, false, false, null]],
-        25980 => [[['_route' => '_962'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26033 => [[['_route' => '_694'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26081 => [[['_route' => '_985'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26134 => [[['_route' => '_707'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26182 => [[['_route' => '_718'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26235 => [[['_route' => '_720'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26283 => [[['_route' => '_745'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26333 => [[['_route' => '_874'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26391 => [[['_route' => '_502'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26439 => [[['_route' => '_667'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26487 => [[['_route' => '_911'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26535 => [[['_route' => '_942'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26585 => [[['_route' => '_504'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26637 => [[['_route' => '_524'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26685 => [[['_route' => '_732'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26738 => [[['_route' => '_596'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26786 => [[['_route' => '_601'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26839 => [[['_route' => '_620'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26887 => [[['_route' => '_631'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26935 => [[['_route' => '_771'], ['a', 'b', 'c'], null, null, false, false, null]],
-        26983 => [[['_route' => '_937'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27031 => [[['_route' => '_999'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27084 => [[['_route' => '_657'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27132 => [[['_route' => '_701'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27185 => [[['_route' => '_662'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27233 => [[['_route' => '_797'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27281 => [[['_route' => '_924'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27334 => [[['_route' => '_702'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27382 => [[['_route' => '_750'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27435 => [[['_route' => '_749'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27483 => [[['_route' => '_837'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27533 => [[['_route' => '_758'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27585 => [[['_route' => '_810'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27633 => [[['_route' => '_902'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27683 => [[['_route' => '_845'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27741 => [[['_route' => '_503'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27792 => [[['_route' => '_756'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27839 => [[['_route' => '_799'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27888 => [[['_route' => '_769'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27936 => [[['_route' => '_981'], ['a', 'b', 'c'], null, null, false, false, null]],
-        27989 => [[['_route' => '_507'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28037 => [[['_route' => '_672'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28085 => [[['_route' => '_790'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28138 => [[['_route' => '_515'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28186 => [[['_route' => '_523'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28234 => [[['_route' => '_957'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28282 => [[['_route' => '_995'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28335 => [[['_route' => '_532'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28383 => [[['_route' => '_642'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28433 => [[['_route' => '_579'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28485 => [[['_route' => '_625'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28533 => [[['_route' => '_916'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28586 => [[['_route' => '_633'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28634 => [[['_route' => '_656'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28687 => [[['_route' => '_658'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28735 => [[['_route' => '_943'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28788 => [[['_route' => '_664'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28836 => [[['_route' => '_852'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28884 => [[['_route' => '_870'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28937 => [[['_route' => '_683'], ['a', 'b', 'c'], null, null, false, false, null]],
-        28985 => [[['_route' => '_915'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29038 => [[['_route' => '_719'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29086 => [[['_route' => '_859'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29134 => [[['_route' => '_912'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29182 => [[['_route' => '_978'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29235 => [[['_route' => '_738'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29283 => [[['_route' => '_883'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29333 => [[['_route' => '_741'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29382 => [[['_route' => '_760'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29431 => [[['_route' => '_895'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29489 => [[['_route' => '_505'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29537 => [[['_route' => '_935'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29590 => [[['_route' => '_509'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29638 => [[['_route' => '_820'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29686 => [[['_route' => '_910'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29739 => [[['_route' => '_518'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29787 => [[['_route' => '_618'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29840 => [[['_route' => '_546'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29888 => [[['_route' => '_740'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29936 => [[['_route' => '_867'], ['a', 'b', 'c'], null, null, false, false, null]],
-        29989 => [[['_route' => '_572'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30037 => [[['_route' => '_952'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30090 => [[['_route' => '_573'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30138 => [[['_route' => '_692'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30186 => [[['_route' => '_700'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30234 => [[['_route' => '_772'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30284 => [[['_route' => '_653'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30336 => [[['_route' => '_695'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30384 => [[['_route' => '_748'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30437 => [[['_route' => '_710'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30485 => [[['_route' => '_716'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30533 => [[['_route' => '_969'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30586 => [[['_route' => '_734'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30634 => [[['_route' => '_742'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30682 => [[['_route' => '_844'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30735 => [[['_route' => '_763'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30783 => [[['_route' => '_965'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30836 => [[['_route' => '_778'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30884 => [[['_route' => '_813'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30932 => [[['_route' => '_831'], ['a', 'b', 'c'], null, null, false, false, null]],
-        30982 => [[['_route' => '_955'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31031 => [[['_route' => '_997'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31089 => [[['_route' => '_506'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31137 => [[['_route' => '_575'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31190 => [[['_route' => '_516'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31238 => [[['_route' => '_553'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31291 => [[['_route' => '_528'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31339 => [[['_route' => '_847'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31387 => [[['_route' => '_904'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31440 => [[['_route' => '_574'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31488 => [[['_route' => '_818'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31538 => [[['_route' => '_577'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31590 => [[['_route' => '_584'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31638 => [[['_route' => '_905'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31691 => [[['_route' => '_612'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31739 => [[['_route' => '_688'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31787 => [[['_route' => '_854'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31840 => [[['_route' => '_613'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31888 => [[['_route' => '_767'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31941 => [[['_route' => '_666'], ['a', 'b', 'c'], null, null, false, false, null]],
-        31989 => [[['_route' => '_759'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32037 => [[['_route' => '_827'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32085 => [[['_route' => '_840'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32138 => [[['_route' => '_680'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32186 => [[['_route' => '_784'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32234 => [[['_route' => '_842'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32282 => [[['_route' => '_860'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32332 => [[['_route' => '_704'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32381 => [[['_route' => '_727'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32430 => [[['_route' => '_777'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32482 => [[['_route' => '_838'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32530 => [[['_route' => '_861'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32583 => [[['_route' => '_849'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32631 => [[['_route' => '_982'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32679 => [[['_route' => '_986'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32741 => [[['_route' => '_508'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32788 => [[['_route' => '_517'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32837 => [[['_route' => '_622'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32890 => [[['_route' => '_513'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32938 => [[['_route' => '_655'], ['a', 'b', 'c'], null, null, false, false, null]],
-        32986 => [[['_route' => '_843'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33034 => [[['_route' => '_939'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33084 => [[['_route' => '_529'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33136 => [[['_route' => '_535'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33184 => [[['_route' => '_685'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33240 => [[['_route' => '_559'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33287 => [[['_route' => '_661'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33336 => [[['_route' => '_768'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33389 => [[['_route' => '_589'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33437 => [[['_route' => '_647'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33485 => [[['_route' => '_652'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33533 => [[['_route' => '_834'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33586 => [[['_route' => '_591'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33634 => [[['_route' => '_599'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33687 => [[['_route' => '_787'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33734 => [[['_route' => '_848'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33787 => [[['_route' => '_796'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33835 => [[['_route' => '_877'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33885 => [[['_route' => '_809'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33934 => [[['_route' => '_817'], ['a', 'b', 'c'], null, null, false, false, null]],
-        33986 => [[['_route' => '_819'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34034 => [[['_route' => '_865'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34084 => [[['_route' => '_919'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34133 => [[['_route' => '_949'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34191 => [[['_route' => '_510'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34239 => [[['_route' => '_590'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34287 => [[['_route' => '_597'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34335 => [[['_route' => '_682'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34383 => [[['_route' => '_723'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34436 => [[['_route' => '_521'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34484 => [[['_route' => '_594'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34532 => [[['_route' => '_689'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34580 => [[['_route' => '_713'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34628 => [[['_route' => '_889'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34681 => [[['_route' => '_531'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34729 => [[['_route' => '_639'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34780 => [[['_route' => '_646'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34827 => [[['_route' => '_659'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34876 => [[['_route' => '_959'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34929 => [[['_route' => '_550'], ['a', 'b', 'c'], null, null, false, false, null]],
-        34977 => [[['_route' => '_833'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35025 => [[['_route' => '_899'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35081 => [[['_route' => '_580'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35128 => [[['_route' => '_762'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35177 => [[['_route' => '_896'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35230 => [[['_route' => '_595'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35278 => [[['_route' => '_933'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35328 => [[['_route' => '_610'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35380 => [[['_route' => '_629'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35428 => [[['_route' => '_744'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35481 => [[['_route' => '_674'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35529 => [[['_route' => '_726'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35577 => [[['_route' => '_929'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35627 => [[['_route' => '_696'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35679 => [[['_route' => '_841'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35727 => [[['_route' => '_890'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35777 => [[['_route' => '_885'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35826 => [[['_route' => '_888'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35875 => [[['_route' => '_996'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35933 => [[['_route' => '_511'], ['a', 'b', 'c'], null, null, false, false, null]],
-        35981 => [[['_route' => '_576'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36029 => [[['_route' => '_623'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36082 => [[['_route' => '_560'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36129 => [[['_route' => '_585'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36182 => [[['_route' => '_570'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36230 => [[['_route' => '_578'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36281 => [[['_route' => '_780'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36328 => [[['_route' => '_808'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36382 => [[['_route' => '_593'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36430 => [[['_route' => '_900'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36483 => [[['_route' => '_632'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36531 => [[['_route' => '_654'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36579 => [[['_route' => '_721'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36627 => [[['_route' => '_836'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36680 => [[['_route' => '_637'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36728 => [[['_route' => '_737'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36784 => [[['_route' => '_699'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36831 => [[['_route' => '_822'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36880 => [[['_route' => '_853'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36933 => [[['_route' => '_708'], ['a', 'b', 'c'], null, null, false, false, null]],
-        36981 => [[['_route' => '_871'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37034 => [[['_route' => '_752'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37082 => [[['_route' => '_989'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37132 => [[['_route' => '_855'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37184 => [[['_route' => '_858'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37232 => [[['_route' => '_898'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37282 => [[['_route' => '_903'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37331 => [[['_route' => '_909'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37380 => [[['_route' => '_950'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37441 => [[['_route' => '_512'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37488 => [[['_route' => '_691'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37537 => [[['_route' => '_686'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37587 => [[['_route' => '_527'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37639 => [[['_route' => '_541'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37687 => [[['_route' => '_956'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37740 => [[['_route' => '_555'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37788 => [[['_route' => '_681'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37841 => [[['_route' => '_556'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37889 => [[['_route' => '_802'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37939 => [[['_route' => '_558'], ['a', 'b', 'c'], null, null, false, false, null]],
-        37991 => [[['_route' => '_564'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38039 => [[['_route' => '_670'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38087 => [[['_route' => '_884'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38140 => [[['_route' => '_627'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38187 => [[['_route' => '_746'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38240 => [[['_route' => '_668'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38291 => [[['_route' => '_712'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38338 => [[['_route' => '_863'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38387 => [[['_route' => '_801'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38440 => [[['_route' => '_709'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38488 => [[['_route' => '_850'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38536 => [[['_route' => '_918'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38586 => [[['_route' => '_803'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38638 => [[['_route' => '_864'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38686 => [[['_route' => '_880'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38734 => [[['_route' => '_927'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38787 => [[['_route' => '_930'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38835 => [[['_route' => '_951'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38883 => [[['_route' => '_963'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38942 => [[['_route' => '_519'], ['a', 'b', 'c'], null, null, false, false, null]],
-        38990 => [[['_route' => '_823'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39038 => [[['_route' => '_954'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39091 => [[['_route' => '_525'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39139 => [[['_route' => '_991'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39189 => [[['_route' => '_536'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39241 => [[['_route' => '_545'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39289 => [[['_route' => '_944'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39342 => [[['_route' => '_557'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39390 => [[['_route' => '_783'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39438 => [[['_route' => '_807'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39491 => [[['_route' => '_586'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39539 => [[['_route' => '_711'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39592 => [[['_route' => '_598'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39640 => [[['_route' => '_635'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39688 => [[['_route' => '_983'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39741 => [[['_route' => '_634'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39789 => [[['_route' => '_641'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39840 => [[['_route' => '_779'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39887 => [[['_route' => '_876'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39936 => [[['_route' => '_811'], ['a', 'b', 'c'], null, null, false, false, null]],
-        39984 => [[['_route' => '_824'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40037 => [[['_route' => '_660'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40085 => [[['_route' => '_789'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40138 => [[['_route' => '_733'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40186 => [[['_route' => '_735'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40234 => [[['_route' => '_882'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40282 => [[['_route' => '_967'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40332 => [[['_route' => '_736'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40381 => [[['_route' => '_753'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40430 => [[['_route' => '_786'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40479 => [[['_route' => '_907'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40528 => [[['_route' => '_920'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40577 => [[['_route' => '_971'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40635 => [[['_route' => '_520'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40683 => [[['_route' => '_891'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40739 => [[['_route' => '_534'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40785 => [[['_route' => '_602'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40834 => [[['_route' => '_605'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40882 => [[['_route' => '_979'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40932 => [[['_route' => '_547'], ['a', 'b', 'c'], null, null, false, false, null]],
-        40987 => [[['_route' => '_549'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41034 => [[['_route' => '_755'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41083 => [[['_route' => '_922'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41131 => [[['_route' => '_977'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41184 => [[['_route' => '_565'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41232 => [[['_route' => '_926'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41282 => [[['_route' => '_571'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41331 => [[['_route' => '_581'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41380 => [[['_route' => '_619'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41429 => [[['_route' => '_636'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41481 => [[['_route' => '_679'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41529 => [[['_route' => '_866'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41577 => [[['_route' => '_973'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41630 => [[['_route' => '_690'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41678 => [[['_route' => '_775'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41731 => [[['_route' => '_722'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41779 => [[['_route' => '_906'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41827 => [[['_route' => '_946'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41877 => [[['_route' => '_788'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41929 => [[['_route' => '_828'], ['a', 'b', 'c'], null, null, false, false, null]],
-        41977 => [[['_route' => '_892'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42025 => [[['_route' => '_972'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42075 => [[['_route' => '_829'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42127 => [[['_route' => '_923'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42175 => [[['_route' => '_947'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42234 => [[['_route' => '_526'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42282 => [[['_route' => '_614'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42330 => [[['_route' => '_621'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42383 => [[['_route' => '_543'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42431 => [[['_route' => '_812'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42487 => [[['_route' => '_548'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42534 => [[['_route' => '_747'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42583 => [[['_route' => '_715'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42631 => [[['_route' => '_940'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42684 => [[['_route' => '_563'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42732 => [[['_route' => '_611'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42780 => [[['_route' => '_830'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42833 => [[['_route' => '_569'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42881 => [[['_route' => '_908'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42929 => [[['_route' => '_913'], ['a', 'b', 'c'], null, null, false, false, null]],
-        42982 => [[['_route' => '_644'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43030 => [[['_route' => '_776'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43078 => [[['_route' => '_856'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43131 => [[['_route' => '_650'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43179 => [[['_route' => '_761'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43232 => [[['_route' => '_663'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43280 => [[['_route' => '_754'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43333 => [[['_route' => '_665'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43381 => [[['_route' => '_805'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43429 => [[['_route' => '_846'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43477 => [[['_route' => '_857'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43530 => [[['_route' => '_675'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43578 => [[['_route' => '_839'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43626 => [[['_route' => '_968'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43676 => [[['_route' => '_697'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43728 => [[['_route' => '_725'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43776 => [[['_route' => '_794'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43829 => [[['_route' => '_773'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43877 => [[['_route' => '_992'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43930 => [[['_route' => '_901'], ['a', 'b', 'c'], null, null, false, false, null]],
-        43978 => [[['_route' => '_970'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44028 => [[['_route' => '_964'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44086 => [[['_route' => '_530'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44134 => [[['_route' => '_703'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44187 => [[['_route' => '_533'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44235 => [[['_route' => '_739'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44283 => [[['_route' => '_791'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44331 => [[['_route' => '_987'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44384 => [[['_route' => '_566'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44432 => [[['_route' => '_592'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44488 => [[['_route' => '_568'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44534 => [[['_route' => '_868'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44583 => [[['_route' => '_878'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44636 => [[['_route' => '_588'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44684 => [[['_route' => '_793'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44732 => [[['_route' => '_917'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44785 => [[['_route' => '_600'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44833 => [[['_route' => '_728'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44886 => [[['_route' => '_603'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44934 => [[['_route' => '_765'], ['a', 'b', 'c'], null, null, false, false, null]],
-        44987 => [[['_route' => '_607'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45035 => [[['_route' => '_676'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45083 => [[['_route' => '_804'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45136 => [[['_route' => '_609'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45184 => [[['_route' => '_961'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45232 => [[['_route' => '_980'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45282 => [[['_route' => '_714'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45334 => [[['_route' => '_730'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45382 => [[['_route' => '_806'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45430 => [[['_route' => '_825'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45478 => [[['_route' => '_879'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45526 => [[['_route' => '_893'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45576 => [[['_route' => '_928'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45628 => [[['_route' => '_932'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45676 => [[['_route' => '_958'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45726 => [[['_route' => '_984'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45784 => [[['_route' => '_538'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45832 => [[['_route' => '_993'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45882 => [[['_route' => '_542'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45934 => [[['_route' => '_551'], ['a', 'b', 'c'], null, null, false, false, null]],
-        45982 => [[['_route' => '_687'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46030 => [[['_route' => '_724'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46078 => [[['_route' => '_925'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46131 => [[['_route' => '_587'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46179 => [[['_route' => '_914'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46229 => [[['_route' => '_616'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46284 => [[['_route' => '_677'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46331 => [[['_route' => '_815'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46380 => [[['_route' => '_781'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46430 => [[['_route' => '_717'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46482 => [[['_route' => '_782'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46530 => [[['_route' => '_832'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46583 => [[['_route' => '_795'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46631 => [[['_route' => '_887'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46681 => [[['_route' => '_800'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46730 => [[['_route' => '_826'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46779 => [[['_route' => '_881'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46828 => [[['_route' => '_886'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46877 => [[['_route' => '_938'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46935 => [[['_route' => '_540'], ['a', 'b', 'c'], null, null, false, false, null]],
-        46983 => [[['_route' => '_643'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47033 => [[['_route' => '_544'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47082 => [[['_route' => '_552'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47134 => [[['_route' => '_567'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47182 => [[['_route' => '_608'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47230 => [[['_route' => '_698'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47278 => [[['_route' => '_988'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47331 => [[['_route' => '_583'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47379 => [[['_route' => '_998'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47432 => [[['_route' => '_604'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47480 => [[['_route' => '_630'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47528 => [[['_route' => '_706'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47576 => [[['_route' => '_976'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47629 => [[['_route' => '_673'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47677 => [[['_route' => '_678'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47725 => [[['_route' => '_931'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47775 => [[['_route' => '_751'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47824 => [[['_route' => '_766'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47876 => [[['_route' => '_792'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47924 => [[['_route' => '_814'], ['a', 'b', 'c'], null, null, false, false, null]],
-        47974 => [[['_route' => '_798'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48026 => [[['_route' => '_851'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48074 => [[['_route' => '_941'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48122 => [[['_route' => '_953'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48170 => [[['_route' => '_975'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48220 => [[['_route' => '_873'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48269 => [[['_route' => '_936'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48318 => [[['_route' => '_994'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48376 => [[['_route' => '_562'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48424 => [[['_route' => '_770'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48475 => [[['_route' => '_774'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48522 => [[['_route' => '_966'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48573 => [[['_route' => '_582'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48625 => [[['_route' => '_606'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48673 => [[['_route' => '_648'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48723 => [[['_route' => '_624'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48775 => [[['_route' => '_626'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48823 => [[['_route' => '_821'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48873 => [[['_route' => '_628'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48922 => [[['_route' => '_638'], ['a', 'b', 'c'], null, null, false, false, null]],
-        48974 => [[['_route' => '_640'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49022 => [[['_route' => '_990'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49072 => [[['_route' => '_705'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49121 => [[['_route' => '_757'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49176 => [[['_route' => '_785'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49223 => [[['_route' => '_875'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49270 => [[['_route' => '_894'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49319 => [[['_route' => '_945'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49375 => [[['_route' => '_816'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49422 => [[['_route' => '_872'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49471 => [[['_route' => '_921'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49519 => [[['_route' => '_960'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49567 => [[['_route' => '_974'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49620 => [[['_route' => '_835'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49668 => [[['_route' => '_934'], ['a', 'b', 'c'], null, null, false, false, null]],
-        49718 => [
-            [['_route' => '_869'], ['a', 'b', 'c'], null, null, false, false, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php
deleted file mode 100644
index dc0e5f55..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher11.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/(en|fr)/(?'
-                    .'|admin/post(?'
-                        .'|(*:32)'
-                        .'|/(?'
-                            .'|new(*:46)'
-                            .'|(\\d+)(*:58)'
-                            .'|(\\d+)/edit(*:75)'
-                            .'|(\\d+)/delete(*:94)'
-                        .')'
-                    .')'
-                    .'|blog(?'
-                        .'|(*:110)'
-                        .'|/(?'
-                            .'|rss\\.xml(*:130)'
-                            .'|p(?'
-                                .'|age/([^/]++)(*:154)'
-                                .'|osts/([^/]++)(*:175)'
-                            .')'
-                            .'|comments/(\\d+)/new(*:202)'
-                            .'|search(*:216)'
-                        .')'
-                    .')'
-                    .'|log(?'
-                        .'|in(*:234)'
-                        .'|out(*:245)'
-                    .')'
-                .')'
-                .'|/(en|fr)?(*:264)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        32 => [[['_route' => 'a', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-        46 => [[['_route' => 'b', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        58 => [[['_route' => 'c', '_locale' => 'en'], ['_locale', 'id'], null, null, false, true, null]],
-        75 => [[['_route' => 'd', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        94 => [[['_route' => 'e', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        110 => [[['_route' => 'f', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-        130 => [[['_route' => 'g', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        154 => [[['_route' => 'h', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-        175 => [[['_route' => 'i', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-        202 => [[['_route' => 'j', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-        216 => [[['_route' => 'k', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        234 => [[['_route' => 'l', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        245 => [[['_route' => 'm', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-        264 => [
-            [['_route' => 'n', '_locale' => 'en'], ['_locale'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php
deleted file mode 100644
index a675d84a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher12.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/abc([^/]++)/(?'
-                    .'|1(?'
-                        .'|(*:27)'
-                        .'|0(?'
-                            .'|(*:38)'
-                            .'|0(*:46)'
-                        .')'
-                    .')'
-                    .'|2(?'
-                        .'|(*:59)'
-                        .'|0(?'
-                            .'|(*:70)'
-                            .'|0(*:78)'
-                        .')'
-                    .')'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        27 => [[['_route' => 'r1'], ['foo'], null, null, false, false, null]],
-        38 => [[['_route' => 'r10'], ['foo'], null, null, false, false, null]],
-        46 => [[['_route' => 'r100'], ['foo'], null, null, false, false, null]],
-        59 => [[['_route' => 'r2'], ['foo'], null, null, false, false, null]],
-        70 => [[['_route' => 'r20'], ['foo'], null, null, false, false, null]],
-        78 => [
-            [['_route' => 'r200'], ['foo'], null, null, false, false, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php
deleted file mode 100644
index 63252943..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher13.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?'
-                .'|/abc([^/]++)(?'
-                    .'|(*:56)'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        56 => [
-            [['_route' => 'r1'], ['foo', 'foo'], null, null, false, true, null],
-            [['_route' => 'r2'], ['foo', 'foo'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php
deleted file mode 100644
index 13629954..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher2.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-        '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-        '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-        '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-        '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-        '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-        '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-        '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-        '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-        '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-        '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-        '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-        '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-        '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-        '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-        '/secure' => [[['_route' => 'secure'], null, null, ['https' => 0], false, false, null]],
-        '/nonsecure' => [[['_route' => 'nonsecure'], null, null, ['http' => 0], false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-            .'|(?:(?:[^./]*+\\.)++)(?'
-                .'|/foo/(baz|symfony)(*:47)'
-                .'|/bar(?'
-                    .'|/([^/]++)(*:70)'
-                    .'|head/([^/]++)(*:90)'
-                .')'
-                .'|/test/([^/]++)(?'
-                    .'|(*:115)'
-                .')'
-                .'|/([\']+)(*:131)'
-                .'|/a/(?'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:160)'
-                        .'|(*:168)'
-                    .')'
-                    .'|(.*)(*:181)'
-                    .'|b\'b/([^/]++)(?'
-                        .'|(*:204)'
-                        .'|(*:212)'
-                    .')'
-                .')'
-                .'|/multi/hello(?:/([^/]++))?(*:248)'
-                .'|/([^/]++)/b/([^/]++)(?'
-                    .'|(*:279)'
-                    .'|(*:287)'
-                .')'
-                .'|/aba/([^/]++)(*:309)'
-            .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                .'|/route1(?'
-                    .'|3/([^/]++)(*:371)'
-                    .'|4/([^/]++)(*:389)'
-                .')'
-            .')|(?i:c\\.example\\.com)\\.(?'
-                .'|/route15/([^/]++)(*:441)'
-            .')|(?:(?:[^./]*+\\.)++)(?'
-                .'|/route16/([^/]++)(*:489)'
-                .'|/a/(?'
-                    .'|a\\.\\.\\.(*:510)'
-                    .'|b/(?'
-                        .'|([^/]++)(*:531)'
-                        .'|c/([^/]++)(*:549)'
-                    .')'
-                .')'
-            .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-        70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-        90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-        115 => [
-            [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-            [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-            [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-        ],
-        131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-        160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-        168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-        181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-        204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-        212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-        248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-        279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-        287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-        309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-        371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-        389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-        441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-        489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-        510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-        531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-        549 => [
-            [['_route' => 'c'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php
deleted file mode 100644
index 4fe52b3c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher3.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/rootprefix/test' => [[['_route' => 'static'], null, null, null, false, false, null]],
-        '/with-condition' => [[['_route' => 'with-condition'], null, null, null, false, false, -1]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/rootprefix/([^/]++)(*:27)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        27 => [
-            [['_route' => 'dynamic'], ['var'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    static function ($condition, $context, $request) { // $checkCondition
-        switch ($condition) {
-            case -1: return ($context->getMethod() == "GET");
-        }
-    },
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php
deleted file mode 100644
index d0a354a9..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher4.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/just_head' => [[['_route' => 'just_head'], null, ['HEAD' => 0], null, false, false, null]],
-        '/head_and_get' => [[['_route' => 'head_and_get'], null, ['HEAD' => 0, 'GET' => 1], null, false, false, null]],
-        '/get_and_head' => [[['_route' => 'get_and_head'], null, ['GET' => 0, 'HEAD' => 1], null, false, false, null]],
-        '/post_and_head' => [[['_route' => 'post_and_head'], null, ['POST' => 0, 'HEAD' => 1], null, false, false, null]],
-        '/put_and_post' => [
-            [['_route' => 'put_and_post'], null, ['PUT' => 0, 'POST' => 1], null, false, false, null],
-            [['_route' => 'put_and_get_and_head'], null, ['PUT' => 0, 'GET' => 1, 'HEAD' => 2], null, false, false, null],
-        ],
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php
deleted file mode 100644
index 35c65097..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher5.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/a/11' => [[['_route' => 'a_first'], null, null, null, false, false, null]],
-        '/a/22' => [[['_route' => 'a_second'], null, null, null, false, false, null]],
-        '/a/333' => [[['_route' => 'a_third'], null, null, null, false, false, null]],
-        '/a/44' => [[['_route' => 'a_fourth'], null, null, null, true, false, null]],
-        '/a/55' => [[['_route' => 'a_fifth'], null, null, null, true, false, null]],
-        '/a/66' => [[['_route' => 'a_sixth'], null, null, null, true, false, null]],
-        '/nested/group/a' => [[['_route' => 'nested_a'], null, null, null, true, false, null]],
-        '/nested/group/b' => [[['_route' => 'nested_b'], null, null, null, true, false, null]],
-        '/nested/group/c' => [[['_route' => 'nested_c'], null, null, null, true, false, null]],
-        '/slashed/group' => [[['_route' => 'slashed_a'], null, null, null, true, false, null]],
-        '/slashed/group/b' => [[['_route' => 'slashed_b'], null, null, null, true, false, null]],
-        '/slashed/group/c' => [[['_route' => 'slashed_c'], null, null, null, true, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/([^/]++)(*:16)'
-                .'|/nested/([^/]++)(*:39)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        16 => [[['_route' => 'a_wildcard'], ['param'], null, null, false, true, null]],
-        39 => [
-            [['_route' => 'nested_wildcard'], ['param'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php
deleted file mode 100644
index 571e288a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher6.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-        '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-        '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-        '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-        '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-        '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-        '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-        '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:46)'
-                    .'|get\\-method/([^/]++)(*:73)'
-                    .'|head\\-method/([^/]++)(*:101)'
-                    .'|post\\-method/([^/]++)(*:130)'
-                .')'
-                .'|/not\\-trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:183)'
-                    .'|get\\-method/([^/]++)(*:211)'
-                    .'|head\\-method/([^/]++)(*:240)'
-                    .'|post\\-method/([^/]++)(*:269)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-        73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-        101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-        130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-        183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-        211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-        240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-        269 => [
-            [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php
deleted file mode 100644
index 571e288a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher7.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-        '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-        '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-        '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-        '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-        '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-        '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-        '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-        '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:46)'
-                    .'|get\\-method/([^/]++)(*:73)'
-                    .'|head\\-method/([^/]++)(*:101)'
-                    .'|post\\-method/([^/]++)(*:130)'
-                .')'
-                .'|/not\\-trailing/regex/(?'
-                    .'|no\\-methods/([^/]++)(*:183)'
-                    .'|get\\-method/([^/]++)(*:211)'
-                    .'|head\\-method/([^/]++)(*:240)'
-                    .'|post\\-method/([^/]++)(*:269)'
-                .')'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-        73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-        101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-        130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-        183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-        211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-        240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-        269 => [
-            [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php
deleted file mode 100644
index 46178959..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher8.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    false, // $matchHost
-    [ // $staticRoutes
-    ],
-    [ // $regexpList
-        0 => '{^(?'
-                .'|/(a)(*:11)'
-            .')/?$}sD',
-        11 => '{^(?'
-                .'|/(.)(*:22)'
-            .')/?$}sDu',
-        22 => '{^(?'
-                .'|/(.)(*:33)'
-            .')/?$}sD',
-    ],
-    [ // $dynamicRoutes
-        11 => [[['_route' => 'a'], ['a'], null, null, false, true, null]],
-        22 => [[['_route' => 'b'], ['a'], null, null, false, true, null]],
-        33 => [
-            [['_route' => 'c'], ['a'], null, null, false, true, null],
-            [null, null, null, null, false, false, 0],
-        ],
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php b/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php
deleted file mode 100644
index da1c8a70..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/compiled_url_matcher9.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * This file has been auto-generated
- * by the Symfony Routing Component.
- */
-
-return [
-    true, // $matchHost
-    [ // $staticRoutes
-        '/' => [
-            [['_route' => 'a'], '#^(?P<d>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-            [['_route' => 'c'], '#^(?P<e>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-            [['_route' => 'b'], 'd.c.b.a', null, null, false, false, null],
-        ],
-    ],
-    [ // $regexpList
-    ],
-    [ // $dynamicRoutes
-    ],
-    null, // $checkCondition
-];
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php
deleted file mode 100644
index df09938d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher0.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php
deleted file mode 100644
index 1d88511a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher1.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-            '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-            '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-            '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-            '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-            '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-            '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-            '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-            '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-            '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-            '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-            '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-            '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/foo/(baz|symfony)(*:47)'
-                    .'|/bar(?'
-                        .'|/([^/]++)(*:70)'
-                        .'|head/([^/]++)(*:90)'
-                    .')'
-                    .'|/test/([^/]++)(?'
-                        .'|(*:115)'
-                    .')'
-                    .'|/([\']+)(*:131)'
-                    .'|/a/(?'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:160)'
-                            .'|(*:168)'
-                        .')'
-                        .'|(.*)(*:181)'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:204)'
-                            .'|(*:212)'
-                        .')'
-                    .')'
-                    .'|/multi/hello(?:/([^/]++))?(*:248)'
-                    .'|/([^/]++)/b/([^/]++)(?'
-                        .'|(*:279)'
-                        .'|(*:287)'
-                    .')'
-                    .'|/aba/([^/]++)(*:309)'
-                .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                    .'|/route1(?'
-                        .'|3/([^/]++)(*:371)'
-                        .'|4/([^/]++)(*:389)'
-                    .')'
-                .')|(?i:c\\.example\\.com)\\.(?'
-                    .'|/route15/([^/]++)(*:441)'
-                .')|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/route16/([^/]++)(*:489)'
-                    .'|/a/(?'
-                        .'|a\\.\\.\\.(*:510)'
-                        .'|b/(?'
-                            .'|([^/]++)(*:531)'
-                            .'|c/([^/]++)(*:549)'
-                        .')'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-            70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-            90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-            115 => [
-                [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-                [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-                [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-            ],
-            131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-            160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-            168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-            181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-            204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-            212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-            248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-            279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-            287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-            309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-            371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-            389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-            441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-            489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-            510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-            531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-            549 => [
-                [['_route' => 'c'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php
deleted file mode 100644
index 232030cc..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher10.php
+++ /dev/null
@@ -1,2779 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/c(?'
-                        .'|f(?'
-                            .'|cd20/([^/]++)/([^/]++)/([^/]++)/cfcd20(*:54)'
-                            .'|e(?'
-                                .'|cdb/([^/]++)/([^/]++)/([^/]++)/cfecdb(*:102)'
-                                .'|e39/([^/]++)/([^/]++)/([^/]++)/cfee39(*:147)'
-                            .')'
-                            .'|a086/([^/]++)/([^/]++)/([^/]++)/cfa086(*:194)'
-                            .'|004f/([^/]++)/([^/]++)/([^/]++)/cf004f(*:240)'
-                        .')'
-                        .'|4(?'
-                            .'|ca42/([^/]++)/([^/]++)/([^/]++)/c4ca42(*:291)'
-                            .'|5147/([^/]++)/([^/]++)/([^/]++)/c45147(*:337)'
-                            .'|1000/([^/]++)/([^/]++)/([^/]++)/c41000(*:383)'
-                        .')'
-                        .'|8(?'
-                            .'|1e72/([^/]++)/([^/]++)/([^/]++)/c81e72(*:434)'
-                            .'|ffe9/([^/]++)/([^/]++)/([^/]++)/c8ffe9(*:480)'
-                            .'|6a7e/([^/]++)/([^/]++)/([^/]++)/c86a7e(*:526)'
-                        .')'
-                        .'|9(?'
-                            .'|f0f8/([^/]++)/([^/]++)/([^/]++)/c9f0f8(*:577)'
-                            .'|e107/([^/]++)/([^/]++)/([^/]++)/c9e107(*:623)'
-                        .')'
-                        .'|2(?'
-                            .'|0(?'
-                                .'|ad4/([^/]++)/([^/]++)/([^/]++)/c20ad4(*:677)'
-                                .'|3d8/([^/]++)/([^/]++)/([^/]++)/c203d8(*:722)'
-                            .')'
-                            .'|4cd7/([^/]++)/([^/]++)/([^/]++)/c24cd7(*:769)'
-                        .')'
-                        .'|5(?'
-                            .'|1ce4/([^/]++)/([^/]++)/([^/]++)/c51ce4(*:820)'
-                            .'|2f1b/([^/]++)/([^/]++)/([^/]++)/c52f1b(*:866)'
-                            .'|ff25/([^/]++)/([^/]++)/([^/]++)/c5ff25(*:912)'
-                        .')'
-                        .'|7(?'
-                            .'|4d97/([^/]++)/([^/]++)/([^/]++)/c74d97(*:963)'
-                            .'|e124/([^/]++)/([^/]++)/([^/]++)/c7e124(*:1009)'
-                        .')'
-                        .'|16a53/([^/]++)/([^/]++)/([^/]++)/c16a53(*:1058)'
-                        .'|0(?'
-                            .'|c7c7/([^/]++)/([^/]++)/([^/]++)/c0c7c7(*:1109)'
-                            .'|e190/([^/]++)/([^/]++)/([^/]++)/c0e190(*:1156)'
-                            .'|42f4/([^/]++)/([^/]++)/([^/]++)/c042f4(*:1203)'
-                            .'|58f5/([^/]++)/([^/]++)/([^/]++)/c058f5(*:1250)'
-                        .')'
-                        .'|e(?'
-                            .'|debb/([^/]++)/([^/]++)/([^/]++)/cedebb(*:1302)'
-                            .'|e631/([^/]++)/([^/]++)/([^/]++)/cee631(*:1349)'
-                        .')'
-                        .'|a(?'
-                            .'|46c1/([^/]++)/([^/]++)/([^/]++)/ca46c1(*:1401)'
-                            .'|f1a3/([^/]++)/([^/]++)/([^/]++)/caf1a3(*:1448)'
-                        .')'
-                        .'|b70ab/([^/]++)/([^/]++)/([^/]++)/cb70ab(*:1497)'
-                        .'|d0069/([^/]++)/([^/]++)/([^/]++)/cd0069(*:1545)'
-                        .'|3(?'
-                            .'|e878/([^/]++)/([^/]++)/([^/]++)/c3e878(*:1596)'
-                            .'|c59e/([^/]++)/([^/]++)/([^/]++)/c3c59e(*:1643)'
-                        .')'
-                    .')'
-                    .'|/e(?'
-                        .'|c(?'
-                            .'|cbc8/([^/]++)/([^/]++)/([^/]++)/eccbc8(*:1701)'
-                            .'|8(?'
-                                .'|956/([^/]++)/([^/]++)/([^/]++)/ec8956(*:1751)'
-                                .'|ce6/([^/]++)/([^/]++)/([^/]++)/ec8ce6(*:1797)'
-                            .')'
-                            .'|5dec/([^/]++)/([^/]++)/([^/]++)/ec5dec(*:1845)'
-                        .')'
-                        .'|4(?'
-                            .'|da3b/([^/]++)/([^/]++)/([^/]++)/e4da3b(*:1897)'
-                            .'|a622/([^/]++)/([^/]++)/([^/]++)/e4a622(*:1944)'
-                            .'|6de7/([^/]++)/([^/]++)/([^/]++)/e46de7(*:1991)'
-                            .'|4fea/([^/]++)/([^/]++)/([^/]++)/e44fea(*:2038)'
-                        .')'
-                        .'|3(?'
-                            .'|6985/([^/]++)/([^/]++)/([^/]++)/e36985(*:2090)'
-                            .'|796a/([^/]++)/([^/]++)/([^/]++)/e3796a(*:2137)'
-                        .')'
-                        .'|a(?'
-                            .'|5d2f/([^/]++)/([^/]++)/([^/]++)/ea5d2f(*:2189)'
-                            .'|e27d/([^/]++)/([^/]++)/([^/]++)/eae27d(*:2236)'
-                        .')'
-                        .'|2(?'
-                            .'|c(?'
-                                .'|420/([^/]++)/([^/]++)/([^/]++)/e2c420(*:2291)'
-                                .'|0be/([^/]++)/([^/]++)/([^/]++)/e2c0be(*:2337)'
-                            .')'
-                            .'|ef52/([^/]++)/([^/]++)/([^/]++)/e2ef52(*:2385)'
-                        .')'
-                        .'|d(?'
-                            .'|3d2c/([^/]++)/([^/]++)/([^/]++)/ed3d2c(*:2437)'
-                            .'|a80a/([^/]++)/([^/]++)/([^/]++)/eda80a(*:2484)'
-                            .'|dea8/([^/]++)/([^/]++)/([^/]++)/eddea8(*:2531)'
-                        .')'
-                        .'|b(?'
-                            .'|16(?'
-                                .'|0d/([^/]++)/([^/]++)/([^/]++)/eb160d(*:2586)'
-                                .'|37/([^/]++)/([^/]++)/([^/]++)/eb1637(*:2631)'
-                            .')'
-                            .'|a0dc/([^/]++)/([^/]++)/([^/]++)/eba0dc(*:2679)'
-                        .')'
-                        .'|0(?'
-                            .'|0da0/([^/]++)/([^/]++)/([^/]++)/e00da0(*:2731)'
-                            .'|c641/([^/]++)/([^/]++)/([^/]++)/e0c641(*:2778)'
-                        .')'
-                        .'|e(?'
-                            .'|cca5/([^/]++)/([^/]++)/([^/]++)/eecca5(*:2830)'
-                            .'|d5af/([^/]++)/([^/]++)/([^/]++)/eed5af(*:2877)'
-                        .')'
-                        .'|96ed4/([^/]++)/([^/]++)/([^/]++)/e96ed4(*:2926)'
-                        .'|1(?'
-                            .'|6542/([^/]++)/([^/]++)/([^/]++)/e16542(*:2977)'
-                            .'|e32e/([^/]++)/([^/]++)/([^/]++)/e1e32e(*:3024)'
-                        .')'
-                        .'|56954/([^/]++)/([^/]++)/([^/]++)/e56954(*:3073)'
-                        .'|f(?'
-                            .'|0d39/([^/]++)/([^/]++)/([^/]++)/ef0d39(*:3124)'
-                            .'|e937/([^/]++)/([^/]++)/([^/]++)/efe937(*:3171)'
-                            .'|575e/([^/]++)/([^/]++)/([^/]++)/ef575e(*:3218)'
-                        .')'
-                        .'|7b24b/([^/]++)/([^/]++)/([^/]++)/e7b24b(*:3267)'
-                        .'|836d8/([^/]++)/([^/]++)/([^/]++)/e836d8(*:3315)'
-                    .')'
-                    .'|/a(?'
-                        .'|8(?'
-                            .'|7ff6/([^/]++)/([^/]++)/([^/]++)/a87ff6(*:3372)'
-                            .'|baa5/([^/]++)/([^/]++)/([^/]++)/a8baa5(*:3419)'
-                            .'|f15e/([^/]++)/([^/]++)/([^/]++)/a8f15e(*:3466)'
-                            .'|c88a/([^/]++)/([^/]++)/([^/]++)/a8c88a(*:3513)'
-                            .'|abb4/([^/]++)/([^/]++)/([^/]++)/a8abb4(*:3560)'
-                        .')'
-                        .'|a(?'
-                            .'|b323/([^/]++)/([^/]++)/([^/]++)/aab323(*:3612)'
-                            .'|942a/([^/]++)/([^/]++)/([^/]++)/aa942a(*:3659)'
-                        .')'
-                        .'|5(?'
-                            .'|bfc9/([^/]++)/([^/]++)/([^/]++)/a5bfc9(*:3711)'
-                            .'|771b/([^/]++)/([^/]++)/([^/]++)/a5771b(*:3758)'
-                            .'|e001/([^/]++)/([^/]++)/([^/]++)/a5e001(*:3805)'
-                            .'|97e5/([^/]++)/([^/]++)/([^/]++)/a597e5(*:3852)'
-                            .'|16a8/([^/]++)/([^/]++)/([^/]++)/a516a8(*:3899)'
-                        .')'
-                        .'|1d0c6/([^/]++)/([^/]++)/([^/]++)/a1d0c6(*:3948)'
-                        .'|6(?'
-                            .'|84ec/([^/]++)/([^/]++)/([^/]++)/a684ec(*:3999)'
-                            .'|6658/([^/]++)/([^/]++)/([^/]++)/a66658(*:4046)'
-                        .')'
-                        .'|3(?'
-                            .'|f390/([^/]++)/([^/]++)/([^/]++)/a3f390(*:4098)'
-                            .'|c65c/([^/]++)/([^/]++)/([^/]++)/a3c65c(*:4145)'
-                        .')'
-                        .'|d(?'
-                            .'|61ab/([^/]++)/([^/]++)/([^/]++)/ad61ab(*:4197)'
-                            .'|13a2/([^/]++)/([^/]++)/([^/]++)/ad13a2(*:4244)'
-                            .'|972f/([^/]++)/([^/]++)/([^/]++)/ad972f(*:4291)'
-                        .')'
-                        .'|c(?'
-                            .'|627a/([^/]++)/([^/]++)/([^/]++)/ac627a(*:4343)'
-                            .'|1dd2/([^/]++)/([^/]++)/([^/]++)/ac1dd2(*:4390)'
-                        .')'
-                        .'|9(?'
-                            .'|7da6/([^/]++)/([^/]++)/([^/]++)/a97da6(*:4442)'
-                            .'|6b65/([^/]++)/([^/]++)/([^/]++)/a96b65(*:4489)'
-                        .')'
-                        .'|0(?'
-                            .'|a080/([^/]++)/([^/]++)/([^/]++)/a0a080(*:4541)'
-                            .'|2ffd/([^/]++)/([^/]++)/([^/]++)/a02ffd(*:4588)'
-                            .'|1a03/([^/]++)/([^/]++)/([^/]++)/a01a03(*:4635)'
-                        .')'
-                        .'|4(?'
-                            .'|a042/([^/]++)/([^/]++)/([^/]++)/a4a042(*:4687)'
-                            .'|f236/([^/]++)/([^/]++)/([^/]++)/a4f236(*:4734)'
-                            .'|9e94/([^/]++)/([^/]++)/([^/]++)/a49e94(*:4781)'
-                        .')'
-                        .'|2557a/([^/]++)/([^/]++)/([^/]++)/a2557a(*:4830)'
-                        .'|b817c/([^/]++)/([^/]++)/([^/]++)/ab817c(*:4878)'
-                    .')'
-                    .'|/1(?'
-                        .'|6(?'
-                            .'|7909/([^/]++)/([^/]++)/([^/]++)/167909(*:4935)'
-                            .'|a5cd/([^/]++)/([^/]++)/([^/]++)/16a5cd(*:4982)'
-                            .'|51cf/([^/]++)/([^/]++)/([^/]++)/1651cf(*:5029)'
-                        .')'
-                        .'|f(?'
-                            .'|0e3d/([^/]++)/([^/]++)/([^/]++)/1f0e3d(*:5081)'
-                            .'|f(?'
-                                .'|1de/([^/]++)/([^/]++)/([^/]++)/1ff1de(*:5131)'
-                                .'|8a7/([^/]++)/([^/]++)/([^/]++)/1ff8a7(*:5177)'
-                            .')'
-                        .')'
-                        .'|8(?'
-                            .'|2be0/([^/]++)/([^/]++)/([^/]++)/182be0(*:5230)'
-                            .'|d804/([^/]++)/([^/]++)/([^/]++)/18d804(*:5277)'
-                            .'|9977/([^/]++)/([^/]++)/([^/]++)/189977(*:5324)'
-                        .')'
-                        .'|c(?'
-                            .'|383c/([^/]++)/([^/]++)/([^/]++)/1c383c(*:5376)'
-                            .'|9ac0/([^/]++)/([^/]++)/([^/]++)/1c9ac0(*:5423)'
-                        .')'
-                        .'|9(?'
-                            .'|ca14/([^/]++)/([^/]++)/([^/]++)/19ca14(*:5475)'
-                            .'|f3cd/([^/]++)/([^/]++)/([^/]++)/19f3cd(*:5522)'
-                        .')'
-                        .'|7(?'
-                            .'|e621/([^/]++)/([^/]++)/([^/]++)/17e621(*:5574)'
-                            .'|0000/([^/]++)/([^/]++)/([^/]++)/170000(*:5621)'
-                            .'|d63b/([^/]++)/([^/]++)/([^/]++)/17d63b(*:5668)'
-                        .')'
-                        .'|4(?'
-                            .'|bfa6/([^/]++)/([^/]++)/([^/]++)/14bfa6(*:5720)'
-                            .'|0f69/([^/]++)/([^/]++)/([^/]++)/140f69(*:5767)'
-                            .'|9e96/([^/]++)/([^/]++)/([^/]++)/149e96(*:5814)'
-                            .'|2949/([^/]++)/([^/]++)/([^/]++)/142949(*:5861)'
-                        .')'
-                        .'|a(?'
-                            .'|fa34/([^/]++)/([^/]++)/([^/]++)/1afa34(*:5913)'
-                            .'|5b1e/([^/]++)/([^/]++)/([^/]++)/1a5b1e(*:5960)'
-                        .')'
-                        .'|3(?'
-                            .'|8(?'
-                                .'|597/([^/]++)/([^/]++)/([^/]++)/138597(*:6015)'
-                                .'|bb0/([^/]++)/([^/]++)/([^/]++)/138bb0(*:6061)'
-                            .')'
-                            .'|f(?'
-                                .'|e9d/([^/]++)/([^/]++)/([^/]++)/13fe9d(*:6112)'
-                                .'|989/([^/]++)/([^/]++)/([^/]++)/13f989(*:6158)'
-                                .'|3cf/([^/]++)/([^/]++)/([^/]++)/13f3cf(*:6204)'
-                            .')'
-                        .')'
-                        .'|d7f7a/([^/]++)/([^/]++)/([^/]++)/1d7f7a(*:6254)'
-                        .'|5(?'
-                            .'|34b7/([^/]++)/([^/]++)/([^/]++)/1534b7(*:6305)'
-                            .'|8f30/([^/]++)/([^/]++)/([^/]++)/158f30(*:6352)'
-                            .'|4384/([^/]++)/([^/]++)/([^/]++)/154384(*:6399)'
-                            .'|d4e8/([^/]++)/([^/]++)/([^/]++)/15d4e8(*:6446)'
-                        .')'
-                        .'|1(?'
-                            .'|5f89/([^/]++)/([^/]++)/([^/]++)/115f89(*:6498)'
-                            .'|b984/([^/]++)/([^/]++)/([^/]++)/11b984(*:6545)'
-                        .')'
-                        .'|068c6/([^/]++)/([^/]++)/([^/]++)/1068c6(*:6594)'
-                        .'|be3bc/([^/]++)/([^/]++)/([^/]++)/1be3bc(*:6642)'
-                    .')'
-                    .'|/8(?'
-                        .'|f(?'
-                            .'|1(?'
-                                .'|4e4/([^/]++)/([^/]++)/([^/]++)/8f14e4(*:6702)'
-                                .'|21c/([^/]++)/([^/]++)/([^/]++)/8f121c(*:6748)'
-                            .')'
-                            .'|8551/([^/]++)/([^/]++)/([^/]++)/8f8551(*:6796)'
-                            .'|5329/([^/]++)/([^/]++)/([^/]++)/8f5329(*:6843)'
-                            .'|e009/([^/]++)/([^/]++)/([^/]++)/8fe009(*:6890)'
-                        .')'
-                        .'|e(?'
-                            .'|296a/([^/]++)/([^/]++)/([^/]++)/8e296a(*:6942)'
-                            .'|98d8/([^/]++)/([^/]++)/([^/]++)/8e98d8(*:6989)'
-                            .'|fb10/([^/]++)/([^/]++)/([^/]++)/8efb10(*:7036)'
-                            .'|6b42/([^/]++)/([^/]++)/([^/]++)/8e6b42(*:7083)'
-                        .')'
-                        .'|61398/([^/]++)/([^/]++)/([^/]++)/861398(*:7132)'
-                        .'|1(?'
-                            .'|2b4b/([^/]++)/([^/]++)/([^/]++)/812b4b(*:7183)'
-                            .'|9f46/([^/]++)/([^/]++)/([^/]++)/819f46(*:7230)'
-                            .'|6b11/([^/]++)/([^/]++)/([^/]++)/816b11(*:7277)'
-                        .')'
-                        .'|d(?'
-                            .'|5e95/([^/]++)/([^/]++)/([^/]++)/8d5e95(*:7329)'
-                            .'|3bba/([^/]++)/([^/]++)/([^/]++)/8d3bba(*:7376)'
-                            .'|d48d/([^/]++)/([^/]++)/([^/]++)/8dd48d(*:7423)'
-                            .'|7d8e/([^/]++)/([^/]++)/([^/]++)/8d7d8e(*:7470)'
-                        .')'
-                        .'|2(?'
-                            .'|aa4b/([^/]++)/([^/]++)/([^/]++)/82aa4b(*:7522)'
-                            .'|1(?'
-                                .'|612/([^/]++)/([^/]++)/([^/]++)/821612(*:7572)'
-                                .'|fa7/([^/]++)/([^/]++)/([^/]++)/821fa7(*:7618)'
-                            .')'
-                            .'|cec9/([^/]++)/([^/]++)/([^/]++)/82cec9(*:7666)'
-                        .')'
-                        .'|5(?'
-                            .'|d8ce/([^/]++)/([^/]++)/([^/]++)/85d8ce(*:7718)'
-                            .'|4d(?'
-                                .'|6f/([^/]++)/([^/]++)/([^/]++)/854d6f(*:7768)'
-                                .'|9f/([^/]++)/([^/]++)/([^/]++)/854d9f(*:7813)'
-                            .')'
-                        .')'
-                        .'|4d9ee/([^/]++)/([^/]++)/([^/]++)/84d9ee(*:7863)'
-                        .'|c(?'
-                            .'|19f5/([^/]++)/([^/]++)/([^/]++)/8c19f5(*:7914)'
-                            .'|b22b/([^/]++)/([^/]++)/([^/]++)/8cb22b(*:7961)'
-                        .')'
-                        .'|39ab4/([^/]++)/([^/]++)/([^/]++)/839ab4(*:8010)'
-                        .'|9f0fd/([^/]++)/([^/]++)/([^/]++)/89f0fd(*:8058)'
-                        .'|bf121/([^/]++)/([^/]++)/([^/]++)/8bf121(*:8106)'
-                        .'|77a9b/([^/]++)/([^/]++)/([^/]++)/877a9b(*:8154)'
-                    .')'
-                    .'|/4(?'
-                        .'|5(?'
-                            .'|c48c/([^/]++)/([^/]++)/([^/]++)/45c48c(*:8211)'
-                            .'|fbc6/([^/]++)/([^/]++)/([^/]++)/45fbc6(*:8258)'
-                        .')'
-                        .'|e732c/([^/]++)/([^/]++)/([^/]++)/4e732c(*:8307)'
-                        .'|4f683/([^/]++)/([^/]++)/([^/]++)/44f683(*:8355)'
-                        .'|3(?'
-                            .'|ec51/([^/]++)/([^/]++)/([^/]++)/43ec51(*:8406)'
-                            .'|2aca/([^/]++)/([^/]++)/([^/]++)/432aca(*:8453)'
-                        .')'
-                        .'|c5(?'
-                            .'|6ff/([^/]++)/([^/]++)/([^/]++)/4c56ff(*:8505)'
-                            .'|bde/([^/]++)/([^/]++)/([^/]++)/4c5bde(*:8551)'
-                        .')'
-                        .'|2(?'
-                            .'|a0e1/([^/]++)/([^/]++)/([^/]++)/42a0e1(*:8603)'
-                            .'|e7aa/([^/]++)/([^/]++)/([^/]++)/42e7aa(*:8650)'
-                            .'|998c/([^/]++)/([^/]++)/([^/]++)/42998c(*:8697)'
-                            .'|8fca/([^/]++)/([^/]++)/([^/]++)/428fca(*:8744)'
-                        .')'
-                        .'|7(?'
-                            .'|d1e9/([^/]++)/([^/]++)/([^/]++)/47d1e9(*:8796)'
-                            .'|34ba/([^/]++)/([^/]++)/([^/]++)/4734ba(*:8843)'
-                        .')'
-                        .'|6ba9f/([^/]++)/([^/]++)/([^/]++)/46ba9f(*:8892)'
-                        .'|8aedb/([^/]++)/([^/]++)/([^/]++)/48aedb(*:8940)'
-                        .'|9(?'
-                            .'|182f/([^/]++)/([^/]++)/([^/]++)/49182f(*:8991)'
-                            .'|6e05/([^/]++)/([^/]++)/([^/]++)/496e05(*:9038)'
-                            .'|ae49/([^/]++)/([^/]++)/([^/]++)/49ae49(*:9085)'
-                        .')'
-                        .'|0008b/([^/]++)/([^/]++)/([^/]++)/40008b(*:9134)'
-                        .'|1(?'
-                            .'|f1f1/([^/]++)/([^/]++)/([^/]++)/41f1f1(*:9185)'
-                            .'|ae36/([^/]++)/([^/]++)/([^/]++)/41ae36(*:9232)'
-                        .')'
-                        .'|f(?'
-                            .'|6ffe/([^/]++)/([^/]++)/([^/]++)/4f6ffe(*:9284)'
-                            .'|4adc/([^/]++)/([^/]++)/([^/]++)/4f4adc(*:9331)'
-                        .')'
-                    .')'
-                    .'|/d(?'
-                        .'|3(?'
-                            .'|d944/([^/]++)/([^/]++)/([^/]++)/d3d944(*:9389)'
-                            .'|9577/([^/]++)/([^/]++)/([^/]++)/d39577(*:9436)'
-                            .'|4ab1/([^/]++)/([^/]++)/([^/]++)/d34ab1(*:9483)'
-                        .')'
-                        .'|6(?'
-                            .'|7d8a/([^/]++)/([^/]++)/([^/]++)/d67d8a(*:9535)'
-                            .'|4592/([^/]++)/([^/]++)/([^/]++)/d64592(*:9582)'
-                            .'|baf6/([^/]++)/([^/]++)/([^/]++)/d6baf6(*:9629)'
-                            .'|1e4b/([^/]++)/([^/]++)/([^/]++)/d61e4b(*:9676)'
-                        .')'
-                        .'|9(?'
-                            .'|d4f4/([^/]++)/([^/]++)/([^/]++)/d9d4f4(*:9728)'
-                            .'|6409/([^/]++)/([^/]++)/([^/]++)/d96409(*:9775)'
-                            .'|47bf/([^/]++)/([^/]++)/([^/]++)/d947bf(*:9822)'
-                            .'|fc5b/([^/]++)/([^/]++)/([^/]++)/d9fc5b(*:9869)'
-                        .')'
-                        .'|8(?'
-                            .'|2c8d/([^/]++)/([^/]++)/([^/]++)/d82c8d(*:9921)'
-                            .'|1f9c/([^/]++)/([^/]++)/([^/]++)/d81f9c(*:9968)'
-                        .')'
-                        .'|2(?'
-                            .'|ddea/([^/]++)/([^/]++)/([^/]++)/d2ddea(*:10020)'
-                            .'|96c1/([^/]++)/([^/]++)/([^/]++)/d296c1(*:10068)'
-                        .')'
-                        .'|0(?'
-                            .'|9bf4/([^/]++)/([^/]++)/([^/]++)/d09bf4(*:10121)'
-                            .'|7e70/([^/]++)/([^/]++)/([^/]++)/d07e70(*:10169)'
-                        .')'
-                        .'|1(?'
-                            .'|f(?'
-                                .'|e17/([^/]++)/([^/]++)/([^/]++)/d1fe17(*:10225)'
-                                .'|491/([^/]++)/([^/]++)/([^/]++)/d1f491(*:10272)'
-                                .'|255/([^/]++)/([^/]++)/([^/]++)/d1f255(*:10319)'
-                            .')'
-                            .'|c38a/([^/]++)/([^/]++)/([^/]++)/d1c38a(*:10368)'
-                            .'|8f65/([^/]++)/([^/]++)/([^/]++)/d18f65(*:10416)'
-                        .')'
-                        .'|a4fb5/([^/]++)/([^/]++)/([^/]++)/da4fb5(*:10466)'
-                        .'|b8e1a/([^/]++)/([^/]++)/([^/]++)/db8e1a(*:10515)'
-                        .'|709f3/([^/]++)/([^/]++)/([^/]++)/d709f3(*:10564)'
-                        .'|c(?'
-                            .'|912a/([^/]++)/([^/]++)/([^/]++)/dc912a(*:10616)'
-                            .'|6a64/([^/]++)/([^/]++)/([^/]++)/dc6a64(*:10664)'
-                        .')'
-                        .'|db306/([^/]++)/([^/]++)/([^/]++)/ddb306(*:10714)'
-                    .')'
-                    .'|/6(?'
-                        .'|5(?'
-                            .'|12bd/([^/]++)/([^/]++)/([^/]++)/6512bd(*:10772)'
-                            .'|b9ee/([^/]++)/([^/]++)/([^/]++)/65b9ee(*:10820)'
-                            .'|ded5/([^/]++)/([^/]++)/([^/]++)/65ded5(*:10868)'
-                        .')'
-                        .'|f(?'
-                            .'|4922/([^/]++)/([^/]++)/([^/]++)/6f4922(*:10921)'
-                            .'|3ef7/([^/]++)/([^/]++)/([^/]++)/6f3ef7(*:10969)'
-                            .'|aa80/([^/]++)/([^/]++)/([^/]++)/6faa80(*:11017)'
-                        .')'
-                        .'|e(?'
-                            .'|a(?'
-                                .'|9ab/([^/]++)/([^/]++)/([^/]++)/6ea9ab(*:11073)'
-                                .'|2ef/([^/]++)/([^/]++)/([^/]++)/6ea2ef(*:11120)'
-                            .')'
-                            .'|cbdd/([^/]++)/([^/]++)/([^/]++)/6ecbdd(*:11169)'
-                        .')'
-                        .'|3(?'
-                            .'|64d3/([^/]++)/([^/]++)/([^/]++)/6364d3(*:11222)'
-                            .'|dc7e/([^/]++)/([^/]++)/([^/]++)/63dc7e(*:11270)'
-                            .'|923f/([^/]++)/([^/]++)/([^/]++)/63923f(*:11318)'
-                        .')'
-                        .'|c(?'
-                            .'|8349/([^/]++)/([^/]++)/([^/]++)/6c8349(*:11371)'
-                            .'|4b76/([^/]++)/([^/]++)/([^/]++)/6c4b76(*:11419)'
-                            .'|dd60/([^/]++)/([^/]++)/([^/]++)/6cdd60(*:11467)'
-                            .'|9882/([^/]++)/([^/]++)/([^/]++)/6c9882(*:11515)'
-                            .'|524f/([^/]++)/([^/]++)/([^/]++)/6c524f(*:11563)'
-                        .')'
-                        .'|7(?'
-                            .'|c6a1/([^/]++)/([^/]++)/([^/]++)/67c6a1(*:11616)'
-                            .'|f7fb/([^/]++)/([^/]++)/([^/]++)/67f7fb(*:11664)'
-                        .')'
-                        .'|42e92/([^/]++)/([^/]++)/([^/]++)/642e92(*:11714)'
-                        .'|6(?'
-                            .'|f041/([^/]++)/([^/]++)/([^/]++)/66f041(*:11766)'
-                            .'|808e/([^/]++)/([^/]++)/([^/]++)/66808e(*:11814)'
-                            .'|3682/([^/]++)/([^/]++)/([^/]++)/663682(*:11862)'
-                        .')'
-                        .'|8(?'
-                            .'|d30a/([^/]++)/([^/]++)/([^/]++)/68d30a(*:11915)'
-                            .'|8396/([^/]++)/([^/]++)/([^/]++)/688396(*:11963)'
-                            .'|5545/([^/]++)/([^/]++)/([^/]++)/685545(*:12011)'
-                            .'|ce19/([^/]++)/([^/]++)/([^/]++)/68ce19(*:12059)'
-                        .')'
-                        .'|9(?'
-                            .'|74ce/([^/]++)/([^/]++)/([^/]++)/6974ce(*:12112)'
-                            .'|8d51/([^/]++)/([^/]++)/([^/]++)/698d51(*:12160)'
-                            .'|adc1/([^/]++)/([^/]++)/([^/]++)/69adc1(*:12208)'
-                            .'|cb3e/([^/]++)/([^/]++)/([^/]++)/69cb3e(*:12256)'
-                        .')'
-                        .'|da(?'
-                            .'|900/([^/]++)/([^/]++)/([^/]++)/6da900(*:12309)'
-                            .'|37d/([^/]++)/([^/]++)/([^/]++)/6da37d(*:12356)'
-                        .')'
-                        .'|21bf6/([^/]++)/([^/]++)/([^/]++)/621bf6(*:12406)'
-                        .'|a9aed/([^/]++)/([^/]++)/([^/]++)/6a9aed(*:12455)'
-                    .')'
-                    .'|/9(?'
-                        .'|b(?'
-                            .'|f31c/([^/]++)/([^/]++)/([^/]++)/9bf31c(*:12513)'
-                            .'|8619/([^/]++)/([^/]++)/([^/]++)/9b8619(*:12561)'
-                            .'|04d1/([^/]++)/([^/]++)/([^/]++)/9b04d1(*:12609)'
-                            .'|e40c/([^/]++)/([^/]++)/([^/]++)/9be40c(*:12657)'
-                            .'|70e8/([^/]++)/([^/]++)/([^/]++)/9b70e8(*:12705)'
-                        .')'
-                        .'|8(?'
-                            .'|f137/([^/]++)/([^/]++)/([^/]++)/98f137(*:12758)'
-                            .'|dce8/([^/]++)/([^/]++)/([^/]++)/98dce8(*:12806)'
-                            .'|72ed/([^/]++)/([^/]++)/([^/]++)/9872ed(*:12854)'
-                            .'|b297/([^/]++)/([^/]++)/([^/]++)/98b297(*:12902)'
-                        .')'
-                        .'|a(?'
-                            .'|1158/([^/]++)/([^/]++)/([^/]++)/9a1158(*:12955)'
-                            .'|9687/([^/]++)/([^/]++)/([^/]++)/9a9687(*:13003)'
-                        .')'
-                        .'|f(?'
-                            .'|6140/([^/]++)/([^/]++)/([^/]++)/9f6140(*:13056)'
-                            .'|c3d7/([^/]++)/([^/]++)/([^/]++)/9fc3d7(*:13104)'
-                            .'|d818/([^/]++)/([^/]++)/([^/]++)/9fd818(*:13152)'
-                        .')'
-                        .'|7(?'
-                            .'|78d5/([^/]++)/([^/]++)/([^/]++)/9778d5(*:13205)'
-                            .'|6652/([^/]++)/([^/]++)/([^/]++)/976652(*:13253)'
-                            .'|9d47/([^/]++)/([^/]++)/([^/]++)/979d47(*:13301)'
-                        .')'
-                        .'|3db85/([^/]++)/([^/]++)/([^/]++)/93db85(*:13351)'
-                        .'|2c(?'
-                            .'|c22/([^/]++)/([^/]++)/([^/]++)/92cc22(*:13403)'
-                            .'|8c9/([^/]++)/([^/]++)/([^/]++)/92c8c9(*:13450)'
-                        .')'
-                        .'|03ce9/([^/]++)/([^/]++)/([^/]++)/903ce9(*:13500)'
-                        .'|6da2f/([^/]++)/([^/]++)/([^/]++)/96da2f(*:13549)'
-                        .'|d(?'
-                            .'|cb88/([^/]++)/([^/]++)/([^/]++)/9dcb88(*:13601)'
-                            .'|fcd5/([^/]++)/([^/]++)/([^/]++)/9dfcd5(*:13649)'
-                            .'|e6d1/([^/]++)/([^/]++)/([^/]++)/9de6d1(*:13697)'
-                        .')'
-                        .'|c(?'
-                            .'|fdf1/([^/]++)/([^/]++)/([^/]++)/9cfdf1(*:13750)'
-                            .'|838d/([^/]++)/([^/]++)/([^/]++)/9c838d(*:13798)'
-                        .')'
-                        .'|18(?'
-                            .'|890/([^/]++)/([^/]++)/([^/]++)/918890(*:13851)'
-                            .'|317/([^/]++)/([^/]++)/([^/]++)/918317(*:13898)'
-                        .')'
-                        .'|4(?'
-                            .'|f6d7/([^/]++)/([^/]++)/([^/]++)/94f6d7(*:13951)'
-                            .'|1e1a/([^/]++)/([^/]++)/([^/]++)/941e1a(*:13999)'
-                            .'|31c8/([^/]++)/([^/]++)/([^/]++)/9431c8(*:14047)'
-                            .'|61cc/([^/]++)/([^/]++)/([^/]++)/9461cc(*:14095)'
-                        .')'
-                        .'|50a41/([^/]++)/([^/]++)/([^/]++)/950a41(*:14145)'
-                    .')'
-                    .'|/7(?'
-                        .'|0(?'
-                            .'|efdf/([^/]++)/([^/]++)/([^/]++)/70efdf(*:14203)'
-                            .'|5f21/([^/]++)/([^/]++)/([^/]++)/705f21(*:14251)'
-                            .'|c639/([^/]++)/([^/]++)/([^/]++)/70c639(*:14299)'
-                        .')'
-                        .'|2b32a/([^/]++)/([^/]++)/([^/]++)/72b32a(*:14349)'
-                        .'|f(?'
-                            .'|39f8/([^/]++)/([^/]++)/([^/]++)/7f39f8(*:14401)'
-                            .'|6ffa/([^/]++)/([^/]++)/([^/]++)/7f6ffa(*:14449)'
-                            .'|1(?'
-                                .'|de2/([^/]++)/([^/]++)/([^/]++)/7f1de2(*:14500)'
-                                .'|00b/([^/]++)/([^/]++)/([^/]++)/7f100b(*:14547)'
-                            .')'
-                            .'|e1f8/([^/]++)/([^/]++)/([^/]++)/7fe1f8(*:14596)'
-                        .')'
-                        .'|3(?'
-                            .'|5b90/([^/]++)/([^/]++)/([^/]++)/735b90(*:14649)'
-                            .'|278a/([^/]++)/([^/]++)/([^/]++)/73278a(*:14697)'
-                            .'|80ad/([^/]++)/([^/]++)/([^/]++)/7380ad(*:14745)'
-                        .')'
-                        .'|cbbc4/([^/]++)/([^/]++)/([^/]++)/7cbbc4(*:14795)'
-                        .'|6(?'
-                            .'|4796/([^/]++)/([^/]++)/([^/]++)/764796(*:14847)'
-                            .'|dc61/([^/]++)/([^/]++)/([^/]++)/76dc61(*:14895)'
-                        .')'
-                        .'|e(?'
-                            .'|f605/([^/]++)/([^/]++)/([^/]++)/7ef605(*:14948)'
-                            .'|7757/([^/]++)/([^/]++)/([^/]++)/7e7757(*:14996)'
-                            .'|a(?'
-                                .'|be3/([^/]++)/([^/]++)/([^/]++)/7eabe3(*:15047)'
-                                .'|cb5/([^/]++)/([^/]++)/([^/]++)/7eacb5(*:15094)'
-                            .')'
-                        .')'
-                        .'|5(?'
-                            .'|7b50/([^/]++)/([^/]++)/([^/]++)/757b50(*:15148)'
-                            .'|8874/([^/]++)/([^/]++)/([^/]++)/758874(*:15196)'
-                            .'|fc09/([^/]++)/([^/]++)/([^/]++)/75fc09(*:15244)'
-                        .')'
-                        .'|4(?'
-                            .'|db12/([^/]++)/([^/]++)/([^/]++)/74db12(*:15297)'
-                            .'|071a/([^/]++)/([^/]++)/([^/]++)/74071a(*:15345)'
-                        .')'
-                        .'|a614f/([^/]++)/([^/]++)/([^/]++)/7a614f(*:15395)'
-                        .'|d04bb/([^/]++)/([^/]++)/([^/]++)/7d04bb(*:15444)'
-                    .')'
-                    .'|/3(?'
-                        .'|c(?'
-                            .'|59dc/([^/]++)/([^/]++)/([^/]++)/3c59dc(*:15502)'
-                            .'|ec07/([^/]++)/([^/]++)/([^/]++)/3cec07(*:15550)'
-                            .'|7781/([^/]++)/([^/]++)/([^/]++)/3c7781(*:15598)'
-                            .'|f166/([^/]++)/([^/]++)/([^/]++)/3cf166(*:15646)'
-                        .')'
-                        .'|7(?'
-                            .'|693c/([^/]++)/([^/]++)/([^/]++)/37693c(*:15699)'
-                            .'|a749/([^/]++)/([^/]++)/([^/]++)/37a749(*:15747)'
-                            .'|bc2f/([^/]++)/([^/]++)/([^/]++)/37bc2f(*:15795)'
-                            .'|1bce/([^/]++)/([^/]++)/([^/]++)/371bce(*:15843)'
-                        .')'
-                        .'|3(?'
-                            .'|e75f/([^/]++)/([^/]++)/([^/]++)/33e75f(*:15896)'
-                            .'|5f53/([^/]++)/([^/]++)/([^/]++)/335f53(*:15944)'
-                        .')'
-                        .'|4(?'
-                            .'|1(?'
-                                .'|73c/([^/]++)/([^/]++)/([^/]++)/34173c(*:16000)'
-                                .'|6a7/([^/]++)/([^/]++)/([^/]++)/3416a7(*:16047)'
-                            .')'
-                            .'|ed06/([^/]++)/([^/]++)/([^/]++)/34ed06(*:16096)'
-                        .')'
-                        .'|2(?'
-                            .'|95c7/([^/]++)/([^/]++)/([^/]++)/3295c7(*:16149)'
-                            .'|bb90/([^/]++)/([^/]++)/([^/]++)/32bb90(*:16197)'
-                            .'|0722/([^/]++)/([^/]++)/([^/]++)/320722(*:16245)'
-                        .')'
-                        .'|5(?'
-                            .'|f4a8/([^/]++)/([^/]++)/([^/]++)/35f4a8(*:16298)'
-                            .'|7a6f/([^/]++)/([^/]++)/([^/]++)/357a6f(*:16346)'
-                            .'|2fe2/([^/]++)/([^/]++)/([^/]++)/352fe2(*:16394)'
-                            .'|0510/([^/]++)/([^/]++)/([^/]++)/350510(*:16442)'
-                        .')'
-                        .'|ef815/([^/]++)/([^/]++)/([^/]++)/3ef815(*:16492)'
-                        .'|8(?'
-                            .'|b3ef/([^/]++)/([^/]++)/([^/]++)/38b3ef(*:16544)'
-                            .'|af86/([^/]++)/([^/]++)/([^/]++)/38af86(*:16592)'
-                            .'|db3a/([^/]++)/([^/]++)/([^/]++)/38db3a(*:16640)'
-                        .')'
-                        .'|d(?'
-                            .'|ef18/([^/]++)/([^/]++)/([^/]++)/3def18(*:16693)'
-                            .'|d48a/([^/]++)/([^/]++)/([^/]++)/3dd48a(*:16741)'
-                        .')'
-                        .'|9(?'
-                            .'|88c7/([^/]++)/([^/]++)/([^/]++)/3988c7(*:16794)'
-                            .'|0597/([^/]++)/([^/]++)/([^/]++)/390597(*:16842)'
-                            .'|461a/([^/]++)/([^/]++)/([^/]++)/39461a(*:16890)'
-                        .')'
-                        .'|6(?'
-                            .'|3663/([^/]++)/([^/]++)/([^/]++)/363663(*:16943)'
-                            .'|44a6/([^/]++)/([^/]++)/([^/]++)/3644a6(*:16991)'
-                            .'|660e/([^/]++)/([^/]++)/([^/]++)/36660e(*:17039)'
-                        .')'
-                        .'|1(?'
-                            .'|fefc/([^/]++)/([^/]++)/([^/]++)/31fefc(*:17092)'
-                            .'|0dcb/([^/]++)/([^/]++)/([^/]++)/310dcb(*:17140)'
-                        .')'
-                        .'|b8a61/([^/]++)/([^/]++)/([^/]++)/3b8a61(*:17190)'
-                        .'|fe94a/([^/]++)/([^/]++)/([^/]++)/3fe94a(*:17239)'
-                        .'|ad7c2/([^/]++)/([^/]++)/([^/]++)/3ad7c2(*:17288)'
-                    .')'
-                    .'|/b(?'
-                        .'|6(?'
-                            .'|d767/([^/]++)/([^/]++)/([^/]++)/b6d767(*:17346)'
-                            .'|f047/([^/]++)/([^/]++)/([^/]++)/b6f047(*:17394)'
-                        .')'
-                        .'|53(?'
-                            .'|b3a/([^/]++)/([^/]++)/([^/]++)/b53b3a(*:17447)'
-                            .'|4ba/([^/]++)/([^/]++)/([^/]++)/b534ba(*:17494)'
-                        .')'
-                        .'|3(?'
-                            .'|e3e3/([^/]++)/([^/]++)/([^/]++)/b3e3e3(*:17547)'
-                            .'|967a/([^/]++)/([^/]++)/([^/]++)/b3967a(*:17595)'
-                        .')'
-                        .'|7(?'
-                            .'|3ce3/([^/]++)/([^/]++)/([^/]++)/b73ce3(*:17648)'
-                            .'|b16e/([^/]++)/([^/]++)/([^/]++)/b7b16e(*:17696)'
-                        .')'
-                        .'|d(?'
-                            .'|4c9a/([^/]++)/([^/]++)/([^/]++)/bd4c9a(*:17749)'
-                            .'|686f/([^/]++)/([^/]++)/([^/]++)/bd686f(*:17797)'
-                        .')'
-                        .'|f8229/([^/]++)/([^/]++)/([^/]++)/bf8229(*:17847)'
-                        .'|1(?'
-                            .'|d10e/([^/]++)/([^/]++)/([^/]++)/b1d10e(*:17899)'
-                            .'|a59b/([^/]++)/([^/]++)/([^/]++)/b1a59b(*:17947)'
-                        .')'
-                        .'|c(?'
-                            .'|be33/([^/]++)/([^/]++)/([^/]++)/bcbe33(*:18000)'
-                            .'|6dc4/([^/]++)/([^/]++)/([^/]++)/bc6dc4(*:18048)'
-                            .'|a82e/([^/]++)/([^/]++)/([^/]++)/bca82e(*:18096)'
-                        .')'
-                        .'|e(?'
-                            .'|83ab/([^/]++)/([^/]++)/([^/]++)/be83ab(*:18149)'
-                            .'|ed13/([^/]++)/([^/]++)/([^/]++)/beed13(*:18197)'
-                        .')'
-                        .'|2eb73/([^/]++)/([^/]++)/([^/]++)/b2eb73(*:18247)'
-                        .'|83aac/([^/]++)/([^/]++)/([^/]++)/b83aac(*:18296)'
-                        .'|ac916/([^/]++)/([^/]++)/([^/]++)/bac916(*:18345)'
-                        .'|b(?'
-                            .'|f94b/([^/]++)/([^/]++)/([^/]++)/bbf94b(*:18397)'
-                            .'|cbff/([^/]++)/([^/]++)/([^/]++)/bbcbff(*:18445)'
-                        .')'
-                        .'|9228e/([^/]++)/([^/]++)/([^/]++)/b9228e(*:18495)'
-                    .')'
-                    .'|/0(?'
-                        .'|2(?'
-                            .'|e74f/([^/]++)/([^/]++)/([^/]++)/02e74f(*:18553)'
-                            .'|522a/([^/]++)/([^/]++)/([^/]++)/02522a(*:18601)'
-                            .'|66e3/([^/]++)/([^/]++)/([^/]++)/0266e3(*:18649)'
-                        .')'
-                        .'|9(?'
-                            .'|3f65/([^/]++)/([^/]++)/([^/]++)/093f65(*:18702)'
-                            .'|1d58/([^/]++)/([^/]++)/([^/]++)/091d58(*:18750)'
-                        .')'
-                        .'|7(?'
-                            .'|2b03/([^/]++)/([^/]++)/([^/]++)/072b03(*:18803)'
-                            .'|e1cd/([^/]++)/([^/]++)/([^/]++)/07e1cd(*:18851)'
-                            .'|7(?'
-                                .'|7d5/([^/]++)/([^/]++)/([^/]++)/0777d5(*:18902)'
-                                .'|e29/([^/]++)/([^/]++)/([^/]++)/077e29(*:18949)'
-                            .')'
-                            .'|cdfd/([^/]++)/([^/]++)/([^/]++)/07cdfd(*:18998)'
-                        .')'
-                        .'|3(?'
-                            .'|afdb/([^/]++)/([^/]++)/([^/]++)/03afdb(*:19051)'
-                            .'|36dc/([^/]++)/([^/]++)/([^/]++)/0336dc(*:19099)'
-                            .'|c6b0/([^/]++)/([^/]++)/([^/]++)/03c6b0(*:19147)'
-                            .'|53ab/([^/]++)/([^/]++)/([^/]++)/0353ab(*:19195)'
-                        .')'
-                        .'|6(?'
-                            .'|9059/([^/]++)/([^/]++)/([^/]++)/069059(*:19248)'
-                            .'|4096/([^/]++)/([^/]++)/([^/]++)/064096(*:19296)'
-                            .'|0ad9/([^/]++)/([^/]++)/([^/]++)/060ad9(*:19344)'
-                            .'|138b/([^/]++)/([^/]++)/([^/]++)/06138b(*:19392)'
-                            .'|eb61/([^/]++)/([^/]++)/([^/]++)/06eb61(*:19440)'
-                        .')'
-                        .'|1(?'
-                            .'|3(?'
-                                .'|d40/([^/]++)/([^/]++)/([^/]++)/013d40(*:19496)'
-                                .'|86b/([^/]++)/([^/]++)/([^/]++)/01386b(*:19543)'
-                            .')'
-                            .'|161a/([^/]++)/([^/]++)/([^/]++)/01161a(*:19592)'
-                            .'|9d38/([^/]++)/([^/]++)/([^/]++)/019d38(*:19640)'
-                        .')'
-                        .'|f(?'
-                            .'|28b5/([^/]++)/([^/]++)/([^/]++)/0f28b5(*:19693)'
-                            .'|49c8/([^/]++)/([^/]++)/([^/]++)/0f49c8(*:19741)'
-                        .')'
-                        .'|a(?'
-                            .'|09c8/([^/]++)/([^/]++)/([^/]++)/0a09c8(*:19794)'
-                            .'|a188/([^/]++)/([^/]++)/([^/]++)/0aa188(*:19842)'
-                        .')'
-                        .'|0(?'
-                            .'|6f52/([^/]++)/([^/]++)/([^/]++)/006f52(*:19895)'
-                            .'|4114/([^/]++)/([^/]++)/([^/]++)/004114(*:19943)'
-                            .'|ec53/([^/]++)/([^/]++)/([^/]++)/00ec53(*:19991)'
-                        .')'
-                        .'|4(?'
-                            .'|5117/([^/]++)/([^/]++)/([^/]++)/045117(*:20044)'
-                            .'|0259/([^/]++)/([^/]++)/([^/]++)/040259(*:20092)'
-                        .')'
-                        .'|84b6f/([^/]++)/([^/]++)/([^/]++)/084b6f(*:20142)'
-                        .'|e(?'
-                            .'|6597/([^/]++)/([^/]++)/([^/]++)/0e6597(*:20194)'
-                            .'|0193/([^/]++)/([^/]++)/([^/]++)/0e0193(*:20242)'
-                        .')'
-                        .'|bb4ae/([^/]++)/([^/]++)/([^/]++)/0bb4ae(*:20292)'
-                        .'|5(?'
-                            .'|049e/([^/]++)/([^/]++)/([^/]++)/05049e(*:20344)'
-                            .'|84ce/([^/]++)/([^/]++)/([^/]++)/0584ce(*:20392)'
-                            .'|f971/([^/]++)/([^/]++)/([^/]++)/05f971(*:20440)'
-                        .')'
-                        .'|c74b7/([^/]++)/([^/]++)/([^/]++)/0c74b7(*:20490)'
-                        .'|d(?'
-                            .'|0fd7/([^/]++)/([^/]++)/([^/]++)/0d0fd7(*:20542)'
-                            .'|eb1c/([^/]++)/([^/]++)/([^/]++)/0deb1c(*:20590)'
-                        .')'
-                    .')'
-                    .'|/f(?'
-                        .'|7(?'
-                            .'|1(?'
-                                .'|771/([^/]++)/([^/]++)/([^/]++)/f71771(*:20652)'
-                                .'|849/([^/]++)/([^/]++)/([^/]++)/f71849(*:20699)'
-                            .')'
-                            .'|e6c8/([^/]++)/([^/]++)/([^/]++)/f7e6c8(*:20748)'
-                            .'|6640/([^/]++)/([^/]++)/([^/]++)/f76640(*:20796)'
-                            .'|3b76/([^/]++)/([^/]++)/([^/]++)/f73b76(*:20844)'
-                            .'|4909/([^/]++)/([^/]++)/([^/]++)/f74909(*:20892)'
-                            .'|70b6/([^/]++)/([^/]++)/([^/]++)/f770b6(*:20940)'
-                        .')'
-                        .'|4(?'
-                            .'|57c5/([^/]++)/([^/]++)/([^/]++)/f457c5(*:20993)'
-                            .'|b9ec/([^/]++)/([^/]++)/([^/]++)/f4b9ec(*:21041)'
-                            .'|f6dc/([^/]++)/([^/]++)/([^/]++)/f4f6dc(*:21089)'
-                        .')'
-                        .'|c(?'
-                            .'|490c/([^/]++)/([^/]++)/([^/]++)/fc490c(*:21142)'
-                            .'|2213/([^/]++)/([^/]++)/([^/]++)/fc2213(*:21190)'
-                            .'|cb60/([^/]++)/([^/]++)/([^/]++)/fccb60(*:21238)'
-                        .')'
-                        .'|b(?'
-                            .'|d793/([^/]++)/([^/]++)/([^/]++)/fbd793(*:21291)'
-                            .'|7b9f/([^/]++)/([^/]++)/([^/]++)/fb7b9f(*:21339)'
-                        .')'
-                        .'|0(?'
-                            .'|33ab/([^/]++)/([^/]++)/([^/]++)/f033ab(*:21392)'
-                            .'|935e/([^/]++)/([^/]++)/([^/]++)/f0935e(*:21440)'
-                        .')'
-                        .'|e(?'
-                            .'|9fc2/([^/]++)/([^/]++)/([^/]++)/fe9fc2(*:21493)'
-                            .'|131d/([^/]++)/([^/]++)/([^/]++)/fe131d(*:21541)'
-                            .'|73f6/([^/]++)/([^/]++)/([^/]++)/fe73f6(*:21589)'
-                        .')'
-                        .'|8(?'
-                            .'|9913/([^/]++)/([^/]++)/([^/]++)/f89913(*:21642)'
-                            .'|c1f2/([^/]++)/([^/]++)/([^/]++)/f8c1f2(*:21690)'
-                            .'|5454/([^/]++)/([^/]++)/([^/]++)/f85454(*:21738)'
-                        .')'
-                        .'|2(?'
-                            .'|2170/([^/]++)/([^/]++)/([^/]++)/f22170(*:21791)'
-                            .'|fc99/([^/]++)/([^/]++)/([^/]++)/f2fc99(*:21839)'
-                        .')'
-                        .'|a(?'
-                            .'|7cdf/([^/]++)/([^/]++)/([^/]++)/fa7cdf(*:21892)'
-                            .'|a9af/([^/]++)/([^/]++)/([^/]++)/faa9af(*:21940)'
-                        .')'
-                        .'|340f1/([^/]++)/([^/]++)/([^/]++)/f340f1(*:21990)'
-                        .'|9(?'
-                            .'|0f2a/([^/]++)/([^/]++)/([^/]++)/f90f2a(*:22042)'
-                            .'|b902/([^/]++)/([^/]++)/([^/]++)/f9b902(*:22090)'
-                        .')'
-                        .'|fd52f/([^/]++)/([^/]++)/([^/]++)/ffd52f(*:22140)'
-                        .'|61d69/([^/]++)/([^/]++)/([^/]++)/f61d69(*:22189)'
-                        .'|5f859/([^/]++)/([^/]++)/([^/]++)/f5f859(*:22238)'
-                        .'|1b6f2/([^/]++)/([^/]++)/([^/]++)/f1b6f2(*:22287)'
-                    .')'
-                    .'|/2(?'
-                        .'|8(?'
-                            .'|3802/([^/]++)/([^/]++)/([^/]++)/283802(*:22345)'
-                            .'|dd2c/([^/]++)/([^/]++)/([^/]++)/28dd2c(*:22393)'
-                            .'|9dff/([^/]++)/([^/]++)/([^/]++)/289dff(*:22441)'
-                            .'|f0b8/([^/]++)/([^/]++)/([^/]++)/28f0b8(*:22489)'
-                        .')'
-                        .'|a(?'
-                            .'|38a4/([^/]++)/([^/]++)/([^/]++)/2a38a4(*:22542)'
-                            .'|79ea/([^/]++)/([^/]++)/([^/]++)/2a79ea(*:22590)'
-                        .')'
-                        .'|6(?'
-                            .'|657d/([^/]++)/([^/]++)/([^/]++)/26657d(*:22643)'
-                            .'|e359/([^/]++)/([^/]++)/([^/]++)/26e359(*:22691)'
-                            .'|3373/([^/]++)/([^/]++)/([^/]++)/263373(*:22739)'
-                        .')'
-                        .'|7(?'
-                            .'|23d0/([^/]++)/([^/]++)/([^/]++)/2723d0(*:22792)'
-                            .'|4ad4/([^/]++)/([^/]++)/([^/]++)/274ad4(*:22840)'
-                        .')'
-                        .'|b(?'
-                            .'|4492/([^/]++)/([^/]++)/([^/]++)/2b4492(*:22893)'
-                            .'|24d4/([^/]++)/([^/]++)/([^/]++)/2b24d4(*:22941)'
-                        .')'
-                        .'|0(?'
-                            .'|2cb9/([^/]++)/([^/]++)/([^/]++)/202cb9(*:22994)'
-                            .'|f075/([^/]++)/([^/]++)/([^/]++)/20f075(*:23042)'
-                            .'|50e0/([^/]++)/([^/]++)/([^/]++)/2050e0(*:23090)'
-                        .')'
-                        .'|f(?'
-                            .'|2b26/([^/]++)/([^/]++)/([^/]++)/2f2b26(*:23143)'
-                            .'|5570/([^/]++)/([^/]++)/([^/]++)/2f5570(*:23191)'
-                        .')'
-                        .'|4(?'
-                            .'|b16f/([^/]++)/([^/]++)/([^/]++)/24b16f(*:23244)'
-                            .'|8e84/([^/]++)/([^/]++)/([^/]++)/248e84(*:23292)'
-                            .'|21fc/([^/]++)/([^/]++)/([^/]++)/2421fc(*:23340)'
-                        .')'
-                        .'|5(?'
-                            .'|b282/([^/]++)/([^/]++)/([^/]++)/25b282(*:23393)'
-                            .'|0cf8/([^/]++)/([^/]++)/([^/]++)/250cf8(*:23441)'
-                            .'|ddc0/([^/]++)/([^/]++)/([^/]++)/25ddc0(*:23489)'
-                        .')'
-                        .'|18a0a/([^/]++)/([^/]++)/([^/]++)/218a0a(*:23539)'
-                    .')'
-                    .'|/5(?'
-                        .'|4229a/([^/]++)/([^/]++)/([^/]++)/54229a(*:23594)'
-                        .'|f(?'
-                            .'|93f9/([^/]++)/([^/]++)/([^/]++)/5f93f9(*:23646)'
-                            .'|d0b3/([^/]++)/([^/]++)/([^/]++)/5fd0b3(*:23694)'
-                        .')'
-                        .'|ef(?'
-                            .'|0(?'
-                                .'|59/([^/]++)/([^/]++)/([^/]++)/5ef059(*:23750)'
-                                .'|b4/([^/]++)/([^/]++)/([^/]++)/5ef0b4(*:23796)'
-                            .')'
-                            .'|698/([^/]++)/([^/]++)/([^/]++)/5ef698(*:23844)'
-                        .')'
-                        .'|8(?'
-                            .'|78a7/([^/]++)/([^/]++)/([^/]++)/5878a7(*:23897)'
-                            .'|a2fc/([^/]++)/([^/]++)/([^/]++)/58a2fc(*:23945)'
-                            .'|238e/([^/]++)/([^/]++)/([^/]++)/58238e(*:23993)'
-                        .')'
-                        .'|7(?'
-                            .'|aeee/([^/]++)/([^/]++)/([^/]++)/57aeee(*:24046)'
-                            .'|7(?'
-                                .'|ef1/([^/]++)/([^/]++)/([^/]++)/577ef1(*:24097)'
-                                .'|bcc/([^/]++)/([^/]++)/([^/]++)/577bcc(*:24144)'
-                            .')'
-                            .'|37c6/([^/]++)/([^/]++)/([^/]++)/5737c6(*:24193)'
-                        .')'
-                        .'|3(?'
-                            .'|9fd5/([^/]++)/([^/]++)/([^/]++)/539fd5(*:24246)'
-                            .'|c3bc/([^/]++)/([^/]++)/([^/]++)/53c3bc(*:24294)'
-                        .')'
-                        .'|5(?'
-                            .'|5d67/([^/]++)/([^/]++)/([^/]++)/555d67(*:24347)'
-                            .'|0a14/([^/]++)/([^/]++)/([^/]++)/550a14(*:24395)'
-                            .'|9cb9/([^/]++)/([^/]++)/([^/]++)/559cb9(*:24443)'
-                            .'|a7cf/([^/]++)/([^/]++)/([^/]++)/55a7cf(*:24491)'
-                        .')'
-                        .'|02e4a/([^/]++)/([^/]++)/([^/]++)/502e4a(*:24541)'
-                        .'|b8add/([^/]++)/([^/]++)/([^/]++)/5b8add(*:24590)'
-                        .'|2720e/([^/]++)/([^/]++)/([^/]++)/52720e(*:24639)'
-                        .'|a4b25/([^/]++)/([^/]++)/([^/]++)/5a4b25(*:24688)'
-                        .'|1d92b/([^/]++)/([^/]++)/([^/]++)/51d92b(*:24737)'
-                        .'|98b3e/([^/]++)/([^/]++)/([^/]++)/598b3e(*:24786)'
-                    .')'
-                .')/?$}sD',
-            24786 => '{^(?'
-                    .'|/5(?'
-                        .'|b69b9/([^/]++)/([^/]++)/([^/]++)/5b69b9(*:24837)'
-                        .'|9(?'
-                            .'|b90e/([^/]++)/([^/]++)/([^/]++)/59b90e(*:24889)'
-                            .'|c330/([^/]++)/([^/]++)/([^/]++)/59c330(*:24937)'
-                        .')'
-                        .'|3(?'
-                            .'|fde9/([^/]++)/([^/]++)/([^/]++)/53fde9(*:24990)'
-                            .'|e3a7/([^/]++)/([^/]++)/([^/]++)/53e3a7(*:25038)'
-                        .')'
-                        .'|e(?'
-                            .'|a164/([^/]++)/([^/]++)/([^/]++)/5ea164(*:25091)'
-                            .'|3881/([^/]++)/([^/]++)/([^/]++)/5e3881(*:25139)'
-                            .'|9f92/([^/]++)/([^/]++)/([^/]++)/5e9f92(*:25187)'
-                            .'|c91a/([^/]++)/([^/]++)/([^/]++)/5ec91a(*:25235)'
-                        .')'
-                        .'|7(?'
-                            .'|3703/([^/]++)/([^/]++)/([^/]++)/573703(*:25288)'
-                            .'|51ec/([^/]++)/([^/]++)/([^/]++)/5751ec(*:25336)'
-                            .'|05e1/([^/]++)/([^/]++)/([^/]++)/5705e1(*:25384)'
-                        .')'
-                        .'|8(?'
-                            .'|ae74/([^/]++)/([^/]++)/([^/]++)/58ae74(*:25437)'
-                            .'|d4d1/([^/]++)/([^/]++)/([^/]++)/58d4d1(*:25485)'
-                            .'|07a6/([^/]++)/([^/]++)/([^/]++)/5807a6(*:25533)'
-                            .'|e4d4/([^/]++)/([^/]++)/([^/]++)/58e4d4(*:25581)'
-                        .')'
-                        .'|d(?'
-                            .'|44ee/([^/]++)/([^/]++)/([^/]++)/5d44ee(*:25634)'
-                            .'|d9db/([^/]++)/([^/]++)/([^/]++)/5dd9db(*:25682)'
-                        .')'
-                        .'|5(?'
-                            .'|b37c/([^/]++)/([^/]++)/([^/]++)/55b37c(*:25735)'
-                            .'|743c/([^/]++)/([^/]++)/([^/]++)/55743c(*:25783)'
-                            .'|6f39/([^/]++)/([^/]++)/([^/]++)/556f39(*:25831)'
-                        .')'
-                        .'|c(?'
-                            .'|0492/([^/]++)/([^/]++)/([^/]++)/5c0492(*:25884)'
-                            .'|572e/([^/]++)/([^/]++)/([^/]++)/5c572e(*:25932)'
-                            .'|9362/([^/]++)/([^/]++)/([^/]++)/5c9362(*:25980)'
-                        .')'
-                        .'|4(?'
-                            .'|8731/([^/]++)/([^/]++)/([^/]++)/548731(*:26033)'
-                            .'|a367/([^/]++)/([^/]++)/([^/]++)/54a367(*:26081)'
-                        .')'
-                        .'|0(?'
-                            .'|0e75/([^/]++)/([^/]++)/([^/]++)/500e75(*:26134)'
-                            .'|c3d7/([^/]++)/([^/]++)/([^/]++)/50c3d7(*:26182)'
-                        .')'
-                        .'|f(?'
-                            .'|2c22/([^/]++)/([^/]++)/([^/]++)/5f2c22(*:26235)'
-                            .'|0f5e/([^/]++)/([^/]++)/([^/]++)/5f0f5e(*:26283)'
-                        .')'
-                        .'|1ef18/([^/]++)/([^/]++)/([^/]++)/51ef18(*:26333)'
-                    .')'
-                    .'|/b(?'
-                        .'|5(?'
-                            .'|b41f/([^/]++)/([^/]++)/([^/]++)/b5b41f(*:26391)'
-                            .'|dc4e/([^/]++)/([^/]++)/([^/]++)/b5dc4e(*:26439)'
-                            .'|6a18/([^/]++)/([^/]++)/([^/]++)/b56a18(*:26487)'
-                            .'|5ec2/([^/]++)/([^/]++)/([^/]++)/b55ec2(*:26535)'
-                        .')'
-                        .'|337e8/([^/]++)/([^/]++)/([^/]++)/b337e8(*:26585)'
-                        .'|a(?'
-                            .'|2fd3/([^/]++)/([^/]++)/([^/]++)/ba2fd3(*:26637)'
-                            .'|3866/([^/]++)/([^/]++)/([^/]++)/ba3866(*:26685)'
-                        .')'
-                        .'|2(?'
-                            .'|eeb7/([^/]++)/([^/]++)/([^/]++)/b2eeb7(*:26738)'
-                            .'|f627/([^/]++)/([^/]++)/([^/]++)/b2f627(*:26786)'
-                        .')'
-                        .'|7(?'
-                            .'|3dfe/([^/]++)/([^/]++)/([^/]++)/b73dfe(*:26839)'
-                            .'|bb35/([^/]++)/([^/]++)/([^/]++)/b7bb35(*:26887)'
-                            .'|ee6f/([^/]++)/([^/]++)/([^/]++)/b7ee6f(*:26935)'
-                            .'|892f/([^/]++)/([^/]++)/([^/]++)/b7892f(*:26983)'
-                            .'|0683/([^/]++)/([^/]++)/([^/]++)/b70683(*:27031)'
-                        .')'
-                        .'|4(?'
-                            .'|288d/([^/]++)/([^/]++)/([^/]++)/b4288d(*:27084)'
-                            .'|a528/([^/]++)/([^/]++)/([^/]++)/b4a528(*:27132)'
-                        .')'
-                        .'|e(?'
-                            .'|3159/([^/]++)/([^/]++)/([^/]++)/be3159(*:27185)'
-                            .'|b22f/([^/]++)/([^/]++)/([^/]++)/beb22f(*:27233)'
-                            .'|a595/([^/]++)/([^/]++)/([^/]++)/bea595(*:27281)'
-                        .')'
-                        .'|1(?'
-                            .'|eec3/([^/]++)/([^/]++)/([^/]++)/b1eec3(*:27334)'
-                            .'|37fd/([^/]++)/([^/]++)/([^/]++)/b137fd(*:27382)'
-                        .')'
-                        .'|0(?'
-                            .'|56eb/([^/]++)/([^/]++)/([^/]++)/b056eb(*:27435)'
-                            .'|b183/([^/]++)/([^/]++)/([^/]++)/b0b183(*:27483)'
-                        .')'
-                        .'|f6276/([^/]++)/([^/]++)/([^/]++)/bf6276(*:27533)'
-                        .'|6(?'
-                            .'|edc1/([^/]++)/([^/]++)/([^/]++)/b6edc1(*:27585)'
-                            .'|a108/([^/]++)/([^/]++)/([^/]++)/b6a108(*:27633)'
-                        .')'
-                        .'|86e8d/([^/]++)/([^/]++)/([^/]++)/b86e8d(*:27683)'
-                    .')'
-                    .'|/2(?'
-                        .'|8(?'
-                            .'|5e19/([^/]++)/([^/]++)/([^/]++)/285e19(*:27741)'
-                            .'|2(?'
-                                .'|3f4/([^/]++)/([^/]++)/([^/]++)/2823f4(*:27792)'
-                                .'|67a/([^/]++)/([^/]++)/([^/]++)/28267a(*:27839)'
-                            .')'
-                            .'|8cc0/([^/]++)/([^/]++)/([^/]++)/288cc0(*:27888)'
-                            .'|7e03/([^/]++)/([^/]++)/([^/]++)/287e03(*:27936)'
-                        .')'
-                        .'|d(?'
-                            .'|6cc4/([^/]++)/([^/]++)/([^/]++)/2d6cc4(*:27989)'
-                            .'|ea61/([^/]++)/([^/]++)/([^/]++)/2dea61(*:28037)'
-                            .'|ace7/([^/]++)/([^/]++)/([^/]++)/2dace7(*:28085)'
-                        .')'
-                        .'|b(?'
-                            .'|8a61/([^/]++)/([^/]++)/([^/]++)/2b8a61(*:28138)'
-                            .'|b232/([^/]++)/([^/]++)/([^/]++)/2bb232(*:28186)'
-                            .'|a596/([^/]++)/([^/]++)/([^/]++)/2ba596(*:28234)'
-                            .'|cab9/([^/]++)/([^/]++)/([^/]++)/2bcab9(*:28282)'
-                        .')'
-                        .'|9(?'
-                            .'|8f95/([^/]++)/([^/]++)/([^/]++)/298f95(*:28335)'
-                            .'|1597/([^/]++)/([^/]++)/([^/]++)/291597(*:28383)'
-                        .')'
-                        .'|58be1/([^/]++)/([^/]++)/([^/]++)/258be1(*:28433)'
-                        .'|3(?'
-                            .'|3509/([^/]++)/([^/]++)/([^/]++)/233509(*:28485)'
-                            .'|ce18/([^/]++)/([^/]++)/([^/]++)/23ce18(*:28533)'
-                        .')'
-                        .'|6(?'
-                            .'|dd0d/([^/]++)/([^/]++)/([^/]++)/26dd0d(*:28586)'
-                            .'|408f/([^/]++)/([^/]++)/([^/]++)/26408f(*:28634)'
-                        .')'
-                        .'|f(?'
-                            .'|37d1/([^/]++)/([^/]++)/([^/]++)/2f37d1(*:28687)'
-                            .'|885d/([^/]++)/([^/]++)/([^/]++)/2f885d(*:28735)'
-                        .')'
-                        .'|2(?'
-                            .'|91d2/([^/]++)/([^/]++)/([^/]++)/2291d2(*:28788)'
-                            .'|ac3c/([^/]++)/([^/]++)/([^/]++)/22ac3c(*:28836)'
-                            .'|fb0c/([^/]++)/([^/]++)/([^/]++)/22fb0c(*:28884)'
-                        .')'
-                        .'|4(?'
-                            .'|6819/([^/]++)/([^/]++)/([^/]++)/246819(*:28937)'
-                            .'|896e/([^/]++)/([^/]++)/([^/]++)/24896e(*:28985)'
-                        .')'
-                        .'|a(?'
-                            .'|fe45/([^/]++)/([^/]++)/([^/]++)/2afe45(*:29038)'
-                            .'|084e/([^/]++)/([^/]++)/([^/]++)/2a084e(*:29086)'
-                            .'|9d12/([^/]++)/([^/]++)/([^/]++)/2a9d12(*:29134)'
-                            .'|b564/([^/]++)/([^/]++)/([^/]++)/2ab564(*:29182)'
-                        .')'
-                        .'|1(?'
-                            .'|7eed/([^/]++)/([^/]++)/([^/]++)/217eed(*:29235)'
-                            .'|0f76/([^/]++)/([^/]++)/([^/]++)/210f76(*:29283)'
-                        .')'
-                        .'|e65f2/([^/]++)/([^/]++)/([^/]++)/2e65f2(*:29333)'
-                        .'|ca65f/([^/]++)/([^/]++)/([^/]++)/2ca65f(*:29382)'
-                        .'|0aee3/([^/]++)/([^/]++)/([^/]++)/20aee3(*:29431)'
-                    .')'
-                    .'|/e(?'
-                        .'|8(?'
-                            .'|c065/([^/]++)/([^/]++)/([^/]++)/e8c065(*:29489)'
-                            .'|20a4/([^/]++)/([^/]++)/([^/]++)/e820a4(*:29537)'
-                        .')'
-                        .'|2(?'
-                            .'|230b/([^/]++)/([^/]++)/([^/]++)/e2230b(*:29590)'
-                            .'|a2dc/([^/]++)/([^/]++)/([^/]++)/e2a2dc(*:29638)'
-                            .'|05ee/([^/]++)/([^/]++)/([^/]++)/e205ee(*:29686)'
-                        .')'
-                        .'|b(?'
-                            .'|d962/([^/]++)/([^/]++)/([^/]++)/ebd962(*:29739)'
-                            .'|6fdc/([^/]++)/([^/]++)/([^/]++)/eb6fdc(*:29787)'
-                        .')'
-                        .'|d(?'
-                            .'|265b/([^/]++)/([^/]++)/([^/]++)/ed265b(*:29840)'
-                            .'|fbe1/([^/]++)/([^/]++)/([^/]++)/edfbe1(*:29888)'
-                            .'|e7e2/([^/]++)/([^/]++)/([^/]++)/ede7e2(*:29936)'
-                        .')'
-                        .'|6(?'
-                            .'|b4b2/([^/]++)/([^/]++)/([^/]++)/e6b4b2(*:29989)'
-                            .'|cb2a/([^/]++)/([^/]++)/([^/]++)/e6cb2a(*:30037)'
-                        .')'
-                        .'|5(?'
-                            .'|f6ad/([^/]++)/([^/]++)/([^/]++)/e5f6ad(*:30090)'
-                            .'|55eb/([^/]++)/([^/]++)/([^/]++)/e555eb(*:30138)'
-                            .'|841d/([^/]++)/([^/]++)/([^/]++)/e5841d(*:30186)'
-                            .'|7c6b/([^/]++)/([^/]++)/([^/]++)/e57c6b(*:30234)'
-                        .')'
-                        .'|aae33/([^/]++)/([^/]++)/([^/]++)/eaae33(*:30284)'
-                        .'|4(?'
-                            .'|bb4c/([^/]++)/([^/]++)/([^/]++)/e4bb4c(*:30336)'
-                            .'|9b8b/([^/]++)/([^/]++)/([^/]++)/e49b8b(*:30384)'
-                        .')'
-                        .'|7(?'
-                            .'|0611/([^/]++)/([^/]++)/([^/]++)/e70611(*:30437)'
-                            .'|f8a7/([^/]++)/([^/]++)/([^/]++)/e7f8a7(*:30485)'
-                            .'|44f9/([^/]++)/([^/]++)/([^/]++)/e744f9(*:30533)'
-                        .')'
-                        .'|9(?'
-                            .'|95f9/([^/]++)/([^/]++)/([^/]++)/e995f9(*:30586)'
-                            .'|4550/([^/]++)/([^/]++)/([^/]++)/e94550(*:30634)'
-                            .'|7ee2/([^/]++)/([^/]++)/([^/]++)/e97ee2(*:30682)'
-                        .')'
-                        .'|e(?'
-                            .'|fc9e/([^/]++)/([^/]++)/([^/]++)/eefc9e(*:30735)'
-                            .'|b69a/([^/]++)/([^/]++)/([^/]++)/eeb69a(*:30783)'
-                        .')'
-                        .'|0(?'
-                            .'|7413/([^/]++)/([^/]++)/([^/]++)/e07413(*:30836)'
-                            .'|cf1f/([^/]++)/([^/]++)/([^/]++)/e0cf1f(*:30884)'
-                            .'|ec45/([^/]++)/([^/]++)/([^/]++)/e0ec45(*:30932)'
-                        .')'
-                        .'|f4e3b/([^/]++)/([^/]++)/([^/]++)/ef4e3b(*:30982)'
-                        .'|c5aa0/([^/]++)/([^/]++)/([^/]++)/ec5aa0(*:31031)'
-                    .')'
-                    .'|/f(?'
-                        .'|f(?'
-                            .'|4d5f/([^/]++)/([^/]++)/([^/]++)/ff4d5f(*:31089)'
-                            .'|eabd/([^/]++)/([^/]++)/([^/]++)/ffeabd(*:31137)'
-                        .')'
-                        .'|3(?'
-                            .'|f27a/([^/]++)/([^/]++)/([^/]++)/f3f27a(*:31190)'
-                            .'|8762/([^/]++)/([^/]++)/([^/]++)/f38762(*:31238)'
-                        .')'
-                        .'|4(?'
-                            .'|be00/([^/]++)/([^/]++)/([^/]++)/f4be00(*:31291)'
-                            .'|5526/([^/]++)/([^/]++)/([^/]++)/f45526(*:31339)'
-                            .'|7d0a/([^/]++)/([^/]++)/([^/]++)/f47d0a(*:31387)'
-                        .')'
-                        .'|0(?'
-                            .'|e52b/([^/]++)/([^/]++)/([^/]++)/f0e52b(*:31440)'
-                            .'|adc8/([^/]++)/([^/]++)/([^/]++)/f0adc8(*:31488)'
-                        .')'
-                        .'|de926/([^/]++)/([^/]++)/([^/]++)/fde926(*:31538)'
-                        .'|5(?'
-                            .'|deae/([^/]++)/([^/]++)/([^/]++)/f5deae(*:31590)'
-                            .'|7a2f/([^/]++)/([^/]++)/([^/]++)/f57a2f(*:31638)'
-                        .')'
-                        .'|7(?'
-                            .'|6a89/([^/]++)/([^/]++)/([^/]++)/f76a89(*:31691)'
-                            .'|9921/([^/]++)/([^/]++)/([^/]++)/f79921(*:31739)'
-                            .'|e905/([^/]++)/([^/]++)/([^/]++)/f7e905(*:31787)'
-                        .')'
-                        .'|2(?'
-                            .'|9c21/([^/]++)/([^/]++)/([^/]++)/f29c21(*:31840)'
-                            .'|201f/([^/]++)/([^/]++)/([^/]++)/f2201f(*:31888)'
-                        .')'
-                        .'|a(?'
-                            .'|e0b2/([^/]++)/([^/]++)/([^/]++)/fae0b2(*:31941)'
-                            .'|14d4/([^/]++)/([^/]++)/([^/]++)/fa14d4(*:31989)'
-                            .'|3a3c/([^/]++)/([^/]++)/([^/]++)/fa3a3c(*:32037)'
-                            .'|83a1/([^/]++)/([^/]++)/([^/]++)/fa83a1(*:32085)'
-                        .')'
-                        .'|c(?'
-                            .'|cb3c/([^/]++)/([^/]++)/([^/]++)/fccb3c(*:32138)'
-                            .'|8001/([^/]++)/([^/]++)/([^/]++)/fc8001(*:32186)'
-                            .'|3cf4/([^/]++)/([^/]++)/([^/]++)/fc3cf4(*:32234)'
-                            .'|4930/([^/]++)/([^/]++)/([^/]++)/fc4930(*:32282)'
-                        .')'
-                        .'|64eac/([^/]++)/([^/]++)/([^/]++)/f64eac(*:32332)'
-                        .'|b8970/([^/]++)/([^/]++)/([^/]++)/fb8970(*:32381)'
-                        .'|1c159/([^/]++)/([^/]++)/([^/]++)/f1c159(*:32430)'
-                        .'|9(?'
-                            .'|028f/([^/]++)/([^/]++)/([^/]++)/f9028f(*:32482)'
-                            .'|a40a/([^/]++)/([^/]++)/([^/]++)/f9a40a(*:32530)'
-                        .')'
-                        .'|e(?'
-                            .'|8c15/([^/]++)/([^/]++)/([^/]++)/fe8c15(*:32583)'
-                            .'|c8d4/([^/]++)/([^/]++)/([^/]++)/fec8d4(*:32631)'
-                            .'|7ee8/([^/]++)/([^/]++)/([^/]++)/fe7ee8(*:32679)'
-                        .')'
-                    .')'
-                    .'|/3(?'
-                        .'|8(?'
-                            .'|9(?'
-                                .'|bc7/([^/]++)/([^/]++)/([^/]++)/389bc7(*:32741)'
-                                .'|13e/([^/]++)/([^/]++)/([^/]++)/38913e(*:32788)'
-                            .')'
-                            .'|71bd/([^/]++)/([^/]++)/([^/]++)/3871bd(*:32837)'
-                        .')'
-                        .'|d(?'
-                            .'|c487/([^/]++)/([^/]++)/([^/]++)/3dc487(*:32890)'
-                            .'|2d8c/([^/]++)/([^/]++)/([^/]++)/3d2d8c(*:32938)'
-                            .'|8e28/([^/]++)/([^/]++)/([^/]++)/3d8e28(*:32986)'
-                            .'|f1d4/([^/]++)/([^/]++)/([^/]++)/3df1d4(*:33034)'
-                        .')'
-                        .'|7f0e8/([^/]++)/([^/]++)/([^/]++)/37f0e8(*:33084)'
-                        .'|3(?'
-                            .'|e807/([^/]++)/([^/]++)/([^/]++)/33e807(*:33136)'
-                            .'|28bd/([^/]++)/([^/]++)/([^/]++)/3328bd(*:33184)'
-                        .')'
-                        .'|a(?'
-                            .'|0(?'
-                                .'|772/([^/]++)/([^/]++)/([^/]++)/3a0772(*:33240)'
-                                .'|66b/([^/]++)/([^/]++)/([^/]++)/3a066b(*:33287)'
-                            .')'
-                            .'|835d/([^/]++)/([^/]++)/([^/]++)/3a835d(*:33336)'
-                        .')'
-                        .'|0(?'
-                            .'|bb38/([^/]++)/([^/]++)/([^/]++)/30bb38(*:33389)'
-                            .'|3ed4/([^/]++)/([^/]++)/([^/]++)/303ed4(*:33437)'
-                            .'|ef30/([^/]++)/([^/]++)/([^/]++)/30ef30(*:33485)'
-                            .'|1ad0/([^/]++)/([^/]++)/([^/]++)/301ad0(*:33533)'
-                        .')'
-                        .'|4(?'
-                            .'|9389/([^/]++)/([^/]++)/([^/]++)/349389(*:33586)'
-                            .'|35c3/([^/]++)/([^/]++)/([^/]++)/3435c3(*:33634)'
-                        .')'
-                        .'|62(?'
-                            .'|1f1/([^/]++)/([^/]++)/([^/]++)/3621f1(*:33687)'
-                            .'|e80/([^/]++)/([^/]++)/([^/]++)/362e80(*:33734)'
-                        .')'
-                        .'|5(?'
-                            .'|cf86/([^/]++)/([^/]++)/([^/]++)/35cf86(*:33787)'
-                            .'|2407/([^/]++)/([^/]++)/([^/]++)/352407(*:33835)'
-                        .')'
-                        .'|2b30a/([^/]++)/([^/]++)/([^/]++)/32b30a(*:33885)'
-                        .'|1839b/([^/]++)/([^/]++)/([^/]++)/31839b(*:33934)'
-                        .'|b(?'
-                            .'|5dca/([^/]++)/([^/]++)/([^/]++)/3b5dca(*:33986)'
-                            .'|3dba/([^/]++)/([^/]++)/([^/]++)/3b3dba(*:34034)'
-                        .')'
-                        .'|e89eb/([^/]++)/([^/]++)/([^/]++)/3e89eb(*:34084)'
-                        .'|cef96/([^/]++)/([^/]++)/([^/]++)/3cef96(*:34133)'
-                    .')'
-                    .'|/0(?'
-                        .'|8(?'
-                            .'|7408/([^/]++)/([^/]++)/([^/]++)/087408(*:34191)'
-                            .'|b255/([^/]++)/([^/]++)/([^/]++)/08b255(*:34239)'
-                            .'|c543/([^/]++)/([^/]++)/([^/]++)/08c543(*:34287)'
-                            .'|d986/([^/]++)/([^/]++)/([^/]++)/08d986(*:34335)'
-                            .'|419b/([^/]++)/([^/]++)/([^/]++)/08419b(*:34383)'
-                        .')'
-                        .'|7(?'
-                            .'|563a/([^/]++)/([^/]++)/([^/]++)/07563a(*:34436)'
-                            .'|6a0c/([^/]++)/([^/]++)/([^/]++)/076a0c(*:34484)'
-                            .'|a96b/([^/]++)/([^/]++)/([^/]++)/07a96b(*:34532)'
-                            .'|c580/([^/]++)/([^/]++)/([^/]++)/07c580(*:34580)'
-                            .'|8719/([^/]++)/([^/]++)/([^/]++)/078719(*:34628)'
-                        .')'
-                        .'|f(?'
-                            .'|cbc6/([^/]++)/([^/]++)/([^/]++)/0fcbc6(*:34681)'
-                            .'|9661/([^/]++)/([^/]++)/([^/]++)/0f9661(*:34729)'
-                            .'|f(?'
-                                .'|39b/([^/]++)/([^/]++)/([^/]++)/0ff39b(*:34780)'
-                                .'|803/([^/]++)/([^/]++)/([^/]++)/0ff803(*:34827)'
-                            .')'
-                            .'|840b/([^/]++)/([^/]++)/([^/]++)/0f840b(*:34876)'
-                        .')'
-                        .'|1(?'
-                            .'|f78b/([^/]++)/([^/]++)/([^/]++)/01f78b(*:34929)'
-                            .'|3a00/([^/]++)/([^/]++)/([^/]++)/013a00(*:34977)'
-                            .'|8825/([^/]++)/([^/]++)/([^/]++)/018825(*:35025)'
-                        .')'
-                        .'|6(?'
-                            .'|9(?'
-                                .'|d3b/([^/]++)/([^/]++)/([^/]++)/069d3b(*:35081)'
-                                .'|97f/([^/]++)/([^/]++)/([^/]++)/06997f(*:35128)'
-                            .')'
-                            .'|1412/([^/]++)/([^/]++)/([^/]++)/061412(*:35177)'
-                        .')'
-                        .'|4(?'
-                            .'|ecb1/([^/]++)/([^/]++)/([^/]++)/04ecb1(*:35230)'
-                            .'|3c3d/([^/]++)/([^/]++)/([^/]++)/043c3d(*:35278)'
-                        .')'
-                        .'|0ac8e/([^/]++)/([^/]++)/([^/]++)/00ac8e(*:35328)'
-                        .'|5(?'
-                            .'|1e4e/([^/]++)/([^/]++)/([^/]++)/051e4e(*:35380)'
-                            .'|37fb/([^/]++)/([^/]++)/([^/]++)/0537fb(*:35428)'
-                        .')'
-                        .'|d(?'
-                            .'|7de1/([^/]++)/([^/]++)/([^/]++)/0d7de1(*:35481)'
-                            .'|3180/([^/]++)/([^/]++)/([^/]++)/0d3180(*:35529)'
-                            .'|0871/([^/]++)/([^/]++)/([^/]++)/0d0871(*:35577)'
-                        .')'
-                        .'|cb929/([^/]++)/([^/]++)/([^/]++)/0cb929(*:35627)'
-                        .'|2(?'
-                            .'|a32a/([^/]++)/([^/]++)/([^/]++)/02a32a(*:35679)'
-                            .'|4d7f/([^/]++)/([^/]++)/([^/]++)/024d7f(*:35727)'
-                        .')'
-                        .'|efe32/([^/]++)/([^/]++)/([^/]++)/0efe32(*:35777)'
-                        .'|a113e/([^/]++)/([^/]++)/([^/]++)/0a113e(*:35826)'
-                        .'|b8aff/([^/]++)/([^/]++)/([^/]++)/0b8aff(*:35875)'
-                    .')'
-                    .'|/a(?'
-                        .'|7(?'
-                            .'|6088/([^/]++)/([^/]++)/([^/]++)/a76088(*:35933)'
-                            .'|aeed/([^/]++)/([^/]++)/([^/]++)/a7aeed(*:35981)'
-                            .'|33fa/([^/]++)/([^/]++)/([^/]++)/a733fa(*:36029)'
-                        .')'
-                        .'|9a(?'
-                            .'|665/([^/]++)/([^/]++)/([^/]++)/a9a665(*:36082)'
-                            .'|1d5/([^/]++)/([^/]++)/([^/]++)/a9a1d5(*:36129)'
-                        .')'
-                        .'|8(?'
-                            .'|6c45/([^/]++)/([^/]++)/([^/]++)/a86c45(*:36182)'
-                            .'|849b/([^/]++)/([^/]++)/([^/]++)/a8849b(*:36230)'
-                            .'|e(?'
-                                .'|864/([^/]++)/([^/]++)/([^/]++)/a8e864(*:36281)'
-                                .'|cba/([^/]++)/([^/]++)/([^/]++)/a8ecba(*:36328)'
-                            .')'
-                        .')'
-                        .'|c(?'
-                            .'|c3e0/([^/]++)/([^/]++)/([^/]++)/acc3e0(*:36382)'
-                            .'|f4b8/([^/]++)/([^/]++)/([^/]++)/acf4b8(*:36430)'
-                        .')'
-                        .'|b(?'
-                            .'|d815/([^/]++)/([^/]++)/([^/]++)/abd815(*:36483)'
-                            .'|233b/([^/]++)/([^/]++)/([^/]++)/ab233b(*:36531)'
-                            .'|a3b6/([^/]++)/([^/]++)/([^/]++)/aba3b6(*:36579)'
-                            .'|88b1/([^/]++)/([^/]++)/([^/]++)/ab88b1(*:36627)'
-                        .')'
-                        .'|5(?'
-                            .'|3240/([^/]++)/([^/]++)/([^/]++)/a53240(*:36680)'
-                            .'|cdd4/([^/]++)/([^/]++)/([^/]++)/a5cdd4(*:36728)'
-                        .')'
-                        .'|f(?'
-                            .'|d(?'
-                                .'|483/([^/]++)/([^/]++)/([^/]++)/afd483(*:36784)'
-                                .'|a33/([^/]++)/([^/]++)/([^/]++)/afda33(*:36831)'
-                            .')'
-                            .'|f162/([^/]++)/([^/]++)/([^/]++)/aff162(*:36880)'
-                        .')'
-                        .'|e(?'
-                            .'|0eb3/([^/]++)/([^/]++)/([^/]++)/ae0eb3(*:36933)'
-                            .'|b313/([^/]++)/([^/]++)/([^/]++)/aeb313(*:36981)'
-                        .')'
-                        .'|1(?'
-                            .'|d33d/([^/]++)/([^/]++)/([^/]++)/a1d33d(*:37034)'
-                            .'|140a/([^/]++)/([^/]++)/([^/]++)/a1140a(*:37082)'
-                        .')'
-                        .'|ddfa9/([^/]++)/([^/]++)/([^/]++)/addfa9(*:37132)'
-                        .'|6(?'
-                            .'|7f09/([^/]++)/([^/]++)/([^/]++)/a67f09(*:37184)'
-                            .'|4c94/([^/]++)/([^/]++)/([^/]++)/a64c94(*:37232)'
-                        .')'
-                        .'|a169b/([^/]++)/([^/]++)/([^/]++)/aa169b(*:37282)'
-                        .'|4300b/([^/]++)/([^/]++)/([^/]++)/a4300b(*:37331)'
-                        .'|3d68b/([^/]++)/([^/]++)/([^/]++)/a3d68b(*:37380)'
-                    .')'
-                    .'|/1(?'
-                        .'|0(?'
-                            .'|a(?'
-                                .'|7cd/([^/]++)/([^/]++)/([^/]++)/10a7cd(*:37441)'
-                                .'|5ab/([^/]++)/([^/]++)/([^/]++)/10a5ab(*:37488)'
-                            .')'
-                            .'|9a0c/([^/]++)/([^/]++)/([^/]++)/109a0c(*:37537)'
-                        .')'
-                        .'|3f320/([^/]++)/([^/]++)/([^/]++)/13f320(*:37587)'
-                        .'|6(?'
-                            .'|c222/([^/]++)/([^/]++)/([^/]++)/16c222(*:37639)'
-                            .'|8908/([^/]++)/([^/]++)/([^/]++)/168908(*:37687)'
-                        .')'
-                        .'|5(?'
-                            .'|de21/([^/]++)/([^/]++)/([^/]++)/15de21(*:37740)'
-                            .'|95af/([^/]++)/([^/]++)/([^/]++)/1595af(*:37788)'
-                        .')'
-                        .'|1(?'
-                            .'|b921/([^/]++)/([^/]++)/([^/]++)/11b921(*:37841)'
-                            .'|4193/([^/]++)/([^/]++)/([^/]++)/114193(*:37889)'
-                        .')'
-                        .'|bb91f/([^/]++)/([^/]++)/([^/]++)/1bb91f(*:37939)'
-                        .'|7(?'
-                            .'|28ef/([^/]++)/([^/]++)/([^/]++)/1728ef(*:37991)'
-                            .'|c276/([^/]++)/([^/]++)/([^/]++)/17c276(*:38039)'
-                            .'|0c94/([^/]++)/([^/]++)/([^/]++)/170c94(*:38087)'
-                        .')'
-                        .'|85(?'
-                            .'|c29/([^/]++)/([^/]++)/([^/]++)/185c29(*:38140)'
-                            .'|e65/([^/]++)/([^/]++)/([^/]++)/185e65(*:38187)'
-                        .')'
-                        .'|9(?'
-                            .'|2fc0/([^/]++)/([^/]++)/([^/]++)/192fc0(*:38240)'
-                            .'|b(?'
-                                .'|c91/([^/]++)/([^/]++)/([^/]++)/19bc91(*:38291)'
-                                .'|650/([^/]++)/([^/]++)/([^/]++)/19b650(*:38338)'
-                            .')'
-                            .'|05ae/([^/]++)/([^/]++)/([^/]++)/1905ae(*:38387)'
-                        .')'
-                        .'|e(?'
-                            .'|cfb4/([^/]++)/([^/]++)/([^/]++)/1ecfb4(*:38440)'
-                            .'|fa39/([^/]++)/([^/]++)/([^/]++)/1efa39(*:38488)'
-                            .'|056d/([^/]++)/([^/]++)/([^/]++)/1e056d(*:38536)'
-                        .')'
-                        .'|aa48f/([^/]++)/([^/]++)/([^/]++)/1aa48f(*:38586)'
-                        .'|f(?'
-                            .'|c214/([^/]++)/([^/]++)/([^/]++)/1fc214(*:38638)'
-                            .'|5089/([^/]++)/([^/]++)/([^/]++)/1f5089(*:38686)'
-                            .'|4477/([^/]++)/([^/]++)/([^/]++)/1f4477(*:38734)'
-                        .')'
-                        .'|c(?'
-                            .'|c363/([^/]++)/([^/]++)/([^/]++)/1cc363(*:38787)'
-                            .'|1d4d/([^/]++)/([^/]++)/([^/]++)/1c1d4d(*:38835)'
-                            .'|e927/([^/]++)/([^/]++)/([^/]++)/1ce927(*:38883)'
-                        .')'
-                    .')'
-                    .'|/6(?'
-                        .'|3(?'
-                            .'|538f/([^/]++)/([^/]++)/([^/]++)/63538f(*:38942)'
-                            .'|2cee/([^/]++)/([^/]++)/([^/]++)/632cee(*:38990)'
-                            .'|95eb/([^/]++)/([^/]++)/([^/]++)/6395eb(*:39038)'
-                        .')'
-                        .'|9(?'
-                            .'|421f/([^/]++)/([^/]++)/([^/]++)/69421f(*:39091)'
-                            .'|2f93/([^/]++)/([^/]++)/([^/]++)/692f93(*:39139)'
-                        .')'
-                        .'|5658f/([^/]++)/([^/]++)/([^/]++)/65658f(*:39189)'
-                        .'|4(?'
-                            .'|7bba/([^/]++)/([^/]++)/([^/]++)/647bba(*:39241)'
-                            .'|223c/([^/]++)/([^/]++)/([^/]++)/64223c(*:39289)'
-                        .')'
-                        .'|e(?'
-                            .'|2713/([^/]++)/([^/]++)/([^/]++)/6e2713(*:39342)'
-                            .'|0721/([^/]++)/([^/]++)/([^/]++)/6e0721(*:39390)'
-                            .'|7b33/([^/]++)/([^/]++)/([^/]++)/6e7b33(*:39438)'
-                        .')'
-                        .'|0(?'
-                            .'|5ff7/([^/]++)/([^/]++)/([^/]++)/605ff7(*:39491)'
-                            .'|8159/([^/]++)/([^/]++)/([^/]++)/608159(*:39539)'
-                        .')'
-                        .'|a(?'
-                            .'|ca97/([^/]++)/([^/]++)/([^/]++)/6aca97(*:39592)'
-                            .'|10bb/([^/]++)/([^/]++)/([^/]++)/6a10bb(*:39640)'
-                            .'|ab12/([^/]++)/([^/]++)/([^/]++)/6aab12(*:39688)'
-                        .')'
-                        .'|7(?'
-                            .'|66aa/([^/]++)/([^/]++)/([^/]++)/6766aa(*:39741)'
-                            .'|e103/([^/]++)/([^/]++)/([^/]++)/67e103(*:39789)'
-                            .'|d(?'
-                                .'|96d/([^/]++)/([^/]++)/([^/]++)/67d96d(*:39840)'
-                                .'|16d/([^/]++)/([^/]++)/([^/]++)/67d16d(*:39887)'
-                            .')'
-                            .'|0e8a/([^/]++)/([^/]++)/([^/]++)/670e8a(*:39936)'
-                            .'|7e09/([^/]++)/([^/]++)/([^/]++)/677e09(*:39984)'
-                        .')'
-                        .'|8(?'
-                            .'|264b/([^/]++)/([^/]++)/([^/]++)/68264b(*:40037)'
-                            .'|053a/([^/]++)/([^/]++)/([^/]++)/68053a(*:40085)'
-                        .')'
-                        .'|c(?'
-                            .'|2979/([^/]++)/([^/]++)/([^/]++)/6c2979(*:40138)'
-                            .'|d67d/([^/]++)/([^/]++)/([^/]++)/6cd67d(*:40186)'
-                            .'|3cf7/([^/]++)/([^/]++)/([^/]++)/6c3cf7(*:40234)'
-                            .'|fe0e/([^/]++)/([^/]++)/([^/]++)/6cfe0e(*:40282)'
-                        .')'
-                        .'|bc24f/([^/]++)/([^/]++)/([^/]++)/6bc24f(*:40332)'
-                        .'|f2268/([^/]++)/([^/]++)/([^/]++)/6f2268(*:40381)'
-                        .'|1b4a6/([^/]++)/([^/]++)/([^/]++)/61b4a6(*:40430)'
-                        .'|21461/([^/]++)/([^/]++)/([^/]++)/621461(*:40479)'
-                        .'|d0f84/([^/]++)/([^/]++)/([^/]++)/6d0f84(*:40528)'
-                        .'|60229/([^/]++)/([^/]++)/([^/]++)/660229(*:40577)'
-                    .')'
-                    .'|/c(?'
-                        .'|f(?'
-                            .'|6735/([^/]++)/([^/]++)/([^/]++)/cf6735(*:40635)'
-                            .'|bce4/([^/]++)/([^/]++)/([^/]++)/cfbce4(*:40683)'
-                        .')'
-                        .'|3(?'
-                            .'|99(?'
-                                .'|86/([^/]++)/([^/]++)/([^/]++)/c39986(*:40739)'
-                                .'|2e/([^/]++)/([^/]++)/([^/]++)/c3992e(*:40785)'
-                            .')'
-                            .'|61bc/([^/]++)/([^/]++)/([^/]++)/c361bc(*:40834)'
-                            .'|2d9b/([^/]++)/([^/]++)/([^/]++)/c32d9b(*:40882)'
-                        .')'
-                        .'|75b6f/([^/]++)/([^/]++)/([^/]++)/c75b6f(*:40932)'
-                        .'|c(?'
-                            .'|b(?'
-                                .'|1d4/([^/]++)/([^/]++)/([^/]++)/ccb1d4(*:40987)'
-                                .'|098/([^/]++)/([^/]++)/([^/]++)/ccb098(*:41034)'
-                            .')'
-                            .'|c0aa/([^/]++)/([^/]++)/([^/]++)/ccc0aa(*:41083)'
-                            .'|1aa4/([^/]++)/([^/]++)/([^/]++)/cc1aa4(*:41131)'
-                        .')'
-                        .'|b(?'
-                            .'|cb58/([^/]++)/([^/]++)/([^/]++)/cbcb58(*:41184)'
-                            .'|b6a3/([^/]++)/([^/]++)/([^/]++)/cbb6a3(*:41232)'
-                        .')'
-                        .'|9892a/([^/]++)/([^/]++)/([^/]++)/c9892a(*:41282)'
-                        .'|6e19e/([^/]++)/([^/]++)/([^/]++)/c6e19e(*:41331)'
-                        .'|dc0d6/([^/]++)/([^/]++)/([^/]++)/cdc0d6(*:41380)'
-                        .'|5ab0b/([^/]++)/([^/]++)/([^/]++)/c5ab0b(*:41429)'
-                        .'|a(?'
-                            .'|9c26/([^/]++)/([^/]++)/([^/]++)/ca9c26(*:41481)'
-                            .'|8155/([^/]++)/([^/]++)/([^/]++)/ca8155(*:41529)'
-                            .'|7591/([^/]++)/([^/]++)/([^/]++)/ca7591(*:41577)'
-                        .')'
-                        .'|0(?'
-                            .'|6d06/([^/]++)/([^/]++)/([^/]++)/c06d06(*:41630)'
-                            .'|f168/([^/]++)/([^/]++)/([^/]++)/c0f168(*:41678)'
-                        .')'
-                        .'|8(?'
-                            .'|ed21/([^/]++)/([^/]++)/([^/]++)/c8ed21(*:41731)'
-                            .'|fbbc/([^/]++)/([^/]++)/([^/]++)/c8fbbc(*:41779)'
-                            .'|c41c/([^/]++)/([^/]++)/([^/]++)/c8c41c(*:41827)'
-                        .')'
-                        .'|15da1/([^/]++)/([^/]++)/([^/]++)/c15da1(*:41877)'
-                        .'|2(?'
-                            .'|626d/([^/]++)/([^/]++)/([^/]++)/c2626d(*:41929)'
-                            .'|aee8/([^/]++)/([^/]++)/([^/]++)/c2aee8(*:41977)'
-                            .'|2abf/([^/]++)/([^/]++)/([^/]++)/c22abf(*:42025)'
-                        .')'
-                        .'|e78d1/([^/]++)/([^/]++)/([^/]++)/ce78d1(*:42075)'
-                        .'|4(?'
-                            .'|015b/([^/]++)/([^/]++)/([^/]++)/c4015b(*:42127)'
-                            .'|b31c/([^/]++)/([^/]++)/([^/]++)/c4b31c(*:42175)'
-                        .')'
-                    .')'
-                    .'|/8(?'
-                        .'|5(?'
-                            .'|422a/([^/]++)/([^/]++)/([^/]++)/85422a(*:42234)'
-                            .'|1ddf/([^/]++)/([^/]++)/([^/]++)/851ddf(*:42282)'
-                            .'|fc37/([^/]++)/([^/]++)/([^/]++)/85fc37(*:42330)'
-                        .')'
-                        .'|1(?'
-                            .'|4481/([^/]++)/([^/]++)/([^/]++)/814481(*:42383)'
-                            .'|e74d/([^/]++)/([^/]++)/([^/]++)/81e74d(*:42431)'
-                        .')'
-                        .'|d(?'
-                            .'|3(?'
-                                .'|420/([^/]++)/([^/]++)/([^/]++)/8d3420(*:42487)'
-                                .'|17b/([^/]++)/([^/]++)/([^/]++)/8d317b(*:42534)'
-                            .')'
-                            .'|f707/([^/]++)/([^/]++)/([^/]++)/8df707(*:42583)'
-                            .'|6dc3/([^/]++)/([^/]++)/([^/]++)/8d6dc3(*:42631)'
-                        .')'
-                        .'|e(?'
-                            .'|efcf/([^/]++)/([^/]++)/([^/]++)/8eefcf(*:42684)'
-                            .'|bda5/([^/]++)/([^/]++)/([^/]++)/8ebda5(*:42732)'
-                            .'|82ab/([^/]++)/([^/]++)/([^/]++)/8e82ab(*:42780)'
-                        .')'
-                        .'|b(?'
-                            .'|16eb/([^/]++)/([^/]++)/([^/]++)/8b16eb(*:42833)'
-                            .'|6dd7/([^/]++)/([^/]++)/([^/]++)/8b6dd7(*:42881)'
-                            .'|5040/([^/]++)/([^/]++)/([^/]++)/8b5040(*:42929)'
-                        .')'
-                        .'|c(?'
-                            .'|7bbb/([^/]++)/([^/]++)/([^/]++)/8c7bbb(*:42982)'
-                            .'|6744/([^/]++)/([^/]++)/([^/]++)/8c6744(*:43030)'
-                            .'|235f/([^/]++)/([^/]++)/([^/]++)/8c235f(*:43078)'
-                        .')'
-                        .'|8(?'
-                            .'|4d24/([^/]++)/([^/]++)/([^/]++)/884d24(*:43131)'
-                            .'|ae63/([^/]++)/([^/]++)/([^/]++)/88ae63(*:43179)'
-                        .')'
-                        .'|7(?'
-                            .'|5715/([^/]++)/([^/]++)/([^/]++)/875715(*:43232)'
-                            .'|2488/([^/]++)/([^/]++)/([^/]++)/872488(*:43280)'
-                        .')'
-                        .'|4(?'
-                            .'|1172/([^/]++)/([^/]++)/([^/]++)/841172(*:43333)'
-                            .'|6c26/([^/]++)/([^/]++)/([^/]++)/846c26(*:43381)'
-                            .'|f7e6/([^/]++)/([^/]++)/([^/]++)/84f7e6(*:43429)'
-                            .'|7cc5/([^/]++)/([^/]++)/([^/]++)/847cc5(*:43477)'
-                        .')'
-                        .'|f(?'
-                            .'|ecb2/([^/]++)/([^/]++)/([^/]++)/8fecb2(*:43530)'
-                            .'|7d80/([^/]++)/([^/]++)/([^/]++)/8f7d80(*:43578)'
-                            .'|468c/([^/]++)/([^/]++)/([^/]++)/8f468c(*:43626)'
-                        .')'
-                        .'|a0e11/([^/]++)/([^/]++)/([^/]++)/8a0e11(*:43676)'
-                        .'|2(?'
-                            .'|f2b3/([^/]++)/([^/]++)/([^/]++)/82f2b3(*:43728)'
-                            .'|489c/([^/]++)/([^/]++)/([^/]++)/82489c(*:43776)'
-                        .')'
-                        .'|6(?'
-                            .'|b122/([^/]++)/([^/]++)/([^/]++)/86b122(*:43829)'
-                            .'|0320/([^/]++)/([^/]++)/([^/]++)/860320(*:43877)'
-                        .')'
-                        .'|9(?'
-                            .'|2c91/([^/]++)/([^/]++)/([^/]++)/892c91(*:43930)'
-                            .'|fcd0/([^/]++)/([^/]++)/([^/]++)/89fcd0(*:43978)'
-                        .')'
-                        .'|065d0/([^/]++)/([^/]++)/([^/]++)/8065d0(*:44028)'
-                    .')'
-                    .'|/d(?'
-                        .'|6(?'
-                            .'|4a34/([^/]++)/([^/]++)/([^/]++)/d64a34(*:44086)'
-                            .'|c651/([^/]++)/([^/]++)/([^/]++)/d6c651(*:44134)'
-                        .')'
-                        .'|f(?'
-                            .'|877f/([^/]++)/([^/]++)/([^/]++)/df877f(*:44187)'
-                            .'|263d/([^/]++)/([^/]++)/([^/]++)/df263d(*:44235)'
-                            .'|7f28/([^/]++)/([^/]++)/([^/]++)/df7f28(*:44283)'
-                            .'|6d23/([^/]++)/([^/]++)/([^/]++)/df6d23(*:44331)'
-                        .')'
-                        .'|b(?'
-                            .'|85e2/([^/]++)/([^/]++)/([^/]++)/db85e2(*:44384)'
-                            .'|e272/([^/]++)/([^/]++)/([^/]++)/dbe272(*:44432)'
-                        .')'
-                        .'|d(?'
-                            .'|45(?'
-                                .'|85/([^/]++)/([^/]++)/([^/]++)/dd4585(*:44488)'
-                                .'|04/([^/]++)/([^/]++)/([^/]++)/dd4504(*:44534)'
-                            .')'
-                            .'|8eb9/([^/]++)/([^/]++)/([^/]++)/dd8eb9(*:44583)'
-                        .')'
-                        .'|a(?'
-                            .'|ca41/([^/]++)/([^/]++)/([^/]++)/daca41(*:44636)'
-                            .'|8ce5/([^/]++)/([^/]++)/([^/]++)/da8ce5(*:44684)'
-                            .'|0d11/([^/]++)/([^/]++)/([^/]++)/da0d11(*:44732)'
-                        .')'
-                        .'|4(?'
-                            .'|90d7/([^/]++)/([^/]++)/([^/]++)/d490d7(*:44785)'
-                            .'|c2e4/([^/]++)/([^/]++)/([^/]++)/d4c2e4(*:44833)'
-                        .')'
-                        .'|8(?'
-                            .'|6ea6/([^/]++)/([^/]++)/([^/]++)/d86ea6(*:44886)'
-                            .'|40cc/([^/]++)/([^/]++)/([^/]++)/d840cc(*:44934)'
-                        .')'
-                        .'|c(?'
-                            .'|82d6/([^/]++)/([^/]++)/([^/]++)/dc82d6(*:44987)'
-                            .'|6a70/([^/]++)/([^/]++)/([^/]++)/dc6a70(*:45035)'
-                            .'|5689/([^/]++)/([^/]++)/([^/]++)/dc5689(*:45083)'
-                        .')'
-                        .'|7(?'
-                            .'|a728/([^/]++)/([^/]++)/([^/]++)/d7a728(*:45136)'
-                            .'|0732/([^/]++)/([^/]++)/([^/]++)/d70732(*:45184)'
-                            .'|9aac/([^/]++)/([^/]++)/([^/]++)/d79aac(*:45232)'
-                        .')'
-                        .'|14220/([^/]++)/([^/]++)/([^/]++)/d14220(*:45282)'
-                        .'|5(?'
-                            .'|cfea/([^/]++)/([^/]++)/([^/]++)/d5cfea(*:45334)'
-                            .'|8072/([^/]++)/([^/]++)/([^/]++)/d58072(*:45382)'
-                            .'|54f7/([^/]++)/([^/]++)/([^/]++)/d554f7(*:45430)'
-                            .'|16b1/([^/]++)/([^/]++)/([^/]++)/d516b1(*:45478)'
-                            .'|6b9f/([^/]++)/([^/]++)/([^/]++)/d56b9f(*:45526)'
-                        .')'
-                        .'|045c5/([^/]++)/([^/]++)/([^/]++)/d045c5(*:45576)'
-                        .'|2(?'
-                            .'|ed45/([^/]++)/([^/]++)/([^/]++)/d2ed45(*:45628)'
-                            .'|40e3/([^/]++)/([^/]++)/([^/]++)/d240e3(*:45676)'
-                        .')'
-                        .'|93ed5/([^/]++)/([^/]++)/([^/]++)/d93ed5(*:45726)'
-                    .')'
-                    .'|/7(?'
-                        .'|b(?'
-                            .'|cdf7/([^/]++)/([^/]++)/([^/]++)/7bcdf7(*:45784)'
-                            .'|13b2/([^/]++)/([^/]++)/([^/]++)/7b13b2(*:45832)'
-                        .')'
-                        .'|dcd34/([^/]++)/([^/]++)/([^/]++)/7dcd34(*:45882)'
-                        .'|f(?'
-                            .'|24d2/([^/]++)/([^/]++)/([^/]++)/7f24d2(*:45934)'
-                            .'|5d04/([^/]++)/([^/]++)/([^/]++)/7f5d04(*:45982)'
-                            .'|1171/([^/]++)/([^/]++)/([^/]++)/7f1171(*:46030)'
-                            .'|a732/([^/]++)/([^/]++)/([^/]++)/7fa732(*:46078)'
-                        .')'
-                        .'|6(?'
-                            .'|6ebc/([^/]++)/([^/]++)/([^/]++)/766ebc(*:46131)'
-                            .'|34ea/([^/]++)/([^/]++)/([^/]++)/7634ea(*:46179)'
-                        .')'
-                        .'|750ca/([^/]++)/([^/]++)/([^/]++)/7750ca(*:46229)'
-                        .'|1(?'
-                            .'|a(?'
-                                .'|3cb/([^/]++)/([^/]++)/([^/]++)/71a3cb(*:46284)'
-                                .'|d16/([^/]++)/([^/]++)/([^/]++)/71ad16(*:46331)'
-                            .')'
-                            .'|43d7/([^/]++)/([^/]++)/([^/]++)/7143d7(*:46380)'
-                        .')'
-                        .'|88d98/([^/]++)/([^/]++)/([^/]++)/788d98(*:46430)'
-                        .'|2(?'
-                            .'|da7f/([^/]++)/([^/]++)/([^/]++)/72da7f(*:46482)'
-                            .'|50eb/([^/]++)/([^/]++)/([^/]++)/7250eb(*:46530)'
-                        .')'
-                        .'|c(?'
-                            .'|590f/([^/]++)/([^/]++)/([^/]++)/7c590f(*:46583)'
-                            .'|e328/([^/]++)/([^/]++)/([^/]++)/7ce328(*:46631)'
-                        .')'
-                        .'|a5392/([^/]++)/([^/]++)/([^/]++)/7a5392(*:46681)'
-                        .'|95c7a/([^/]++)/([^/]++)/([^/]++)/795c7a(*:46730)'
-                        .'|504ad/([^/]++)/([^/]++)/([^/]++)/7504ad(*:46779)'
-                        .'|04afe/([^/]++)/([^/]++)/([^/]++)/704afe(*:46828)'
-                        .'|4bba2/([^/]++)/([^/]++)/([^/]++)/74bba2(*:46877)'
-                    .')'
-                    .'|/9(?'
-                        .'|b(?'
-                            .'|72e3/([^/]++)/([^/]++)/([^/]++)/9b72e3(*:46935)'
-                            .'|698e/([^/]++)/([^/]++)/([^/]++)/9b698e(*:46983)'
-                        .')'
-                        .'|7e852/([^/]++)/([^/]++)/([^/]++)/97e852(*:47033)'
-                        .'|4c7bb/([^/]++)/([^/]++)/([^/]++)/94c7bb(*:47082)'
-                        .'|9(?'
-                            .'|c5e0/([^/]++)/([^/]++)/([^/]++)/99c5e0(*:47134)'
-                            .'|6a7f/([^/]++)/([^/]++)/([^/]++)/996a7f(*:47182)'
-                            .'|bcfc/([^/]++)/([^/]++)/([^/]++)/99bcfc(*:47230)'
-                            .'|0827/([^/]++)/([^/]++)/([^/]++)/990827(*:47278)'
-                        .')'
-                        .'|a(?'
-                            .'|d6aa/([^/]++)/([^/]++)/([^/]++)/9ad6aa(*:47331)'
-                            .'|b0d8/([^/]++)/([^/]++)/([^/]++)/9ab0d8(*:47379)'
-                        .')'
-                        .'|c(?'
-                            .'|f81d/([^/]++)/([^/]++)/([^/]++)/9cf81d(*:47432)'
-                            .'|c138/([^/]++)/([^/]++)/([^/]++)/9cc138(*:47480)'
-                            .'|82c7/([^/]++)/([^/]++)/([^/]++)/9c82c7(*:47528)'
-                            .'|0180/([^/]++)/([^/]++)/([^/]++)/9c0180(*:47576)'
-                        .')'
-                        .'|f(?'
-                            .'|396f/([^/]++)/([^/]++)/([^/]++)/9f396f(*:47629)'
-                            .'|e859/([^/]++)/([^/]++)/([^/]++)/9fe859(*:47677)'
-                            .'|53d8/([^/]++)/([^/]++)/([^/]++)/9f53d8(*:47725)'
-                        .')'
-                        .'|12d2b/([^/]++)/([^/]++)/([^/]++)/912d2b(*:47775)'
-                        .'|59a55/([^/]++)/([^/]++)/([^/]++)/959a55(*:47824)'
-                        .'|6(?'
-                            .'|ea64/([^/]++)/([^/]++)/([^/]++)/96ea64(*:47876)'
-                            .'|b9bf/([^/]++)/([^/]++)/([^/]++)/96b9bf(*:47924)'
-                        .')'
-                        .'|e3cfc/([^/]++)/([^/]++)/([^/]++)/9e3cfc(*:47974)'
-                        .'|2(?'
-                            .'|fb0c/([^/]++)/([^/]++)/([^/]++)/92fb0c(*:48026)'
-                            .'|262b/([^/]++)/([^/]++)/([^/]++)/92262b(*:48074)'
-                            .'|32fe/([^/]++)/([^/]++)/([^/]++)/9232fe(*:48122)'
-                            .'|977a/([^/]++)/([^/]++)/([^/]++)/92977a(*:48170)'
-                        .')'
-                        .'|8d6f5/([^/]++)/([^/]++)/([^/]++)/98d6f5(*:48220)'
-                        .'|0794e/([^/]++)/([^/]++)/([^/]++)/90794e(*:48269)'
-                        .'|34815/([^/]++)/([^/]++)/([^/]++)/934815(*:48318)'
-                    .')'
-                    .'|/4(?'
-                        .'|e(?'
-                            .'|4b5f/([^/]++)/([^/]++)/([^/]++)/4e4b5f(*:48376)'
-                            .'|a06f/([^/]++)/([^/]++)/([^/]++)/4ea06f(*:48424)'
-                            .'|0(?'
-                                .'|928/([^/]++)/([^/]++)/([^/]++)/4e0928(*:48475)'
-                                .'|cb6/([^/]++)/([^/]++)/([^/]++)/4e0cb6(*:48522)'
-                            .')'
-                        .')'
-                        .'|6922a/([^/]++)/([^/]++)/([^/]++)/46922a(*:48573)'
-                        .'|4(?'
-                            .'|c4c1/([^/]++)/([^/]++)/([^/]++)/44c4c1(*:48625)'
-                            .'|3cb0/([^/]++)/([^/]++)/([^/]++)/443cb0(*:48673)'
-                        .')'
-                        .'|8ab2f/([^/]++)/([^/]++)/([^/]++)/48ab2f(*:48723)'
-                        .'|5(?'
-                            .'|645a/([^/]++)/([^/]++)/([^/]++)/45645a(*:48775)'
-                            .'|58db/([^/]++)/([^/]++)/([^/]++)/4558db(*:48823)'
-                        .')'
-                        .'|2e77b/([^/]++)/([^/]++)/([^/]++)/42e77b(*:48873)'
-                        .'|c27ce/([^/]++)/([^/]++)/([^/]++)/4c27ce(*:48922)'
-                        .'|f(?'
-                            .'|fce0/([^/]++)/([^/]++)/([^/]++)/4ffce0(*:48974)'
-                            .'|ac9b/([^/]++)/([^/]++)/([^/]++)/4fac9b(*:49022)'
-                        .')'
-                        .'|a47d2/([^/]++)/([^/]++)/([^/]++)/4a47d2(*:49072)'
-                        .'|70e7a/([^/]++)/([^/]++)/([^/]++)/470e7a(*:49121)'
-                        .'|b(?'
-                            .'|0(?'
-                                .'|4a6/([^/]++)/([^/]++)/([^/]++)/4b04a6(*:49176)'
-                                .'|a59/([^/]++)/([^/]++)/([^/]++)/4b0a59(*:49223)'
-                                .'|250/([^/]++)/([^/]++)/([^/]++)/4b0250(*:49270)'
-                            .')'
-                            .'|6538/([^/]++)/([^/]++)/([^/]++)/4b6538(*:49319)'
-                        .')'
-                        .'|3(?'
-                            .'|f(?'
-                                .'|a7f/([^/]++)/([^/]++)/([^/]++)/43fa7f(*:49375)'
-                                .'|eae/([^/]++)/([^/]++)/([^/]++)/43feae(*:49422)'
-                            .')'
-                            .'|0c36/([^/]++)/([^/]++)/([^/]++)/430c36(*:49471)'
-                            .'|7d7d/([^/]++)/([^/]++)/([^/]++)/437d7d(*:49519)'
-                            .'|1135/([^/]++)/([^/]++)/([^/]++)/431135(*:49567)'
-                        .')'
-                        .'|d(?'
-                            .'|5b99/([^/]++)/([^/]++)/([^/]++)/4d5b99(*:49620)'
-                            .'|aa3d/([^/]++)/([^/]++)/([^/]++)/4daa3d(*:49668)'
-                        .')'
-                        .'|9c9ad/([^/]++)/([^/]++)/([^/]++)/49c9ad(*:49718)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            54 => [[['_route' => '_0'], ['a', 'b', 'c'], null, null, false, false, null]],
-            102 => [[['_route' => '_190'], ['a', 'b', 'c'], null, null, false, false, null]],
-            147 => [[['_route' => '_478'], ['a', 'b', 'c'], null, null, false, false, null]],
-            194 => [[['_route' => '_259'], ['a', 'b', 'c'], null, null, false, false, null]],
-            240 => [[['_route' => '_368'], ['a', 'b', 'c'], null, null, false, false, null]],
-            291 => [[['_route' => '_1'], ['a', 'b', 'c'], null, null, false, false, null]],
-            337 => [[['_route' => '_116'], ['a', 'b', 'c'], null, null, false, false, null]],
-            383 => [[['_route' => '_490'], ['a', 'b', 'c'], null, null, false, false, null]],
-            434 => [[['_route' => '_2'], ['a', 'b', 'c'], null, null, false, false, null]],
-            480 => [[['_route' => '_124'], ['a', 'b', 'c'], null, null, false, false, null]],
-            526 => [[['_route' => '_389'], ['a', 'b', 'c'], null, null, false, false, null]],
-            577 => [[['_route' => '_8'], ['a', 'b', 'c'], null, null, false, false, null]],
-            623 => [[['_route' => '_104'], ['a', 'b', 'c'], null, null, false, false, null]],
-            677 => [[['_route' => '_12'], ['a', 'b', 'c'], null, null, false, false, null]],
-            722 => [[['_route' => '_442'], ['a', 'b', 'c'], null, null, false, false, null]],
-            769 => [[['_route' => '_253'], ['a', 'b', 'c'], null, null, false, false, null]],
-            820 => [[['_route' => '_13'], ['a', 'b', 'c'], null, null, false, false, null]],
-            866 => [[['_route' => '_254'], ['a', 'b', 'c'], null, null, false, false, null]],
-            912 => [[['_route' => '_347'], ['a', 'b', 'c'], null, null, false, false, null]],
-            963 => [[['_route' => '_16'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1009 => [[['_route' => '_87'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1058 => [[['_route' => '_31'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1109 => [[['_route' => '_50'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1156 => [[['_route' => '_219'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1203 => [[['_route' => '_332'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1250 => [[['_route' => '_359'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1302 => [[['_route' => '_183'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1349 => [[['_route' => '_500'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1401 => [[['_route' => '_214'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1448 => [[['_route' => '_321'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1497 => [[['_route' => '_243'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1545 => [[['_route' => '_328'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1596 => [[['_route' => '_362'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1643 => [[['_route' => '_488'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1701 => [[['_route' => '_3'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1751 => [[['_route' => '_102'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1797 => [[['_route' => '_220'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1845 => [[['_route' => '_127'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1897 => [[['_route' => '_5'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1944 => [[['_route' => '_242'], ['a', 'b', 'c'], null, null, false, false, null]],
-            1991 => [[['_route' => '_397'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2038 => [[['_route' => '_454'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2090 => [[['_route' => '_34'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2137 => [[['_route' => '_281'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2189 => [[['_route' => '_64'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2236 => [[['_route' => '_205'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2291 => [[['_route' => '_71'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2337 => [[['_route' => '_203'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2385 => [[['_route' => '_97'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2437 => [[['_route' => '_98'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2484 => [[['_route' => '_267'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2531 => [[['_route' => '_309'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2586 => [[['_route' => '_117'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2631 => [[['_route' => '_211'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2679 => [[['_route' => '_484'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2731 => [[['_route' => '_139'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2778 => [[['_route' => '_421'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2830 => [[['_route' => '_185'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2877 => [[['_route' => '_439'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2926 => [[['_route' => '_218'], ['a', 'b', 'c'], null, null, false, false, null]],
-            2977 => [[['_route' => '_233'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3024 => [[['_route' => '_483'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3073 => [[['_route' => '_265'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3124 => [[['_route' => '_299'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3171 => [[['_route' => '_351'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3218 => [[['_route' => '_472'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3267 => [[['_route' => '_360'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3315 => [[['_route' => '_466'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3372 => [[['_route' => '_4'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3419 => [[['_route' => '_142'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3466 => [[['_route' => '_151'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3513 => [[['_route' => '_308'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3560 => [[['_route' => '_440'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3612 => [[['_route' => '_14'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3659 => [[['_route' => '_358'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3711 => [[['_route' => '_37'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3758 => [[['_route' => '_38'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3805 => [[['_route' => '_146'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3852 => [[['_route' => '_194'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3899 => [[['_route' => '_487'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3948 => [[['_route' => '_42'], ['a', 'b', 'c'], null, null, false, false, null]],
-            3999 => [[['_route' => '_54'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4046 => [[['_route' => '_326'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4098 => [[['_route' => '_68'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4145 => [[['_route' => '_108'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4197 => [[['_route' => '_74'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4244 => [[['_route' => '_315'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4291 => [[['_route' => '_374'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4343 => [[['_route' => '_99'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4390 => [[['_route' => '_238'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4442 => [[['_route' => '_107'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4489 => [[['_route' => '_409'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4541 => [[['_route' => '_122'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4588 => [[['_route' => '_379'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4635 => [[['_route' => '_390'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4687 => [[['_route' => '_171'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4734 => [[['_route' => '_260'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4781 => [[['_route' => '_434'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4830 => [[['_route' => '_189'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4878 => [[['_route' => '_467'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4935 => [[['_route' => '_6'], ['a', 'b', 'c'], null, null, false, false, null]],
-            4982 => [[['_route' => '_286'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5029 => [[['_route' => '_438'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5081 => [[['_route' => '_19'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5131 => [[['_route' => '_24'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5177 => [[['_route' => '_172'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5230 => [[['_route' => '_33'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5277 => [[['_route' => '_400'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5324 => [[['_route' => '_427'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5376 => [[['_route' => '_35'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5423 => [[['_route' => '_156'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5475 => [[['_route' => '_36'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5522 => [[['_route' => '_251'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5574 => [[['_route' => '_43'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5621 => [[['_route' => '_292'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5668 => [[['_route' => '_411'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5720 => [[['_route' => '_69'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5767 => [[['_route' => '_159'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5814 => [[['_route' => '_170'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5861 => [[['_route' => '_376'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5913 => [[['_route' => '_131'], ['a', 'b', 'c'], null, null, false, false, null]],
-            5960 => [[['_route' => '_446'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6015 => [[['_route' => '_140'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6061 => [[['_route' => '_353'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6112 => [[['_route' => '_224'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6158 => [[['_route' => '_346'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6204 => [[['_route' => '_443'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6254 => [[['_route' => '_154'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6305 => [[['_route' => '_212'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6352 => [[['_route' => '_313'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6399 => [[['_route' => '_395'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6446 => [[['_route' => '_441'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6498 => [[['_route' => '_223'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6545 => [[['_route' => '_303'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6594 => [[['_route' => '_410'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6642 => [[['_route' => '_494'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6702 => [[['_route' => '_7'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6748 => [[['_route' => '_268'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6796 => [[['_route' => '_178'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6843 => [[['_route' => '_179'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6890 => [[['_route' => '_416'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6942 => [[['_route' => '_25'], ['a', 'b', 'c'], null, null, false, false, null]],
-            6989 => [[['_route' => '_307'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7036 => [[['_route' => '_387'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7083 => [[['_route' => '_471'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7132 => [[['_route' => '_90'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7183 => [[['_route' => '_95'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7230 => [[['_route' => '_338'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7277 => [[['_route' => '_401'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7329 => [[['_route' => '_147'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7376 => [[['_route' => '_319'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7423 => [[['_route' => '_354'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7470 => [[['_route' => '_428'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7522 => [[['_route' => '_162'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7572 => [[['_route' => '_175'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7618 => [[['_route' => '_455'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7666 => [[['_route' => '_355'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7718 => [[['_route' => '_197'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7768 => [[['_route' => '_202'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7813 => [[['_route' => '_489'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7863 => [[['_route' => '_199'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7914 => [[['_route' => '_263'], ['a', 'b', 'c'], null, null, false, false, null]],
-            7961 => [[['_route' => '_406'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8010 => [[['_route' => '_289'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8058 => [[['_route' => '_325'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8106 => [[['_route' => '_378'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8154 => [[['_route' => '_468'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8211 => [[['_route' => '_9'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8258 => [[['_route' => '_216'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8307 => [[['_route' => '_26'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8355 => [[['_route' => '_62'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8406 => [[['_route' => '_81'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8453 => [[['_route' => '_318'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8505 => [[['_route' => '_121'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8551 => [[['_route' => '_182'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8603 => [[['_route' => '_136'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8650 => [[['_route' => '_415'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8697 => [[['_route' => '_457'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8744 => [[['_route' => '_463'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8796 => [[['_route' => '_148'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8843 => [[['_route' => '_273'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8892 => [[['_route' => '_284'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8940 => [[['_route' => '_288'], ['a', 'b', 'c'], null, null, false, false, null]],
-            8991 => [[['_route' => '_295'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9038 => [[['_route' => '_305'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9085 => [[['_route' => '_453'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9134 => [[['_route' => '_340'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9185 => [[['_route' => '_371'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9232 => [[['_route' => '_417'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9284 => [[['_route' => '_382'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9331 => [[['_route' => '_404'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9389 => [[['_route' => '_10'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9436 => [[['_route' => '_279'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9483 => [[['_route' => '_377'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9535 => [[['_route' => '_39'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9582 => [[['_route' => '_40'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9629 => [[['_route' => '_264'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9676 => [[['_route' => '_449'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9728 => [[['_route' => '_46'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9775 => [[['_route' => '_257'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9822 => [[['_route' => '_274'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9869 => [[['_route' => '_388'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9921 => [[['_route' => '_53'], ['a', 'b', 'c'], null, null, false, false, null]],
-            9968 => [[['_route' => '_345'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10020 => [[['_route' => '_73'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10068 => [[['_route' => '_296'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10121 => [[['_route' => '_75'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10169 => [[['_route' => '_458'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10225 => [[['_route' => '_79'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10272 => [[['_route' => '_129'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10319 => [[['_route' => '_418'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10368 => [[['_route' => '_225'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10416 => [[['_route' => '_479'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10466 => [[['_route' => '_120'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10515 => [[['_route' => '_276'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10564 => [[['_route' => '_370'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10616 => [[['_route' => '_385'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10664 => [[['_route' => '_469'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10714 => [[['_route' => '_435'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10772 => [[['_route' => '_11'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10820 => [[['_route' => '_105'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10868 => [[['_route' => '_132'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10921 => [[['_route' => '_18'], ['a', 'b', 'c'], null, null, false, false, null]],
-            10969 => [[['_route' => '_210'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11017 => [[['_route' => '_329'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11073 => [[['_route' => '_29'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11120 => [[['_route' => '_480'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11169 => [[['_route' => '_426'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11222 => [[['_route' => '_32'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11270 => [[['_route' => '_217'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11318 => [[['_route' => '_275'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11371 => [[['_route' => '_45'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11419 => [[['_route' => '_157'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11467 => [[['_route' => '_184'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11515 => [[['_route' => '_250'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11563 => [[['_route' => '_356'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11616 => [[['_route' => '_47'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11664 => [[['_route' => '_445'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11714 => [[['_route' => '_48'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11766 => [[['_route' => '_58'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11814 => [[['_route' => '_414'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11862 => [[['_route' => '_431'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11915 => [[['_route' => '_84'], ['a', 'b', 'c'], null, null, false, false, null]],
-            11963 => [[['_route' => '_294'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12011 => [[['_route' => '_336'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12059 => [[['_route' => '_465'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12112 => [[['_route' => '_103'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12160 => [[['_route' => '_111'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12208 => [[['_route' => '_207'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12256 => [[['_route' => '_402'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12309 => [[['_route' => '_230'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12356 => [[['_route' => '_331'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12406 => [[['_route' => '_248'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12455 => [[['_route' => '_282'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12513 => [[['_route' => '_15'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12561 => [[['_route' => '_130'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12609 => [[['_route' => '_231'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12657 => [[['_route' => '_365'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12705 => [[['_route' => '_448'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12758 => [[['_route' => '_20'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12806 => [[['_route' => '_93'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12854 => [[['_route' => '_186'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12902 => [[['_route' => '_460'], ['a', 'b', 'c'], null, null, false, false, null]],
-            12955 => [[['_route' => '_52'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13003 => [[['_route' => '_447'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13056 => [[['_route' => '_56'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13104 => [[['_route' => '_133'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13152 => [[['_route' => '_297'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13205 => [[['_route' => '_82'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13253 => [[['_route' => '_165'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13301 => [[['_route' => '_213'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13351 => [[['_route' => '_86'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13403 => [[['_route' => '_92'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13450 => [[['_route' => '_280'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13500 => [[['_route' => '_143'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13549 => [[['_route' => '_177'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13601 => [[['_route' => '_188'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13649 => [[['_route' => '_311'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13697 => [[['_route' => '_350'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13750 => [[['_route' => '_226'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13798 => [[['_route' => '_291'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13851 => [[['_route' => '_244'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13898 => [[['_route' => '_287'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13951 => [[['_route' => '_300'], ['a', 'b', 'c'], null, null, false, false, null]],
-            13999 => [[['_route' => '_451'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14047 => [[['_route' => '_452'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14095 => [[['_route' => '_481'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14145 => [[['_route' => '_312'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14203 => [[['_route' => '_17'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14251 => [[['_route' => '_227'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14299 => [[['_route' => '_393'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14349 => [[['_route' => '_57'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14401 => [[['_route' => '_61'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14449 => [[['_route' => '_112'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14500 => [[['_route' => '_135'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14547 => [[['_route' => '_271'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14596 => [[['_route' => '_459'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14649 => [[['_route' => '_67'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14697 => [[['_route' => '_113'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14745 => [[['_route' => '_497'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14795 => [[['_route' => '_70'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14847 => [[['_route' => '_89'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14895 => [[['_route' => '_128'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14948 => [[['_route' => '_150'], ['a', 'b', 'c'], null, null, false, false, null]],
-            14996 => [[['_route' => '_166'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15047 => [[['_route' => '_206'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15094 => [[['_route' => '_419'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15148 => [[['_route' => '_201'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15196 => [[['_route' => '_314'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15244 => [[['_route' => '_429'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15297 => [[['_route' => '_228'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15345 => [[['_route' => '_477'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15395 => [[['_route' => '_272'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15444 => [[['_route' => '_486'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15502 => [[['_route' => '_21'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15550 => [[['_route' => '_247'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15598 => [[['_route' => '_424'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15646 => [[['_route' => '_499'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15699 => [[['_route' => '_23'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15747 => [[['_route' => '_152'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15795 => [[['_route' => '_304'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15843 => [[['_route' => '_352'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15896 => [[['_route' => '_28'], ['a', 'b', 'c'], null, null, false, false, null]],
-            15944 => [[['_route' => '_240'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16000 => [[['_route' => '_30'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16047 => [[['_route' => '_41'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16096 => [[['_route' => '_301'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16149 => [[['_route' => '_66'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16197 => [[['_route' => '_72'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16245 => [[['_route' => '_320'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16298 => [[['_route' => '_78'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16346 => [[['_route' => '_337'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16394 => [[['_route' => '_399'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16442 => [[['_route' => '_495'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16492 => [[['_route' => '_85'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16544 => [[['_route' => '_101'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16592 => [[['_route' => '_176'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16640 => [[['_route' => '_246'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16693 => [[['_route' => '_125'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16741 => [[['_route' => '_341'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16794 => [[['_route' => '_137'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16842 => [[['_route' => '_270'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16890 => [[['_route' => '_386'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16943 => [[['_route' => '_169'], ['a', 'b', 'c'], null, null, false, false, null]],
-            16991 => [[['_route' => '_200'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17039 => [[['_route' => '_262'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17092 => [[['_route' => '_187'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17140 => [[['_route' => '_333'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17190 => [[['_route' => '_215'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17239 => [[['_route' => '_316'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17288 => [[['_route' => '_343'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17346 => [[['_route' => '_22'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17394 => [[['_route' => '_420'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17447 => [[['_route' => '_55'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17494 => [[['_route' => '_496'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17547 => [[['_route' => '_153'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17595 => [[['_route' => '_344'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17648 => [[['_route' => '_160'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17696 => [[['_route' => '_398'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17749 => [[['_route' => '_161'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17797 => [[['_route' => '_193'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17847 => [[['_route' => '_174'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17899 => [[['_route' => '_209'], ['a', 'b', 'c'], null, null, false, false, null]],
-            17947 => [[['_route' => '_261'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18000 => [[['_route' => '_222'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18048 => [[['_route' => '_323'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18096 => [[['_route' => '_380'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18149 => [[['_route' => '_232'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18197 => [[['_route' => '_383'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18247 => [[['_route' => '_306'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18296 => [[['_route' => '_327'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18345 => [[['_route' => '_364'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18397 => [[['_route' => '_403'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18445 => [[['_route' => '_405'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18495 => [[['_route' => '_412'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18553 => [[['_route' => '_27'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18601 => [[['_route' => '_134'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18649 => [[['_route' => '_245'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18702 => [[['_route' => '_59'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18750 => [[['_route' => '_208'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18803 => [[['_route' => '_60'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18851 => [[['_route' => '_119'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18902 => [[['_route' => '_163'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18949 => [[['_route' => '_249'], ['a', 'b', 'c'], null, null, false, false, null]],
-            18998 => [[['_route' => '_278'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19051 => [[['_route' => '_63'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19099 => [[['_route' => '_195'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19147 => [[['_route' => '_252'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19195 => [[['_route' => '_461'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19248 => [[['_route' => '_126'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19296 => [[['_route' => '_158'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19344 => [[['_route' => '_221'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19392 => [[['_route' => '_269'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19440 => [[['_route' => '_310'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19496 => [[['_route' => '_138'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19543 => [[['_route' => '_348'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19592 => [[['_route' => '_236'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19640 => [[['_route' => '_433'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19693 => [[['_route' => '_141'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19741 => [[['_route' => '_283'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19794 => [[['_route' => '_144'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19842 => [[['_route' => '_191'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19895 => [[['_route' => '_168'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19943 => [[['_route' => '_363'], ['a', 'b', 'c'], null, null, false, false, null]],
-            19991 => [[['_route' => '_381'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20044 => [[['_route' => '_180'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20092 => [[['_route' => '_339'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20142 => [[['_route' => '_196'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20194 => [[['_route' => '_198'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20242 => [[['_route' => '_285'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20292 => [[['_route' => '_349'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20344 => [[['_route' => '_367'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20392 => [[['_route' => '_384'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20440 => [[['_route' => '_498'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20490 => [[['_route' => '_369'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20542 => [[['_route' => '_408'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20590 => [[['_route' => '_413'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20652 => [[['_route' => '_44'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20699 => [[['_route' => '_256'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20748 => [[['_route' => '_173'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20796 => [[['_route' => '_266'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20844 => [[['_route' => '_392'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20892 => [[['_route' => '_430'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20940 => [[['_route' => '_482'], ['a', 'b', 'c'], null, null, false, false, null]],
-            20993 => [[['_route' => '_49'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21041 => [[['_route' => '_94'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21089 => [[['_route' => '_407'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21142 => [[['_route' => '_65'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21190 => [[['_route' => '_181'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21238 => [[['_route' => '_437'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21291 => [[['_route' => '_76'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21339 => [[['_route' => '_357'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21392 => [[['_route' => '_80'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21440 => [[['_route' => '_106'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21493 => [[['_route' => '_83'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21541 => [[['_route' => '_255'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21589 => [[['_route' => '_330'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21642 => [[['_route' => '_100'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21690 => [[['_route' => '_396'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21738 => [[['_route' => '_422'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21791 => [[['_route' => '_149'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21839 => [[['_route' => '_324'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21892 => [[['_route' => '_164'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21940 => [[['_route' => '_423'], ['a', 'b', 'c'], null, null, false, false, null]],
-            21990 => [[['_route' => '_241'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22042 => [[['_route' => '_290'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22090 => [[['_route' => '_335'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22140 => [[['_route' => '_373'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22189 => [[['_route' => '_375'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22238 => [[['_route' => '_450'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22287 => [[['_route' => '_464'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22345 => [[['_route' => '_51'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22393 => [[['_route' => '_77'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22441 => [[['_route' => '_234'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22489 => [[['_route' => '_394'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22542 => [[['_route' => '_88'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22590 => [[['_route' => '_155'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22643 => [[['_route' => '_96'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22691 => [[['_route' => '_298'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22739 => [[['_route' => '_470'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22792 => [[['_route' => '_109'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22840 => [[['_route' => '_204'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22893 => [[['_route' => '_115'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22941 => [[['_route' => '_145'], ['a', 'b', 'c'], null, null, false, false, null]],
-            22994 => [[['_route' => '_123'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23042 => [[['_route' => '_277'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23090 => [[['_route' => '_473'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23143 => [[['_route' => '_334'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23191 => [[['_route' => '_493'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23244 => [[['_route' => '_372'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23292 => [[['_route' => '_432'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23340 => [[['_route' => '_436'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23393 => [[['_route' => '_425'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23441 => [[['_route' => '_456'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23489 => [[['_route' => '_474'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23539 => [[['_route' => '_485'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23594 => [[['_route' => '_91'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23646 => [[['_route' => '_110'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23694 => [[['_route' => '_114'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23750 => [[['_route' => '_118'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23796 => [[['_route' => '_475'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23844 => [[['_route' => '_366'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23897 => [[['_route' => '_167'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23945 => [[['_route' => '_192'], ['a', 'b', 'c'], null, null, false, false, null]],
-            23993 => [[['_route' => '_342'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24046 => [[['_route' => '_229'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24097 => [[['_route' => '_235'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24144 => [[['_route' => '_302'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24193 => [[['_route' => '_322'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24246 => [[['_route' => '_237'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24294 => [[['_route' => '_293'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24347 => [[['_route' => '_239'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24395 => [[['_route' => '_444'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24443 => [[['_route' => '_491'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24491 => [[['_route' => '_492'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24541 => [[['_route' => '_258'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24590 => [[['_route' => '_317'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24639 => [[['_route' => '_361'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24688 => [[['_route' => '_391'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24737 => [[['_route' => '_462'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24786 => [[['_route' => '_476'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24837 => [[['_route' => '_501'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24889 => [[['_route' => '_514'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24937 => [[['_route' => '_731'], ['a', 'b', 'c'], null, null, false, false, null]],
-            24990 => [[['_route' => '_522'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25038 => [[['_route' => '_693'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25091 => [[['_route' => '_537'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25139 => [[['_route' => '_554'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25187 => [[['_route' => '_645'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25235 => [[['_route' => '_862'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25288 => [[['_route' => '_539'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25336 => [[['_route' => '_729'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25384 => [[['_route' => '_897'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25437 => [[['_route' => '_561'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25485 => [[['_route' => '_615'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25533 => [[['_route' => '_764'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25581 => [[['_route' => '_948'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25634 => [[['_route' => '_617'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25682 => [[['_route' => '_671'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25735 => [[['_route' => '_649'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25783 => [[['_route' => '_651'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25831 => [[['_route' => '_684'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25884 => [[['_route' => '_669'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25932 => [[['_route' => '_743'], ['a', 'b', 'c'], null, null, false, false, null]],
-            25980 => [[['_route' => '_962'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26033 => [[['_route' => '_694'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26081 => [[['_route' => '_985'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26134 => [[['_route' => '_707'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26182 => [[['_route' => '_718'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26235 => [[['_route' => '_720'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26283 => [[['_route' => '_745'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26333 => [[['_route' => '_874'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26391 => [[['_route' => '_502'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26439 => [[['_route' => '_667'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26487 => [[['_route' => '_911'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26535 => [[['_route' => '_942'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26585 => [[['_route' => '_504'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26637 => [[['_route' => '_524'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26685 => [[['_route' => '_732'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26738 => [[['_route' => '_596'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26786 => [[['_route' => '_601'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26839 => [[['_route' => '_620'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26887 => [[['_route' => '_631'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26935 => [[['_route' => '_771'], ['a', 'b', 'c'], null, null, false, false, null]],
-            26983 => [[['_route' => '_937'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27031 => [[['_route' => '_999'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27084 => [[['_route' => '_657'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27132 => [[['_route' => '_701'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27185 => [[['_route' => '_662'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27233 => [[['_route' => '_797'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27281 => [[['_route' => '_924'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27334 => [[['_route' => '_702'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27382 => [[['_route' => '_750'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27435 => [[['_route' => '_749'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27483 => [[['_route' => '_837'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27533 => [[['_route' => '_758'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27585 => [[['_route' => '_810'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27633 => [[['_route' => '_902'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27683 => [[['_route' => '_845'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27741 => [[['_route' => '_503'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27792 => [[['_route' => '_756'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27839 => [[['_route' => '_799'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27888 => [[['_route' => '_769'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27936 => [[['_route' => '_981'], ['a', 'b', 'c'], null, null, false, false, null]],
-            27989 => [[['_route' => '_507'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28037 => [[['_route' => '_672'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28085 => [[['_route' => '_790'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28138 => [[['_route' => '_515'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28186 => [[['_route' => '_523'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28234 => [[['_route' => '_957'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28282 => [[['_route' => '_995'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28335 => [[['_route' => '_532'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28383 => [[['_route' => '_642'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28433 => [[['_route' => '_579'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28485 => [[['_route' => '_625'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28533 => [[['_route' => '_916'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28586 => [[['_route' => '_633'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28634 => [[['_route' => '_656'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28687 => [[['_route' => '_658'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28735 => [[['_route' => '_943'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28788 => [[['_route' => '_664'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28836 => [[['_route' => '_852'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28884 => [[['_route' => '_870'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28937 => [[['_route' => '_683'], ['a', 'b', 'c'], null, null, false, false, null]],
-            28985 => [[['_route' => '_915'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29038 => [[['_route' => '_719'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29086 => [[['_route' => '_859'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29134 => [[['_route' => '_912'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29182 => [[['_route' => '_978'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29235 => [[['_route' => '_738'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29283 => [[['_route' => '_883'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29333 => [[['_route' => '_741'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29382 => [[['_route' => '_760'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29431 => [[['_route' => '_895'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29489 => [[['_route' => '_505'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29537 => [[['_route' => '_935'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29590 => [[['_route' => '_509'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29638 => [[['_route' => '_820'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29686 => [[['_route' => '_910'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29739 => [[['_route' => '_518'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29787 => [[['_route' => '_618'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29840 => [[['_route' => '_546'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29888 => [[['_route' => '_740'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29936 => [[['_route' => '_867'], ['a', 'b', 'c'], null, null, false, false, null]],
-            29989 => [[['_route' => '_572'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30037 => [[['_route' => '_952'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30090 => [[['_route' => '_573'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30138 => [[['_route' => '_692'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30186 => [[['_route' => '_700'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30234 => [[['_route' => '_772'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30284 => [[['_route' => '_653'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30336 => [[['_route' => '_695'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30384 => [[['_route' => '_748'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30437 => [[['_route' => '_710'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30485 => [[['_route' => '_716'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30533 => [[['_route' => '_969'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30586 => [[['_route' => '_734'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30634 => [[['_route' => '_742'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30682 => [[['_route' => '_844'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30735 => [[['_route' => '_763'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30783 => [[['_route' => '_965'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30836 => [[['_route' => '_778'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30884 => [[['_route' => '_813'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30932 => [[['_route' => '_831'], ['a', 'b', 'c'], null, null, false, false, null]],
-            30982 => [[['_route' => '_955'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31031 => [[['_route' => '_997'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31089 => [[['_route' => '_506'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31137 => [[['_route' => '_575'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31190 => [[['_route' => '_516'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31238 => [[['_route' => '_553'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31291 => [[['_route' => '_528'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31339 => [[['_route' => '_847'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31387 => [[['_route' => '_904'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31440 => [[['_route' => '_574'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31488 => [[['_route' => '_818'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31538 => [[['_route' => '_577'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31590 => [[['_route' => '_584'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31638 => [[['_route' => '_905'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31691 => [[['_route' => '_612'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31739 => [[['_route' => '_688'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31787 => [[['_route' => '_854'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31840 => [[['_route' => '_613'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31888 => [[['_route' => '_767'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31941 => [[['_route' => '_666'], ['a', 'b', 'c'], null, null, false, false, null]],
-            31989 => [[['_route' => '_759'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32037 => [[['_route' => '_827'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32085 => [[['_route' => '_840'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32138 => [[['_route' => '_680'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32186 => [[['_route' => '_784'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32234 => [[['_route' => '_842'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32282 => [[['_route' => '_860'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32332 => [[['_route' => '_704'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32381 => [[['_route' => '_727'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32430 => [[['_route' => '_777'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32482 => [[['_route' => '_838'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32530 => [[['_route' => '_861'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32583 => [[['_route' => '_849'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32631 => [[['_route' => '_982'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32679 => [[['_route' => '_986'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32741 => [[['_route' => '_508'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32788 => [[['_route' => '_517'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32837 => [[['_route' => '_622'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32890 => [[['_route' => '_513'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32938 => [[['_route' => '_655'], ['a', 'b', 'c'], null, null, false, false, null]],
-            32986 => [[['_route' => '_843'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33034 => [[['_route' => '_939'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33084 => [[['_route' => '_529'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33136 => [[['_route' => '_535'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33184 => [[['_route' => '_685'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33240 => [[['_route' => '_559'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33287 => [[['_route' => '_661'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33336 => [[['_route' => '_768'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33389 => [[['_route' => '_589'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33437 => [[['_route' => '_647'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33485 => [[['_route' => '_652'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33533 => [[['_route' => '_834'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33586 => [[['_route' => '_591'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33634 => [[['_route' => '_599'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33687 => [[['_route' => '_787'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33734 => [[['_route' => '_848'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33787 => [[['_route' => '_796'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33835 => [[['_route' => '_877'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33885 => [[['_route' => '_809'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33934 => [[['_route' => '_817'], ['a', 'b', 'c'], null, null, false, false, null]],
-            33986 => [[['_route' => '_819'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34034 => [[['_route' => '_865'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34084 => [[['_route' => '_919'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34133 => [[['_route' => '_949'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34191 => [[['_route' => '_510'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34239 => [[['_route' => '_590'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34287 => [[['_route' => '_597'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34335 => [[['_route' => '_682'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34383 => [[['_route' => '_723'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34436 => [[['_route' => '_521'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34484 => [[['_route' => '_594'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34532 => [[['_route' => '_689'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34580 => [[['_route' => '_713'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34628 => [[['_route' => '_889'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34681 => [[['_route' => '_531'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34729 => [[['_route' => '_639'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34780 => [[['_route' => '_646'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34827 => [[['_route' => '_659'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34876 => [[['_route' => '_959'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34929 => [[['_route' => '_550'], ['a', 'b', 'c'], null, null, false, false, null]],
-            34977 => [[['_route' => '_833'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35025 => [[['_route' => '_899'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35081 => [[['_route' => '_580'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35128 => [[['_route' => '_762'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35177 => [[['_route' => '_896'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35230 => [[['_route' => '_595'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35278 => [[['_route' => '_933'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35328 => [[['_route' => '_610'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35380 => [[['_route' => '_629'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35428 => [[['_route' => '_744'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35481 => [[['_route' => '_674'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35529 => [[['_route' => '_726'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35577 => [[['_route' => '_929'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35627 => [[['_route' => '_696'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35679 => [[['_route' => '_841'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35727 => [[['_route' => '_890'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35777 => [[['_route' => '_885'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35826 => [[['_route' => '_888'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35875 => [[['_route' => '_996'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35933 => [[['_route' => '_511'], ['a', 'b', 'c'], null, null, false, false, null]],
-            35981 => [[['_route' => '_576'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36029 => [[['_route' => '_623'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36082 => [[['_route' => '_560'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36129 => [[['_route' => '_585'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36182 => [[['_route' => '_570'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36230 => [[['_route' => '_578'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36281 => [[['_route' => '_780'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36328 => [[['_route' => '_808'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36382 => [[['_route' => '_593'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36430 => [[['_route' => '_900'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36483 => [[['_route' => '_632'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36531 => [[['_route' => '_654'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36579 => [[['_route' => '_721'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36627 => [[['_route' => '_836'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36680 => [[['_route' => '_637'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36728 => [[['_route' => '_737'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36784 => [[['_route' => '_699'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36831 => [[['_route' => '_822'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36880 => [[['_route' => '_853'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36933 => [[['_route' => '_708'], ['a', 'b', 'c'], null, null, false, false, null]],
-            36981 => [[['_route' => '_871'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37034 => [[['_route' => '_752'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37082 => [[['_route' => '_989'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37132 => [[['_route' => '_855'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37184 => [[['_route' => '_858'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37232 => [[['_route' => '_898'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37282 => [[['_route' => '_903'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37331 => [[['_route' => '_909'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37380 => [[['_route' => '_950'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37441 => [[['_route' => '_512'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37488 => [[['_route' => '_691'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37537 => [[['_route' => '_686'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37587 => [[['_route' => '_527'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37639 => [[['_route' => '_541'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37687 => [[['_route' => '_956'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37740 => [[['_route' => '_555'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37788 => [[['_route' => '_681'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37841 => [[['_route' => '_556'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37889 => [[['_route' => '_802'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37939 => [[['_route' => '_558'], ['a', 'b', 'c'], null, null, false, false, null]],
-            37991 => [[['_route' => '_564'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38039 => [[['_route' => '_670'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38087 => [[['_route' => '_884'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38140 => [[['_route' => '_627'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38187 => [[['_route' => '_746'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38240 => [[['_route' => '_668'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38291 => [[['_route' => '_712'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38338 => [[['_route' => '_863'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38387 => [[['_route' => '_801'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38440 => [[['_route' => '_709'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38488 => [[['_route' => '_850'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38536 => [[['_route' => '_918'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38586 => [[['_route' => '_803'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38638 => [[['_route' => '_864'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38686 => [[['_route' => '_880'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38734 => [[['_route' => '_927'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38787 => [[['_route' => '_930'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38835 => [[['_route' => '_951'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38883 => [[['_route' => '_963'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38942 => [[['_route' => '_519'], ['a', 'b', 'c'], null, null, false, false, null]],
-            38990 => [[['_route' => '_823'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39038 => [[['_route' => '_954'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39091 => [[['_route' => '_525'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39139 => [[['_route' => '_991'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39189 => [[['_route' => '_536'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39241 => [[['_route' => '_545'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39289 => [[['_route' => '_944'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39342 => [[['_route' => '_557'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39390 => [[['_route' => '_783'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39438 => [[['_route' => '_807'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39491 => [[['_route' => '_586'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39539 => [[['_route' => '_711'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39592 => [[['_route' => '_598'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39640 => [[['_route' => '_635'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39688 => [[['_route' => '_983'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39741 => [[['_route' => '_634'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39789 => [[['_route' => '_641'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39840 => [[['_route' => '_779'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39887 => [[['_route' => '_876'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39936 => [[['_route' => '_811'], ['a', 'b', 'c'], null, null, false, false, null]],
-            39984 => [[['_route' => '_824'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40037 => [[['_route' => '_660'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40085 => [[['_route' => '_789'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40138 => [[['_route' => '_733'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40186 => [[['_route' => '_735'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40234 => [[['_route' => '_882'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40282 => [[['_route' => '_967'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40332 => [[['_route' => '_736'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40381 => [[['_route' => '_753'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40430 => [[['_route' => '_786'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40479 => [[['_route' => '_907'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40528 => [[['_route' => '_920'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40577 => [[['_route' => '_971'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40635 => [[['_route' => '_520'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40683 => [[['_route' => '_891'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40739 => [[['_route' => '_534'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40785 => [[['_route' => '_602'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40834 => [[['_route' => '_605'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40882 => [[['_route' => '_979'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40932 => [[['_route' => '_547'], ['a', 'b', 'c'], null, null, false, false, null]],
-            40987 => [[['_route' => '_549'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41034 => [[['_route' => '_755'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41083 => [[['_route' => '_922'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41131 => [[['_route' => '_977'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41184 => [[['_route' => '_565'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41232 => [[['_route' => '_926'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41282 => [[['_route' => '_571'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41331 => [[['_route' => '_581'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41380 => [[['_route' => '_619'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41429 => [[['_route' => '_636'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41481 => [[['_route' => '_679'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41529 => [[['_route' => '_866'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41577 => [[['_route' => '_973'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41630 => [[['_route' => '_690'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41678 => [[['_route' => '_775'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41731 => [[['_route' => '_722'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41779 => [[['_route' => '_906'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41827 => [[['_route' => '_946'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41877 => [[['_route' => '_788'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41929 => [[['_route' => '_828'], ['a', 'b', 'c'], null, null, false, false, null]],
-            41977 => [[['_route' => '_892'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42025 => [[['_route' => '_972'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42075 => [[['_route' => '_829'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42127 => [[['_route' => '_923'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42175 => [[['_route' => '_947'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42234 => [[['_route' => '_526'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42282 => [[['_route' => '_614'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42330 => [[['_route' => '_621'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42383 => [[['_route' => '_543'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42431 => [[['_route' => '_812'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42487 => [[['_route' => '_548'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42534 => [[['_route' => '_747'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42583 => [[['_route' => '_715'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42631 => [[['_route' => '_940'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42684 => [[['_route' => '_563'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42732 => [[['_route' => '_611'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42780 => [[['_route' => '_830'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42833 => [[['_route' => '_569'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42881 => [[['_route' => '_908'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42929 => [[['_route' => '_913'], ['a', 'b', 'c'], null, null, false, false, null]],
-            42982 => [[['_route' => '_644'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43030 => [[['_route' => '_776'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43078 => [[['_route' => '_856'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43131 => [[['_route' => '_650'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43179 => [[['_route' => '_761'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43232 => [[['_route' => '_663'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43280 => [[['_route' => '_754'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43333 => [[['_route' => '_665'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43381 => [[['_route' => '_805'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43429 => [[['_route' => '_846'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43477 => [[['_route' => '_857'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43530 => [[['_route' => '_675'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43578 => [[['_route' => '_839'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43626 => [[['_route' => '_968'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43676 => [[['_route' => '_697'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43728 => [[['_route' => '_725'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43776 => [[['_route' => '_794'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43829 => [[['_route' => '_773'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43877 => [[['_route' => '_992'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43930 => [[['_route' => '_901'], ['a', 'b', 'c'], null, null, false, false, null]],
-            43978 => [[['_route' => '_970'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44028 => [[['_route' => '_964'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44086 => [[['_route' => '_530'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44134 => [[['_route' => '_703'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44187 => [[['_route' => '_533'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44235 => [[['_route' => '_739'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44283 => [[['_route' => '_791'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44331 => [[['_route' => '_987'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44384 => [[['_route' => '_566'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44432 => [[['_route' => '_592'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44488 => [[['_route' => '_568'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44534 => [[['_route' => '_868'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44583 => [[['_route' => '_878'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44636 => [[['_route' => '_588'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44684 => [[['_route' => '_793'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44732 => [[['_route' => '_917'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44785 => [[['_route' => '_600'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44833 => [[['_route' => '_728'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44886 => [[['_route' => '_603'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44934 => [[['_route' => '_765'], ['a', 'b', 'c'], null, null, false, false, null]],
-            44987 => [[['_route' => '_607'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45035 => [[['_route' => '_676'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45083 => [[['_route' => '_804'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45136 => [[['_route' => '_609'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45184 => [[['_route' => '_961'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45232 => [[['_route' => '_980'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45282 => [[['_route' => '_714'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45334 => [[['_route' => '_730'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45382 => [[['_route' => '_806'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45430 => [[['_route' => '_825'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45478 => [[['_route' => '_879'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45526 => [[['_route' => '_893'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45576 => [[['_route' => '_928'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45628 => [[['_route' => '_932'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45676 => [[['_route' => '_958'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45726 => [[['_route' => '_984'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45784 => [[['_route' => '_538'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45832 => [[['_route' => '_993'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45882 => [[['_route' => '_542'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45934 => [[['_route' => '_551'], ['a', 'b', 'c'], null, null, false, false, null]],
-            45982 => [[['_route' => '_687'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46030 => [[['_route' => '_724'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46078 => [[['_route' => '_925'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46131 => [[['_route' => '_587'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46179 => [[['_route' => '_914'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46229 => [[['_route' => '_616'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46284 => [[['_route' => '_677'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46331 => [[['_route' => '_815'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46380 => [[['_route' => '_781'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46430 => [[['_route' => '_717'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46482 => [[['_route' => '_782'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46530 => [[['_route' => '_832'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46583 => [[['_route' => '_795'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46631 => [[['_route' => '_887'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46681 => [[['_route' => '_800'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46730 => [[['_route' => '_826'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46779 => [[['_route' => '_881'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46828 => [[['_route' => '_886'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46877 => [[['_route' => '_938'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46935 => [[['_route' => '_540'], ['a', 'b', 'c'], null, null, false, false, null]],
-            46983 => [[['_route' => '_643'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47033 => [[['_route' => '_544'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47082 => [[['_route' => '_552'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47134 => [[['_route' => '_567'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47182 => [[['_route' => '_608'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47230 => [[['_route' => '_698'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47278 => [[['_route' => '_988'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47331 => [[['_route' => '_583'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47379 => [[['_route' => '_998'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47432 => [[['_route' => '_604'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47480 => [[['_route' => '_630'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47528 => [[['_route' => '_706'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47576 => [[['_route' => '_976'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47629 => [[['_route' => '_673'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47677 => [[['_route' => '_678'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47725 => [[['_route' => '_931'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47775 => [[['_route' => '_751'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47824 => [[['_route' => '_766'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47876 => [[['_route' => '_792'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47924 => [[['_route' => '_814'], ['a', 'b', 'c'], null, null, false, false, null]],
-            47974 => [[['_route' => '_798'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48026 => [[['_route' => '_851'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48074 => [[['_route' => '_941'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48122 => [[['_route' => '_953'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48170 => [[['_route' => '_975'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48220 => [[['_route' => '_873'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48269 => [[['_route' => '_936'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48318 => [[['_route' => '_994'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48376 => [[['_route' => '_562'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48424 => [[['_route' => '_770'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48475 => [[['_route' => '_774'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48522 => [[['_route' => '_966'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48573 => [[['_route' => '_582'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48625 => [[['_route' => '_606'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48673 => [[['_route' => '_648'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48723 => [[['_route' => '_624'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48775 => [[['_route' => '_626'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48823 => [[['_route' => '_821'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48873 => [[['_route' => '_628'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48922 => [[['_route' => '_638'], ['a', 'b', 'c'], null, null, false, false, null]],
-            48974 => [[['_route' => '_640'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49022 => [[['_route' => '_990'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49072 => [[['_route' => '_705'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49121 => [[['_route' => '_757'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49176 => [[['_route' => '_785'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49223 => [[['_route' => '_875'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49270 => [[['_route' => '_894'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49319 => [[['_route' => '_945'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49375 => [[['_route' => '_816'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49422 => [[['_route' => '_872'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49471 => [[['_route' => '_921'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49519 => [[['_route' => '_960'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49567 => [[['_route' => '_974'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49620 => [[['_route' => '_835'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49668 => [[['_route' => '_934'], ['a', 'b', 'c'], null, null, false, false, null]],
-            49718 => [
-                [['_route' => '_869'], ['a', 'b', 'c'], null, null, false, false, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php
deleted file mode 100644
index c3929d6e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher11.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/(en|fr)/(?'
-                        .'|admin/post(?'
-                            .'|(*:32)'
-                            .'|/(?'
-                                .'|new(*:46)'
-                                .'|(\\d+)(*:58)'
-                                .'|(\\d+)/edit(*:75)'
-                                .'|(\\d+)/delete(*:94)'
-                            .')'
-                        .')'
-                        .'|blog(?'
-                            .'|(*:110)'
-                            .'|/(?'
-                                .'|rss\\.xml(*:130)'
-                                .'|p(?'
-                                    .'|age/([^/]++)(*:154)'
-                                    .'|osts/([^/]++)(*:175)'
-                                .')'
-                                .'|comments/(\\d+)/new(*:202)'
-                                .'|search(*:216)'
-                            .')'
-                        .')'
-                        .'|log(?'
-                            .'|in(*:234)'
-                            .'|out(*:245)'
-                        .')'
-                    .')'
-                    .'|/(en|fr)?(*:264)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            32 => [[['_route' => 'a', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-            46 => [[['_route' => 'b', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            58 => [[['_route' => 'c', '_locale' => 'en'], ['_locale', 'id'], null, null, false, true, null]],
-            75 => [[['_route' => 'd', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            94 => [[['_route' => 'e', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            110 => [[['_route' => 'f', '_locale' => 'en'], ['_locale'], null, null, true, false, null]],
-            130 => [[['_route' => 'g', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            154 => [[['_route' => 'h', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-            175 => [[['_route' => 'i', '_locale' => 'en'], ['_locale', 'page'], null, null, false, true, null]],
-            202 => [[['_route' => 'j', '_locale' => 'en'], ['_locale', 'id'], null, null, false, false, null]],
-            216 => [[['_route' => 'k', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            234 => [[['_route' => 'l', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            245 => [[['_route' => 'm', '_locale' => 'en'], ['_locale'], null, null, false, false, null]],
-            264 => [
-                [['_route' => 'n', '_locale' => 'en'], ['_locale'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php
deleted file mode 100644
index 77e52992..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher12.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/abc([^/]++)/(?'
-                        .'|1(?'
-                            .'|(*:27)'
-                            .'|0(?'
-                                .'|(*:38)'
-                                .'|0(*:46)'
-                            .')'
-                        .')'
-                        .'|2(?'
-                            .'|(*:59)'
-                            .'|0(?'
-                                .'|(*:70)'
-                                .'|0(*:78)'
-                            .')'
-                        .')'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            27 => [[['_route' => 'r1'], ['foo'], null, null, false, false, null]],
-            38 => [[['_route' => 'r10'], ['foo'], null, null, false, false, null]],
-            46 => [[['_route' => 'r100'], ['foo'], null, null, false, false, null]],
-            59 => [[['_route' => 'r2'], ['foo'], null, null, false, false, null]],
-            70 => [[['_route' => 'r20'], ['foo'], null, null, false, false, null]],
-            78 => [
-                [['_route' => 'r200'], ['foo'], null, null, false, false, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php
deleted file mode 100644
index 8e54cc87..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher13.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?i:([^\\.]++)\\.exampple\\.com)\\.(?'
-                    .'|/abc([^/]++)(?'
-                        .'|(*:56)'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            56 => [
-                [['_route' => 'r1'], ['foo', 'foo'], null, null, false, true, null],
-                [['_route' => 'r2'], ['foo', 'foo'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php
deleted file mode 100644
index 15588244..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher2.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/test/baz' => [[['_route' => 'baz'], null, null, null, false, false, null]],
-            '/test/baz.html' => [[['_route' => 'baz2'], null, null, null, false, false, null]],
-            '/test/baz3' => [[['_route' => 'baz3'], null, null, null, true, false, null]],
-            '/foofoo' => [[['_route' => 'foofoo', 'def' => 'test'], null, null, null, false, false, null]],
-            '/spa ce' => [[['_route' => 'space'], null, null, null, false, false, null]],
-            '/multi/new' => [[['_route' => 'overridden2'], null, null, null, false, false, null]],
-            '/multi/hey' => [[['_route' => 'hey'], null, null, null, true, false, null]],
-            '/ababa' => [[['_route' => 'ababa'], null, null, null, false, false, null]],
-            '/route1' => [[['_route' => 'route1'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route2' => [[['_route' => 'route2'], 'a.example.com', null, null, false, false, null]],
-            '/route4' => [[['_route' => 'route4'], 'a.example.com', null, null, false, false, null]],
-            '/c2/route3' => [[['_route' => 'route3'], 'b.example.com', null, null, false, false, null]],
-            '/route5' => [[['_route' => 'route5'], 'c.example.com', null, null, false, false, null]],
-            '/route6' => [[['_route' => 'route6'], null, null, null, false, false, null]],
-            '/route11' => [[['_route' => 'route11'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route12' => [[['_route' => 'route12', 'var1' => 'val'], '#^(?P<var1>[^\\.]++)\\.example\\.com$#sDi', null, null, false, false, null]],
-            '/route17' => [[['_route' => 'route17'], null, null, null, false, false, null]],
-            '/secure' => [[['_route' => 'secure'], null, null, ['https' => 0], false, false, null]],
-            '/nonsecure' => [[['_route' => 'nonsecure'], null, null, ['http' => 0], false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                .'|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/foo/(baz|symfony)(*:47)'
-                    .'|/bar(?'
-                        .'|/([^/]++)(*:70)'
-                        .'|head/([^/]++)(*:90)'
-                    .')'
-                    .'|/test/([^/]++)(?'
-                        .'|(*:115)'
-                    .')'
-                    .'|/([\']+)(*:131)'
-                    .'|/a/(?'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:160)'
-                            .'|(*:168)'
-                        .')'
-                        .'|(.*)(*:181)'
-                        .'|b\'b/([^/]++)(?'
-                            .'|(*:204)'
-                            .'|(*:212)'
-                        .')'
-                    .')'
-                    .'|/multi/hello(?:/([^/]++))?(*:248)'
-                    .'|/([^/]++)/b/([^/]++)(?'
-                        .'|(*:279)'
-                        .'|(*:287)'
-                    .')'
-                    .'|/aba/([^/]++)(*:309)'
-                .')|(?i:([^\\.]++)\\.example\\.com)\\.(?'
-                    .'|/route1(?'
-                        .'|3/([^/]++)(*:371)'
-                        .'|4/([^/]++)(*:389)'
-                    .')'
-                .')|(?i:c\\.example\\.com)\\.(?'
-                    .'|/route15/([^/]++)(*:441)'
-                .')|(?:(?:[^./]*+\\.)++)(?'
-                    .'|/route16/([^/]++)(*:489)'
-                    .'|/a/(?'
-                        .'|a\\.\\.\\.(*:510)'
-                        .'|b/(?'
-                            .'|([^/]++)(*:531)'
-                            .'|c/([^/]++)(*:549)'
-                        .')'
-                    .')'
-                .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            47 => [[['_route' => 'foo', 'def' => 'test'], ['bar'], null, null, false, true, null]],
-            70 => [[['_route' => 'bar'], ['foo'], ['GET' => 0, 'HEAD' => 1], null, false, true, null]],
-            90 => [[['_route' => 'barhead'], ['foo'], ['GET' => 0], null, false, true, null]],
-            115 => [
-                [['_route' => 'baz4'], ['foo'], null, null, true, true, null],
-                [['_route' => 'baz5'], ['foo'], ['POST' => 0], null, true, true, null],
-                [['_route' => 'baz.baz6'], ['foo'], ['PUT' => 0], null, true, true, null],
-            ],
-            131 => [[['_route' => 'quoter'], ['quoter'], null, null, false, true, null]],
-            160 => [[['_route' => 'foo1'], ['foo'], ['PUT' => 0], null, false, true, null]],
-            168 => [[['_route' => 'bar1'], ['bar'], null, null, false, true, null]],
-            181 => [[['_route' => 'overridden'], ['var'], null, null, false, true, null]],
-            204 => [[['_route' => 'foo2'], ['foo1'], null, null, false, true, null]],
-            212 => [[['_route' => 'bar2'], ['bar1'], null, null, false, true, null]],
-            248 => [[['_route' => 'helloWorld', 'who' => 'World!'], ['who'], null, null, false, true, null]],
-            279 => [[['_route' => 'foo3'], ['_locale', 'foo'], null, null, false, true, null]],
-            287 => [[['_route' => 'bar3'], ['_locale', 'bar'], null, null, false, true, null]],
-            309 => [[['_route' => 'foo4'], ['foo'], null, null, false, true, null]],
-            371 => [[['_route' => 'route13'], ['var1', 'name'], null, null, false, true, null]],
-            389 => [[['_route' => 'route14', 'var1' => 'val'], ['var1', 'name'], null, null, false, true, null]],
-            441 => [[['_route' => 'route15'], ['name'], null, null, false, true, null]],
-            489 => [[['_route' => 'route16', 'var1' => 'val'], ['name'], null, null, false, true, null]],
-            510 => [[['_route' => 'a'], [], null, null, false, false, null]],
-            531 => [[['_route' => 'b'], ['var'], null, null, false, true, null]],
-            549 => [
-                [['_route' => 'c'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php
deleted file mode 100644
index efafbb24..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher3.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/rootprefix/test' => [[['_route' => 'static'], null, null, null, false, false, null]],
-            '/with-condition' => [[['_route' => 'with-condition'], null, null, null, false, false, -1]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/rootprefix/([^/]++)(*:27)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            27 => [
-                [['_route' => 'dynamic'], ['var'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-        $this->checkCondition = static function ($condition, $context, $request) {
-            switch ($condition) {
-                case -1: return ($context->getMethod() == "GET");
-            }
-        };
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php
deleted file mode 100644
index 605901cd..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher4.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/just_head' => [[['_route' => 'just_head'], null, ['HEAD' => 0], null, false, false, null]],
-            '/head_and_get' => [[['_route' => 'head_and_get'], null, ['HEAD' => 0, 'GET' => 1], null, false, false, null]],
-            '/get_and_head' => [[['_route' => 'get_and_head'], null, ['GET' => 0, 'HEAD' => 1], null, false, false, null]],
-            '/post_and_head' => [[['_route' => 'post_and_head'], null, ['POST' => 0, 'HEAD' => 1], null, false, false, null]],
-            '/put_and_post' => [
-                [['_route' => 'put_and_post'], null, ['PUT' => 0, 'POST' => 1], null, false, false, null],
-                [['_route' => 'put_and_get_and_head'], null, ['PUT' => 0, 'GET' => 1, 'HEAD' => 2], null, false, false, null],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php
deleted file mode 100644
index 97fcab92..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher5.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/a/11' => [[['_route' => 'a_first'], null, null, null, false, false, null]],
-            '/a/22' => [[['_route' => 'a_second'], null, null, null, false, false, null]],
-            '/a/333' => [[['_route' => 'a_third'], null, null, null, false, false, null]],
-            '/a/44' => [[['_route' => 'a_fourth'], null, null, null, true, false, null]],
-            '/a/55' => [[['_route' => 'a_fifth'], null, null, null, true, false, null]],
-            '/a/66' => [[['_route' => 'a_sixth'], null, null, null, true, false, null]],
-            '/nested/group/a' => [[['_route' => 'nested_a'], null, null, null, true, false, null]],
-            '/nested/group/b' => [[['_route' => 'nested_b'], null, null, null, true, false, null]],
-            '/nested/group/c' => [[['_route' => 'nested_c'], null, null, null, true, false, null]],
-            '/slashed/group' => [[['_route' => 'slashed_a'], null, null, null, true, false, null]],
-            '/slashed/group/b' => [[['_route' => 'slashed_b'], null, null, null, true, false, null]],
-            '/slashed/group/c' => [[['_route' => 'slashed_c'], null, null, null, true, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/([^/]++)(*:16)'
-                    .'|/nested/([^/]++)(*:39)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            16 => [[['_route' => 'a_wildcard'], ['param'], null, null, false, true, null]],
-            39 => [
-                [['_route' => 'nested_wildcard'], ['param'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php
deleted file mode 100644
index 850b3bb5..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher6.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-            '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-            '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-            '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-            '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-            '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-            '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-            '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:46)'
-                        .'|get\\-method/([^/]++)(*:73)'
-                        .'|head\\-method/([^/]++)(*:101)'
-                        .'|post\\-method/([^/]++)(*:130)'
-                    .')'
-                    .'|/not\\-trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:183)'
-                        .'|get\\-method/([^/]++)(*:211)'
-                        .'|head\\-method/([^/]++)(*:240)'
-                        .'|post\\-method/([^/]++)(*:269)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-            73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-            101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-            130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-            183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-            211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-            240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-            269 => [
-                [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php
deleted file mode 100644
index 3f07f800..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher7.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->staticRoutes = [
-            '/trailing/simple/no-methods' => [[['_route' => 'simple_trailing_slash_no_methods'], null, null, null, true, false, null]],
-            '/trailing/simple/get-method' => [[['_route' => 'simple_trailing_slash_GET_method'], null, ['GET' => 0], null, true, false, null]],
-            '/trailing/simple/head-method' => [[['_route' => 'simple_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, true, false, null]],
-            '/trailing/simple/post-method' => [[['_route' => 'simple_trailing_slash_POST_method'], null, ['POST' => 0], null, true, false, null]],
-            '/not-trailing/simple/no-methods' => [[['_route' => 'simple_not_trailing_slash_no_methods'], null, null, null, false, false, null]],
-            '/not-trailing/simple/get-method' => [[['_route' => 'simple_not_trailing_slash_GET_method'], null, ['GET' => 0], null, false, false, null]],
-            '/not-trailing/simple/head-method' => [[['_route' => 'simple_not_trailing_slash_HEAD_method'], null, ['HEAD' => 0], null, false, false, null]],
-            '/not-trailing/simple/post-method' => [[['_route' => 'simple_not_trailing_slash_POST_method'], null, ['POST' => 0], null, false, false, null]],
-        ];
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:46)'
-                        .'|get\\-method/([^/]++)(*:73)'
-                        .'|head\\-method/([^/]++)(*:101)'
-                        .'|post\\-method/([^/]++)(*:130)'
-                    .')'
-                    .'|/not\\-trailing/regex/(?'
-                        .'|no\\-methods/([^/]++)(*:183)'
-                        .'|get\\-method/([^/]++)(*:211)'
-                        .'|head\\-method/([^/]++)(*:240)'
-                        .'|post\\-method/([^/]++)(*:269)'
-                    .')'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            46 => [[['_route' => 'regex_trailing_slash_no_methods'], ['param'], null, null, true, true, null]],
-            73 => [[['_route' => 'regex_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, true, true, null]],
-            101 => [[['_route' => 'regex_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, true, true, null]],
-            130 => [[['_route' => 'regex_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, true, true, null]],
-            183 => [[['_route' => 'regex_not_trailing_slash_no_methods'], ['param'], null, null, false, true, null]],
-            211 => [[['_route' => 'regex_not_trailing_slash_GET_method'], ['param'], ['GET' => 0], null, false, true, null]],
-            240 => [[['_route' => 'regex_not_trailing_slash_HEAD_method'], ['param'], ['HEAD' => 0], null, false, true, null]],
-            269 => [
-                [['_route' => 'regex_not_trailing_slash_POST_method'], ['param'], ['POST' => 0], null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php
deleted file mode 100644
index 3ae962b8..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher8.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->regexpList = [
-            0 => '{^(?'
-                    .'|/(a)(*:11)'
-                .')/?$}sD',
-            11 => '{^(?'
-                    .'|/(.)(*:22)'
-                .')/?$}sDu',
-            22 => '{^(?'
-                    .'|/(.)(*:33)'
-                .')/?$}sD',
-        ];
-        $this->dynamicRoutes = [
-            11 => [[['_route' => 'a'], ['a'], null, null, false, true, null]],
-            22 => [[['_route' => 'b'], ['a'], null, null, false, true, null]],
-            33 => [
-                [['_route' => 'c'], ['a'], null, null, false, true, null],
-                [null, null, null, null, false, false, 0],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php b/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php
deleted file mode 100644
index e233cd1c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/dumper/url_matcher9.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherTrait;
-use Symfony\Component\Routing\RequestContext;
-
-/**
- * This class has been auto-generated
- * by the Symfony Routing Component.
- */
-class ProjectUrlMatcher extends Symfony\Component\Routing\Matcher\UrlMatcher
-{
-    use CompiledUrlMatcherTrait;
-
-    public function __construct(RequestContext $context)
-    {
-        $this->context = $context;
-        $this->matchHost = true;
-        $this->staticRoutes = [
-            '/' => [
-                [['_route' => 'a'], '#^(?P<d>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-                [['_route' => 'c'], '#^(?P<e>[^\\.]++)\\.e\\.c\\.b\\.a$#sDi', null, null, false, false, null],
-                [['_route' => 'b'], 'd.c.b.a', null, null, false, false, null],
-            ],
-        ];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Fixtures/empty.yml b/vendor/symfony/routing/Tests/Fixtures/empty.yml
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/file_resource.yml b/vendor/symfony/routing/Tests/Fixtures/file_resource.yml
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/foo.xml b/vendor/symfony/routing/Tests/Fixtures/foo.xml
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/foo1.xml b/vendor/symfony/routing/Tests/Fixtures/foo1.xml
deleted file mode 100644
index e69de29b..00000000
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml b/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml
deleted file mode 100644
index 8a0410c5..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/bar.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="bar_route" path="/bar" controller="AppBundle:Bar:view" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml b/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml
deleted file mode 100644
index ba3bc229..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/bar.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-bar_route:
-    path: /bar
-    defaults:
-        _controller: AppBundle:Bar:view
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml b/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml
deleted file mode 100644
index 4b48a0f3..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/baz.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="baz_route" path="/baz" controller="AppBundle:Baz:view" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml b/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml
deleted file mode 100644
index f7d8c67f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/baz.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-baz_route:
-    path: /baz
-    defaults:
-        _controller: AppBundle:Baz:view
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml b/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml
deleted file mode 100644
index a08e96d6..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="ba?.xml" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml b/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml
deleted file mode 100644
index d1ae5854..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_multiple.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-_static:
-    resource: ba?.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml b/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml
deleted file mode 100644
index 3b26eef1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="b?r.xml" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml b/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml
deleted file mode 100644
index f56ddbd0..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/import_single.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-_static:
-    resource: b?r.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php
deleted file mode 100644
index 897fa11f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    return $routes->import('php_dsl_ba?.php');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php
deleted file mode 100644
index e6ccf24f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_bar.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $collection = $routes->collection();
-
-    $collection->add('bar_route', '/bar')
-        ->defaults(['_controller' => 'AppBundle:Bar:view']);
-
-    return $collection;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php b/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php
deleted file mode 100644
index cce65d70..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/glob/php_dsl_baz.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $collection = $routes->collection();
-
-    $collection->add('baz_route', '/baz')
-        ->defaults(['_controller' => 'AppBundle:Baz:view']);
-
-    return $collection;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml b/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml
deleted file mode 100644
index 8699f399..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="../controller/routing.xml" />
-    <import resource="../controller/routing.xml" prefix="/api" name-prefix="api_" />
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml b/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml
deleted file mode 100644
index 90dce0ea..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_name_prefix/routing.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-app:
-    resource: ../controller/routing.yml
-
-api:
-    resource: ../controller/routing.yml
-    name_prefix: api_
-    prefix: /api
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml b/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml
deleted file mode 100644
index 8e768136..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="../controller/routing.xml" prefix="/slash" name-prefix="a_" />
-    <import resource="../controller/routing.xml" prefix="/no-slash" name-prefix="b_" trailing-slash-on-root="false" />
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml b/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml
deleted file mode 100644
index f840ecf8..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/import_with_no_trailing_slash/routing.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-app:
-    resource: ../controller/routing.yml
-    name_prefix: a_
-    prefix: /slash
-
-api:
-    resource: ../controller/routing.yml
-    name_prefix: b_
-    prefix: /no-slash
-    trailing_slash_on_root: false
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php
deleted file mode 100644
index 3606f3e6..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('one', '/one')
-        ->add('two', '/two')->defaults(['specific' => 'imported'])
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml
deleted file mode 100644
index 64fd35b7..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="one" path="/one" />
-    <route id="two" path="/two">
-        <default key="specific">imported</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml b/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml
deleted file mode 100644
index 9af81906..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/imported-with-defaults.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-one:
-  path: /one
-
-two:
-  path: /two
-  defaults:
-    specific: imported
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php
deleted file mode 100644
index 6ac9d69e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->import('imported-with-defaults.php')
-        ->prefix('/defaults')
-        ->locale('g_locale')
-        ->format('g_format')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml
deleted file mode 100644
index bdd25318..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="imported-with-defaults.xml" prefix="/defaults"
-            locale="g_locale"
-            format="g_format" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml b/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml
deleted file mode 100644
index 2e7d5900..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/importer-with-defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-defaults:
-  resource: imported-with-defaults.yml
-  prefix: /defaults
-  locale: g_locale
-  format: g_format
diff --git a/vendor/symfony/routing/Tests/Fixtures/incomplete.yml b/vendor/symfony/routing/Tests/Fixtures/incomplete.yml
deleted file mode 100644
index df64d324..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/incomplete.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-blog_show:
-    defaults:  { _controller: MyBlogBundle:Blog:show }
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml
deleted file mode 100644
index 01be7c18..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_defaults.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <bool>true</bool>
-                <int>1</int>
-                <float>3.5</float>
-                <string>foo</string>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml
deleted file mode 100644
index 65baabe3..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_in_list_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <list>
-                    <bool>true</bool>
-                    <int>1</int>
-                    <float>3.5</float>
-                    <string>foo</string>
-                </list>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml
deleted file mode 100644
index f0d972d1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_in_map_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <list key="list">
-                    <bool>true</bool>
-                    <int>1</int>
-                    <float>3.5</float>
-                    <string>foo</string>
-                </list>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml b/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml
deleted file mode 100644
index 45bdd9da..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/list_null_values.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="list">
-            <list>
-                <bool xsi:nil="true" />
-                <int xsi:nil="true" />
-                <float xsi:nil="1" />
-                <string xsi:nil="true" />
-                <list xsi:nil="true" />
-                <map xsi:nil="true" />
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized.xml b/vendor/symfony/routing/Tests/Fixtures/localized.xml
deleted file mode 100644
index d3585c46..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="localized">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <path locale="en">/path</path>
-        <path locale="fr">/route</path>
-    </route>
-
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml
deleted file mode 100644
index e618b9ce..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <route id="imported" path="/suffix">
-        <default key="_controller">MyBundle:Blog:show</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml
deleted file mode 100644
index b62b5693..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale-but-not-localized.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-imported:
-    controller: ImportedController::someAction
-    path: /imported
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml
deleted file mode 100644
index 3fe52321..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <route id="imported">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <path locale="en">/suffix</path>
-        <path locale="fr">/le-suffix</path>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml
deleted file mode 100644
index 65def8a9..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-locale.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-imported:
-    controller: ImportedController::someAction
-    path:
-        nl: /voorbeeld
-        en: /example
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php
deleted file mode 100644
index a32189fb..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('utf8_one', '/one')
-        ->add('utf8_two', '/two')
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml
deleted file mode 100644
index 751d5c54..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing">
-
-    <route id="utf8_one" path="/one" />
-    <route id="utf8_two" path="/two" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml
deleted file mode 100644
index f04e7ac7..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/imported-with-utf8.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-utf8_one:
-    path: /one
-
-utf8_two:
-    path: /two
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml
deleted file mode 100644
index 1d13a063..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-controller-default.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-i_need:
-    defaults:
-        _controller: DefaultController::defaultAction
-    resource: ./localized-route.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml
deleted file mode 100644
index 7acbe689..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="./imported-with-locale-but-not-localized.xml">
-        <prefix locale="fr">/le-prefix</prefix>
-        <prefix locale="en">/the-prefix</prefix>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml
deleted file mode 100644
index bc33f3f8..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale-imports-non-localized-route.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-i_need:
-    resource: ./imported-with-locale-but-not-localized.yml
-    prefix:
-        nl: /nl
-        en: /en
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml
deleted file mode 100644
index c3af1098..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="./imported-with-locale.xml">
-        <prefix locale="fr">/le-prefix</prefix>
-        <prefix locale="en">/the-prefix</prefix>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml
deleted file mode 100644
index 29d3571b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-locale.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-i_need:
-    resource: ./imported-with-locale.yml
-    prefix:
-        nl: /nl
-        en: /en
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php
deleted file mode 100644
index 105528dd..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes->import('imported-with-utf8.php')->utf8();
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml
deleted file mode 100644
index 20f8e38e..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-    <import resource="imported-with-utf8.xml" utf8="true" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml
deleted file mode 100644
index 20ad443b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importer-with-utf8.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-utf8_routes:
-    resource: imported-with-utf8.yml
-    utf8: true
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml
deleted file mode 100644
index ab54ee49..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/importing-localized-route.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-i_need:
-    resource: ./localized-route.yml
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml b/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml
deleted file mode 100644
index 351a4180..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/localized-route.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-home:
-    path:
-        nl: /nl
-        en: /en
-
-not_localized:
-    controller: HomeController::otherAction
-    path: /here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml b/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml
deleted file mode 100644
index b6d3f5ec..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/missing-locale-in-importer.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-importing_with_missing_prefix:
-    resource: ./localized-route.yml
-    prefix:
-    nl: /prefix
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml b/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml
deleted file mode 100644
index 4be493da..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/not-localized.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-not_localized:
-    controller: string
-    path: /here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml b/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml
deleted file mode 100644
index a125a4ef..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/officially_formatted_locales.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-official:
-    controller: HomeController::someAction
-    path:
-        fr.UTF-8: /omelette-au-fromage
-        pt-PT: /eu-não-sou-espanhol
-        pt_BR: /churrasco
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml b/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml
deleted file mode 100644
index 4c7c599f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/route-without-path-or-locales.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-routename:
-    controller: Here::here
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php
deleted file mode 100644
index e7826d0a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->add('some_route', '/')
-        ->add('some_utf8_route', '/utf8')->utf8()
-    ;
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml
deleted file mode 100644
index 95aff20c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        http://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="app_utf8" path="/utf8">
-        <option key="utf8">true</option>
-    </route>
-    <route id="app_no_utf8" path="/no-utf8">
-        <option key="utf8">false</option>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml b/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml
deleted file mode 100644
index 3154c83f..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/localized/utf8.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-some_route:
-    path: /
-
-some_utf8_route:
-    path: /utf8
-    utf8: true
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml
deleted file mode 100644
index 9f080443..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_defaults.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <bool key="public">true</bool>
-                <int key="page">1</int>
-                <float key="price">3.5</float>
-                <string key="title">foo</string>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml
deleted file mode 100644
index 1c8b87df..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_in_list_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <list>
-                <map>
-                    <bool key="public">true</bool>
-                    <int key="page">1</int>
-                    <float key="price">3.5</float>
-                    <string key="title">foo</string>
-                </map>
-            </list>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml
deleted file mode 100644
index a3af4928..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_in_map_defaults.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="values">
-            <map>
-                <map key="map">
-                    <bool key="public">true</bool>
-                    <int key="page">1</int>
-                    <float key="price">3.5</float>
-                    <string key="title">foo</string>
-                </map>
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml b/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml
deleted file mode 100644
index a8153ad1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/map_null_values.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="map">
-            <map>
-                <bool key="boolean" xsi:nil="true" />
-                <int key="integer" xsi:nil="true" />
-                <float key="float" xsi:nil="true" />
-                <string key="string" xsi:nil="1" />
-                <list key="list" xsi:nil="true" />
-                <map key="map" xsi:nil="true" />
-            </map>
-        </default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/missing_id.xml b/vendor/symfony/routing/Tests/Fixtures/missing_id.xml
deleted file mode 100644
index fa42e98b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/missing_id.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route path="/test"></route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/missing_path.xml b/vendor/symfony/routing/Tests/Fixtures/missing_path.xml
deleted file mode 100644
index d048adb1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/missing_path.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="myroute"></route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml b/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml
deleted file mode 100644
index f303464d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/namespaceprefix.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<r:routes xmlns:r="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <r:route id="blog_show" path="/blog/{slug}" host="{_locale}.example.com">
-        <r:default key="_controller">MyBundle:Blog:show</r:default>
-        <requirement xmlns="http://symfony.com/schema/routing" key="slug">\w+</requirement>
-        <r2:requirement xmlns:r2="http://symfony.com/schema/routing" key="_locale">en|fr|de</r2:requirement>
-        <r:option key="compiler_class">RouteCompiler</r:option>
-        <r:default key="page">
-            <r3:int xmlns:r3="http://symfony.com/schema/routing">1</r3:int>
-        </r:default>
-    </r:route>
-</r:routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml b/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml
deleted file mode 100644
index a3e94737..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonesense_resource_plus_path.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-    resource: validpattern.yml
-    path:     /test
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml b/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml
deleted file mode 100644
index 547cda3b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonesense_type_without_resource.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-blog_show:
-    path:    /blog/{slug}
-    type:    custom
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml
deleted file mode 100644
index 07f5f801..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="_controller">MyBundle:Blog:show</default>
-    <!-- </route> -->
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml
deleted file mode 100644
index 257cc564..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid.yml
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml
deleted file mode 100644
index cfa9992b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalid2.yml
+++ /dev/null
@@ -1 +0,0 @@
-route: string
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml b/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml
deleted file mode 100644
index b01d5027..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidkeys.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-someroute:
-  resource: path/to/some.yml
-  not_valid_key: test_
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml
deleted file mode 100644
index 71093a4d..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidnode.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <foo>bar</foo>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml b/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml
deleted file mode 100644
index f0b84496..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/nonvalidroute.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <option key="compiler_class">RouteCompiler</option>
-        <foo key="bar">baz</foo>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/null_values.xml b/vendor/symfony/routing/Tests/Fixtures/null_values.xml
deleted file mode 100644
index 078d49ae..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/null_values.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}">
-        <default key="foo" xsi:nil="true" />
-        <default key="bar" xsi:nil="1" />
-        <default key="foobar" xsi:nil="false">foo</default>
-        <default key="baz" xsi:nil="0">bar</default>
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl.php
deleted file mode 100644
index 86caa996..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->collection()
-        ->add('foo', '/foo')
-            ->condition('abc')
-            ->options(['utf8' => true])
-        ->add('buz', 'zub')
-            ->controller('foo:act');
-
-    $routes->import('php_dsl_sub.php')
-        ->prefix('/sub')
-        ->requirements(['id' => '\d+']);
-
-    $routes->import('php_dsl_sub.php')
-        ->namePrefix('z_')
-        ->prefix('/zub');
-
-    $routes->import('php_dsl_sub_root.php')
-        ->prefix('/bus', false);
-
-    $routes->add('ouf', '/ouf')
-        ->schemes(['https'])
-        ->methods(['GET'])
-        ->defaults(['id' => 0]);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php
deleted file mode 100644
index 7489360c..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_i18n.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $routes
-        ->collection()
-        ->prefix(['en' => '/glish'])
-        ->add('foo', '/foo')
-        ->add('bar', ['en' => '/bar']);
-
-    $routes
-        ->add('baz', ['en' => '/baz']);
-
-    $routes->import('php_dsl_sub_i18n.php')
-        ->prefix(['fr' => '/ench']);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php
deleted file mode 100644
index 08b05633..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('c_')
-        ->prefix('pub');
-
-    $add('root', '/');
-    $add('bar', '/bar');
-
-    $add->collection('pub_')
-        ->host('host')
-        ->add('buz', 'buz');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php
deleted file mode 100644
index e79edc86..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_i18n.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('c_')
-        ->prefix('pub');
-
-    $add('foo', ['fr' => '/foo']);
-    $add('bar', ['fr' => '/bar']);
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php b/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php
deleted file mode 100644
index 9b309fc1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_dsl_sub_root.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return function (RoutingConfigurator $routes) {
-    $add = $routes->collection('r_');
-
-    $add('root', '/');
-    $add('bar', '/bar/');
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php b/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php
deleted file mode 100644
index 9b9183a1..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/php_object_dsl.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Loader\Configurator;
-
-return new class() {
-    public function __invoke(RoutingConfigurator $routes)
-    {
-        $routes
-            ->collection()
-            ->add('foo', '/foo')
-            ->condition('abc')
-            ->options(['utf8' => true])
-            ->add('buz', 'zub')
-            ->controller('foo:act');
-
-        $routes->import('php_dsl_sub.php')
-            ->prefix('/sub')
-            ->requirements(['id' => '\d+']);
-
-        $routes->import('php_dsl_sub.php')
-            ->namePrefix('z_')
-            ->prefix('/zub');
-
-        $routes->import('php_dsl_sub_root.php')
-            ->prefix('/bus', false);
-
-        $routes->add('ouf', '/ouf')
-            ->schemes(['https'])
-            ->methods(['GET'])
-            ->defaults(['id' => 0]);
-    }
-};
diff --git a/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml b/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml
deleted file mode 100644
index be8f04dd..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/requirements_without_placeholder_name.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-foo:
-    path: '/{foo}'
-    requirements:
-        - '\d+'
diff --git a/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml b/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml
deleted file mode 100644
index e3f81cc4..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/scalar_defaults.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing
-        https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog" path="/blog">
-        <default key="_controller">
-            <string>AcmeBlogBundle:Blog:index</string>
-        </default>
-        <default key="slug" xsi:nil="true" />
-        <default key="published">
-            <bool>true</bool>
-        </default>
-        <default key="page">
-            <int>1</int>
-        </default>
-        <default key="price">
-            <float>3.5</float>
-        </default>
-        <default key="archived">
-            <bool>false</bool>
-        </default>
-        <default key="free">
-            <bool>1</bool>
-        </default>
-        <default key="locked">
-            <bool>0</bool>
-        </default>
-        <default key="foo" xsi:nil="true" />
-        <default key="bar" xsi:nil="1" />
-    </route>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml b/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml
deleted file mode 100644
index 78be239a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/special_route_name.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-"#$péß^a|":
-    path: "true"
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.php b/vendor/symfony/routing/Tests/Fixtures/validpattern.php
deleted file mode 100644
index 3ef0e148..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-$collection = new RouteCollection();
-$collection->add('blog_show', new Route(
-    '/blog/{slug}',
-    ['_controller' => 'MyBlogBundle:Blog:show'],
-    ['locale' => '\w+'],
-    ['compiler_class' => 'RouteCompiler'],
-    '{locale}.example.com',
-    ['https'],
-    ['GET', 'POST', 'put', 'OpTiOnS'],
-    'context.getMethod() == "GET"'
-));
-
-return $collection;
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.xml b/vendor/symfony/routing/Tests/Fixtures/validpattern.xml
deleted file mode 100644
index 93e59d62..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <route id="blog_show" path="/blog/{slug}" host="{locale}.example.com" methods="GET|POST  put,OpTiOnS" schemes="hTTps">
-        <default key="_controller">MyBundle:Blog:show</default>
-        <requirement key="locale">\w+</requirement>
-        <option key="compiler_class">RouteCompiler</option>
-        <condition>context.getMethod() == "GET"</condition>
-    </route>
-
-    <route id="blog_show_inherited" path="/blog/{slug}" />
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/validpattern.yml b/vendor/symfony/routing/Tests/Fixtures/validpattern.yml
deleted file mode 100644
index 565abaaa..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validpattern.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-blog_show:
-    path:         /blog/{slug}
-    defaults:     { _controller: "MyBundle:Blog:show" }
-    host:         "{locale}.example.com"
-    requirements: { 'locale': '\w+' }
-    methods:      ['GET','POST','put','OpTiOnS']
-    schemes:      ['https']
-    condition:    'context.getMethod() == "GET"'
-    options:
-        compiler_class: RouteCompiler
-
-blog_show_inherited:
-    path:      /blog/{slug}
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.php b/vendor/symfony/routing/Tests/Fixtures/validresource.php
deleted file mode 100644
index 31d354a3..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/** @var $loader \Symfony\Component\Routing\Loader\PhpFileLoader */
-/** @var \Symfony\Component\Routing\RouteCollection $collection */
-$collection = $loader->import('validpattern.php');
-$collection->addDefaults([
-    'foo' => 123,
-]);
-$collection->addRequirements([
-    'foo' => '\d+',
-]);
-$collection->addOptions([
-    'foo' => 'bar',
-]);
-$collection->setCondition('context.getMethod() == "POST"');
-$collection->addPrefix('/prefix');
-
-return $collection;
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.xml b/vendor/symfony/routing/Tests/Fixtures/validresource.xml
deleted file mode 100644
index 02dfe6be..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<routes xmlns="http://symfony.com/schema/routing"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
-
-    <import resource="validpattern.xml" prefix="/{foo}" host="">
-        <default key="foo">123</default>
-        <requirement key="foo">\d+</requirement>
-        <option key="foo">bar</option>
-        <condition>context.getMethod() == "POST"</condition>
-    </import>
-</routes>
diff --git a/vendor/symfony/routing/Tests/Fixtures/validresource.yml b/vendor/symfony/routing/Tests/Fixtures/validresource.yml
deleted file mode 100644
index faf2263a..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/validresource.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-_blog:
-    resource:     validpattern.yml
-    prefix:       /{foo}
-    defaults:     { 'foo': '123' }
-    requirements: { 'foo': '\d+' }
-    options:      { 'foo': 'bar' }
-    host:         ""
-    condition:    'context.getMethod() == "POST"'
diff --git a/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php b/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php
deleted file mode 100644
index 5871420b..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/with_define_path_variable.php
+++ /dev/null
@@ -1,5 +0,0 @@
-<?php
-
-$path = '/1/2/3';
-
-return new \Symfony\Component\Routing\RouteCollection();
diff --git a/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml b/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml
deleted file mode 100644
index f217d5bc..00000000
--- a/vendor/symfony/routing/Tests/Fixtures/withdoctype.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE foo>
-<foo></foo>
diff --git a/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php b/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php
deleted file mode 100644
index 513e1c80..00000000
--- a/vendor/symfony/routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
-use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlGeneratorDumperTest extends TestCase
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @var CompiledUrlGeneratorDumper
-     */
-    private $generatorDumper;
-
-    /**
-     * @var string
-     */
-    private $testTmpFilepath;
-
-    /**
-     * @var string
-     */
-    private $largeTestTmpFilepath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->routeCollection = new RouteCollection();
-        $this->generatorDumper = new CompiledUrlGeneratorDumper($this->routeCollection);
-        $this->testTmpFilepath = sys_get_temp_dir().'/php_generator.'.$this->getName().'.php';
-        $this->largeTestTmpFilepath = sys_get_temp_dir().'/php_generator.'.$this->getName().'.large.php';
-        @unlink($this->testTmpFilepath);
-        @unlink($this->largeTestTmpFilepath);
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->testTmpFilepath);
-
-        $this->routeCollection = null;
-        $this->generatorDumper = null;
-        $this->testTmpFilepath = null;
-    }
-
-    public function testDumpWithRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithSimpleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test', (new Route('/foo')));
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $context = new RequestContext('/app.php');
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, $context, null, 'en');
-
-        $urlWithDefaultLocale = $projectUrlGenerator->generate('test');
-        $urlWithSpecifiedLocale = $projectUrlGenerator->generate('test', ['_locale' => 'nl']);
-        $context->setParameter('_locale', 'en');
-        $urlWithEnglishContext = $projectUrlGenerator->generate('test');
-        $context->setParameter('_locale', 'nl');
-        $urlWithDutchContext = $projectUrlGenerator->generate('test');
-
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithDefaultLocale);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithSpecifiedLocale);
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithEnglishContext);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithDutchContext);
-
-        // test with full route name
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test.en'));
-
-        $context->setParameter('_locale', 'de_DE');
-        // test that it fall backs to another route when there is no matching localized route
-        $this->assertEquals('/app.php/foo', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithRouteNotFoundLocalizedRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.');
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'), null, 'pl_PL');
-        $projectUrlGenerator->generate('test');
-    }
-
-    public function testDumpWithFallbackLocaleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump();
-        file_put_contents($this->testTmpFilepath, $code);
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en_GB');
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, $context, null, null);
-
-        // test with context _locale
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test'));
-        // test with parameters _locale
-        $this->assertEquals('/app.php/testen/is/leuk', $projectUrlGenerator->generate('test', ['_locale' => 'nl_BE']));
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'), null, 'fr_CA');
-        // test with default locale
-        $this->assertEquals('/app.php/tester/est/amusant', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithTooManyRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        for ($i = 0; $i < 32769; ++$i) {
-            $this->routeCollection->add('route_'.$i, new Route('/route_'.$i));
-        }
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->largeTestTmpFilepath, $this->generatorDumper->dump());
-        $this->routeCollection = $this->generatorDumper = null;
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->largeTestTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithoutRoutes()
-    {
-        $this->expectException('InvalidArgumentException');
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $projectUrlGenerator->generate('Test', []);
-    }
-
-    public function testGenerateNonExistingRoute()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->routeCollection->add('Test', new Route('/test'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext());
-        $url = $projectUrlGenerator->generate('NonExisting', []);
-    }
-
-    public function testDumpForRouteWithDefaults()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}', ['foo' => 'bar']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext());
-        $url = $projectUrlGenerator->generate('Test', []);
-
-        $this->assertEquals('/testing', $url);
-    }
-
-    public function testDumpWithSchemeRequirement()
-    {
-        $this->routeCollection->add('Test1', new Route('/testing', [], [], [], '', ['ftp', 'https']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('ftp://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('ftp://localhost/app.php/testing', $relativeUrl);
-
-        $projectUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, new RequestContext('/app.php', 'GET', 'localhost', 'https'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('https://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('/app.php/testing', $relativeUrl);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php b/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php
deleted file mode 100644
index 8ea60eb2..00000000
--- a/vendor/symfony/routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php
+++ /dev/null
@@ -1,253 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class PhpGeneratorDumperTest extends TestCase
-{
-    /**
-     * @var RouteCollection
-     */
-    private $routeCollection;
-
-    /**
-     * @var PhpGeneratorDumper
-     */
-    private $generatorDumper;
-
-    /**
-     * @var string
-     */
-    private $testTmpFilepath;
-
-    /**
-     * @var string
-     */
-    private $largeTestTmpFilepath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->routeCollection = new RouteCollection();
-        $this->generatorDumper = new PhpGeneratorDumper($this->routeCollection);
-        $this->testTmpFilepath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.php';
-        $this->largeTestTmpFilepath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.large.php';
-        @unlink($this->testTmpFilepath);
-        @unlink($this->largeTestTmpFilepath);
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->testTmpFilepath);
-
-        $this->routeCollection = null;
-        $this->generatorDumper = null;
-        $this->testTmpFilepath = null;
-    }
-
-    public function testDumpWithRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump());
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \ProjectUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithSimpleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test', (new Route('/foo')));
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'SimpleLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $context = new RequestContext('/app.php');
-        $projectUrlGenerator = new \SimpleLocalizedProjectUrlGenerator($context, null, 'en');
-
-        $urlWithDefaultLocale = $projectUrlGenerator->generate('test');
-        $urlWithSpecifiedLocale = $projectUrlGenerator->generate('test', ['_locale' => 'nl']);
-        $context->setParameter('_locale', 'en');
-        $urlWithEnglishContext = $projectUrlGenerator->generate('test');
-        $context->setParameter('_locale', 'nl');
-        $urlWithDutchContext = $projectUrlGenerator->generate('test');
-
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithDefaultLocale);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithSpecifiedLocale);
-        $this->assertEquals('/app.php/testing/is/fun', $urlWithEnglishContext);
-        $this->assertEquals('/app.php/testen/is/leuk', $urlWithDutchContext);
-
-        // test with full route name
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test.en'));
-
-        $context->setParameter('_locale', 'de_DE');
-        // test that it fall backs to another route when there is no matching localized route
-        $this->assertEquals('/app.php/foo', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithRouteNotFoundLocalizedRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.');
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'RouteNotFoundLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \RouteNotFoundLocalizedProjectUrlGenerator(new RequestContext('/app.php'), null, 'pl_PL');
-        $projectUrlGenerator->generate('test');
-    }
-
-    public function testDumpWithFallbackLocaleLocalizedRoutes()
-    {
-        $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_canonical_route', 'test'));
-        $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_canonical_route', 'test'));
-
-        $code = $this->generatorDumper->dump([
-            'class' => 'FallbackLocaleLocalizedProjectUrlGenerator',
-        ]);
-        file_put_contents($this->testTmpFilepath, $code);
-        include $this->testTmpFilepath;
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en_GB');
-        $projectUrlGenerator = new \FallbackLocaleLocalizedProjectUrlGenerator($context, null, null);
-
-        // test with context _locale
-        $this->assertEquals('/app.php/testing/is/fun', $projectUrlGenerator->generate('test'));
-        // test with parameters _locale
-        $this->assertEquals('/app.php/testen/is/leuk', $projectUrlGenerator->generate('test', ['_locale' => 'nl_BE']));
-
-        $projectUrlGenerator = new \FallbackLocaleLocalizedProjectUrlGenerator(new RequestContext('/app.php'), null, 'fr_CA');
-        // test with default locale
-        $this->assertEquals('/app.php/tester/est/amusant', $projectUrlGenerator->generate('test'));
-    }
-
-    public function testDumpWithTooManyRoutes()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}'));
-        for ($i = 0; $i < 32769; ++$i) {
-            $this->routeCollection->add('route_'.$i, new Route('/route_'.$i));
-        }
-        $this->routeCollection->add('Test2', new Route('/testing2'));
-
-        file_put_contents($this->largeTestTmpFilepath, $this->generatorDumper->dump([
-            'class' => 'ProjectLargeUrlGenerator',
-        ]));
-        $this->routeCollection = $this->generatorDumper = null;
-        include $this->largeTestTmpFilepath;
-
-        $projectUrlGenerator = new \ProjectLargeUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-        $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('http://localhost/app.php/testing/bar', $absoluteUrlWithParameter);
-        $this->assertEquals('http://localhost/app.php/testing2', $absoluteUrlWithoutParameter);
-        $this->assertEquals('/app.php/testing/bar', $relativeUrlWithParameter);
-        $this->assertEquals('/app.php/testing2', $relativeUrlWithoutParameter);
-    }
-
-    public function testDumpWithoutRoutes()
-    {
-        $this->expectException('InvalidArgumentException');
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'WithoutRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \WithoutRoutesUrlGenerator(new RequestContext('/app.php'));
-
-        $projectUrlGenerator->generate('Test', []);
-    }
-
-    public function testGenerateNonExistingRoute()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $this->routeCollection->add('Test', new Route('/test'));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'NonExistingRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \NonExistingRoutesUrlGenerator(new RequestContext());
-        $url = $projectUrlGenerator->generate('NonExisting', []);
-    }
-
-    public function testDumpForRouteWithDefaults()
-    {
-        $this->routeCollection->add('Test', new Route('/testing/{foo}', ['foo' => 'bar']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'DefaultRoutesUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \DefaultRoutesUrlGenerator(new RequestContext());
-        $url = $projectUrlGenerator->generate('Test', []);
-
-        $this->assertEquals('/testing', $url);
-    }
-
-    public function testDumpWithSchemeRequirement()
-    {
-        $this->routeCollection->add('Test1', new Route('/testing', [], [], [], '', ['ftp', 'https']));
-
-        file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump(['class' => 'SchemeUrlGenerator']));
-        include $this->testTmpFilepath;
-
-        $projectUrlGenerator = new \SchemeUrlGenerator(new RequestContext('/app.php'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('ftp://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('ftp://localhost/app.php/testing', $relativeUrl);
-
-        $projectUrlGenerator = new \SchemeUrlGenerator(new RequestContext('/app.php', 'GET', 'localhost', 'https'));
-
-        $absoluteUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_URL);
-        $relativeUrl = $projectUrlGenerator->generate('Test1', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('https://localhost/app.php/testing', $absoluteUrl);
-        $this->assertEquals('/app.php/testing', $relativeUrl);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php b/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php
deleted file mode 100644
index a7683847..00000000
--- a/vendor/symfony/routing/Tests/Generator/UrlGeneratorTest.php
+++ /dev/null
@@ -1,863 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Generator;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class UrlGeneratorTest extends TestCase
-{
-    public function testAbsoluteUrlWithPort80()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing', $url);
-    }
-
-    public function testAbsoluteSecureUrlWithPort443()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['scheme' => 'https'])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('https://localhost/app.php/testing', $url);
-    }
-
-    public function testAbsoluteUrlWithNonStandardPort()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['httpPort' => 8080])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost:8080/app.php/testing', $url);
-    }
-
-    public function testAbsoluteSecureUrlWithNonStandardPort()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes, ['httpsPort' => 8080, 'scheme' => 'https'])->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('https://localhost:8080/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithoutParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing/bar', $url);
-    }
-
-    public function testRelativeUrlWithNullParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing.{format}', ['format' => null]));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing', $url);
-    }
-
-    public function testRelativeUrlWithNullParameterButNotOptional()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}/bar', ['foo' => null]));
-        // This must raise an exception because the default requirement for "foo" is "[^/]+" which is not met with these params.
-        // Generating path "/testing//bar" would be wrong as matching this route would fail.
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testRelativeUrlWithOptionalZeroParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{page}'));
-        $url = $this->getGenerator($routes)->generate('test', ['page' => 0], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing/0', $url);
-    }
-
-    public function testNotPassedOptionalParameterInBetween()
-    {
-        $routes = $this->getRoutes('test', new Route('/{slug}/{page}', ['slug' => 'index', 'page' => 0]));
-        $this->assertSame('/app.php/index/1', $this->getGenerator($routes)->generate('test', ['page' => 1]));
-        $this->assertSame('/app.php/', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testRelativeUrlWithExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing?foo=bar', $url);
-    }
-
-    public function testAbsoluteUrlWithExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing?foo=bar', $url);
-    }
-
-    public function testUrlWithNullExtraParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['foo' => null], UrlGeneratorInterface::ABSOLUTE_URL);
-
-        $this->assertEquals('http://localhost/app.php/testing', $url);
-    }
-
-    public function testUrlWithExtraParametersFromGlobals()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('bar', 'bar');
-        $generator->setContext($context);
-        $url = $generator->generate('test', ['foo' => 'bar']);
-
-        $this->assertEquals('/app.php/testing?foo=bar', $url);
-    }
-
-    public function testUrlWithGlobalParameter()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('foo', 'bar');
-        $generator->setContext($context);
-        $url = $generator->generate('test', []);
-
-        $this->assertEquals('/app.php/testing/bar', $url);
-    }
-
-    public function testGlobalParameterHasHigherPriorityThanDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/{_locale}', ['_locale' => 'en']));
-        $generator = $this->getGenerator($routes);
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'de');
-        $generator->setContext($context);
-        $url = $generator->generate('test', []);
-
-        $this->assertSame('/app.php/de', $url);
-    }
-
-    public function testGenerateWithDefaultLocale()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $this->assertSame(
-            'http://localhost/app.php/foo',
-            $generator->generate($name, [], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithOverriddenParameterLocale()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $this->assertSame(
-            'http://localhost/app.php/bar',
-            $generator->generate($name, ['_locale' => 'en'], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithOverriddenParameterLocaleFromRequestContext()
-    {
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'hr');
-
-        $context = new RequestContext('/app.php');
-        $context->setParameter('_locale', 'en');
-        $generator->setContext($context);
-
-        $this->assertSame(
-            'http://localhost/app.php/bar',
-            $generator->generate($name, [], UrlGeneratorInterface::ABSOLUTE_URL)
-        );
-    }
-
-    public function testGenerateWithoutRoutes()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $routes = $this->getRoutes('foo', new Route('/testing/{foo}'));
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateWithInvalidLocale()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException');
-        $routes = new RouteCollection();
-
-        $route = new Route('');
-
-        $name = 'test';
-
-        foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) {
-            $localizedRoute = clone $route;
-            $localizedRoute->setDefault('_locale', $locale);
-            $localizedRoute->setDefault('_canonical_route', $name);
-            $localizedRoute->setPath($path);
-            $routes->add($name.'.'.$locale, $localizedRoute);
-        }
-
-        $generator = $this->getGenerator($routes, [], null, 'fr');
-        $generator->generate($name);
-    }
-
-    public function testGenerateForRouteWithoutMandatoryParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\MissingMandatoryParametersException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
-        $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => '1|2']));
-        $this->getGenerator($routes)->generate('test', ['foo' => '0'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameterNonStrict()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateForRouteWithInvalidOptionalParameterNonStrictWithLogger()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
-        $logger->expects($this->once())
-            ->method('error');
-        $generator = $this->getGenerator($routes, [], $logger);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateForRouteWithInvalidParameterButDisabledRequirementsCheck()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', ['foo' => '1'], ['foo' => 'd+']));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(null);
-        $this->assertSame('/app.php/testing/bar', $generator->generate('test', ['foo' => 'bar']));
-    }
-
-    public function testGenerateForRouteWithInvalidMandatoryParameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => 'd+']));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'bar'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testGenerateForRouteWithInvalidUtf8Parameter()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/testing/{foo}', [], ['foo' => '\pL+'], ['utf8' => true]));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'abc123'], UrlGeneratorInterface::ABSOLUTE_URL);
-    }
-
-    public function testRequiredParamAndEmptyPassed()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{slug}', [], ['slug' => '.+']));
-        $this->getGenerator($routes)->generate('test', ['slug' => '']);
-    }
-
-    public function testSchemeRequirementDoesNothingIfSameCurrentScheme()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['http']));
-        $this->assertEquals('/app.php/', $this->getGenerator($routes)->generate('test'));
-
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['https']));
-        $this->assertEquals('/app.php/', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test'));
-    }
-
-    public function testSchemeRequirementForcesAbsoluteUrl()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['https']));
-        $this->assertEquals('https://localhost/app.php/', $this->getGenerator($routes)->generate('test'));
-
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['http']));
-        $this->assertEquals('http://localhost/app.php/', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test'));
-    }
-
-    public function testSchemeRequirementCreatesUrlForFirstRequiredScheme()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], [], [], '', ['Ftp', 'https']));
-        $this->assertEquals('ftp://localhost/app.php/', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testPathWithTwoStartingSlashes()
-    {
-        $routes = $this->getRoutes('test', new Route('//path-and-not-domain'));
-
-        // this must not generate '//path-and-not-domain' because that would be a network path
-        $this->assertSame('/path-and-not-domain', $this->getGenerator($routes, ['BaseUrl' => ''])->generate('test'));
-    }
-
-    public function testNoTrailingSlashForMultipleOptionalParameters()
-    {
-        $routes = $this->getRoutes('test', new Route('/category/{slug1}/{slug2}/{slug3}', ['slug2' => null, 'slug3' => null]));
-
-        $this->assertEquals('/app.php/category/foo', $this->getGenerator($routes)->generate('test', ['slug1' => 'foo']));
-    }
-
-    public function testWithAnIntegerAsADefaultValue()
-    {
-        $routes = $this->getRoutes('test', new Route('/{default}', ['default' => 0]));
-
-        $this->assertEquals('/app.php/foo', $this->getGenerator($routes)->generate('test', ['default' => 'foo']));
-    }
-
-    public function testNullForOptionalParameterIsIgnored()
-    {
-        $routes = $this->getRoutes('test', new Route('/test/{default}', ['default' => 0]));
-
-        $this->assertEquals('/app.php/test', $this->getGenerator($routes)->generate('test', ['default' => null]));
-    }
-
-    public function testQueryParamSameAsDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/test', ['page' => 1]));
-
-        $this->assertSame('/app.php/test?page=2', $this->getGenerator($routes)->generate('test', ['page' => 2]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['page' => 1]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['page' => '1']));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testArrayQueryParamSameAsDefault()
-    {
-        $routes = $this->getRoutes('test', new Route('/test', ['array' => ['foo', 'bar']]));
-
-        $this->assertSame('/app.php/test?array%5B0%5D=bar&array%5B1%5D=foo', $this->getGenerator($routes)->generate('test', ['array' => ['bar', 'foo']]));
-        $this->assertSame('/app.php/test?array%5Ba%5D=foo&array%5Bb%5D=bar', $this->getGenerator($routes)->generate('test', ['array' => ['a' => 'foo', 'b' => 'bar']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['array' => ['foo', 'bar']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', ['array' => [1 => 'bar', 0 => 'foo']]));
-        $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testGenerateWithSpecialRouteName()
-    {
-        $routes = $this->getRoutes('$péß^a|', new Route('/bar'));
-
-        $this->assertSame('/app.php/bar', $this->getGenerator($routes)->generate('$péß^a|'));
-    }
-
-    public function testUrlEncoding()
-    {
-        $expectedPath = '/app.php/@:%5B%5D/%28%29*%27%22%20+,;-._~%26%24%3C%3E|%7B%7D%25%5C%5E%60!%3Ffoo=bar%23id'
-            .'/@:%5B%5D/%28%29*%27%22%20+,;-._~%26%24%3C%3E|%7B%7D%25%5C%5E%60!%3Ffoo=bar%23id'
-            .'?query=@:%5B%5D/%28%29*%27%22%20%2B,;-._~%26%24%3C%3E%7C%7B%7D%25%5C%5E%60!?foo%3Dbar%23id';
-
-        // This tests the encoding of reserved characters that are used for delimiting of URI components (defined in RFC 3986)
-        // and other special ASCII chars. These chars are tested as static text path, variable path and query param.
-        $chars = '@:[]/()*\'" +,;-._~&$<>|{}%\\^`!?foo=bar#id';
-        $routes = $this->getRoutes('test', new Route("/$chars/{varpath}", [], ['varpath' => '.+']));
-        $this->assertSame($expectedPath, $this->getGenerator($routes)->generate('test', [
-            'varpath' => $chars,
-            'query' => $chars,
-        ]));
-    }
-
-    public function testEncodingOfRelativePathSegments()
-    {
-        $routes = $this->getRoutes('test', new Route('/dir/../dir/..'));
-        $this->assertSame('/app.php/dir/%2E%2E/dir/%2E%2E', $this->getGenerator($routes)->generate('test'));
-        $routes = $this->getRoutes('test', new Route('/dir/./dir/.'));
-        $this->assertSame('/app.php/dir/%2E/dir/%2E', $this->getGenerator($routes)->generate('test'));
-        $routes = $this->getRoutes('test', new Route('/a./.a/a../..a/...'));
-        $this->assertSame('/app.php/a./.a/a../..a/...', $this->getGenerator($routes)->generate('test'));
-    }
-
-    public function testAdjacentVariables()
-    {
-        $routes = $this->getRoutes('test', new Route('/{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => '\d+']));
-        $generator = $this->getGenerator($routes);
-        $this->assertSame('/app.php/foo123', $generator->generate('test', ['x' => 'foo', 'y' => '123']));
-        $this->assertSame('/app.php/foo123bar.xml', $generator->generate('test', ['x' => 'foo', 'y' => '123', 'z' => 'bar', '_format' => 'xml']));
-
-        // The default requirement for 'x' should not allow the separator '.' in this case because it would otherwise match everything
-        // and following optional variables like _format could never match.
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $generator->generate('test', ['x' => 'do.t', 'y' => '123', 'z' => 'bar', '_format' => 'xml']);
-    }
-
-    public function testOptionalVariableWithNoRealSeparator()
-    {
-        $routes = $this->getRoutes('test', new Route('/get{what}', ['what' => 'All']));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/get', $generator->generate('test'));
-        $this->assertSame('/app.php/getSites', $generator->generate('test', ['what' => 'Sites']));
-    }
-
-    public function testRequiredVariableWithNoRealSeparator()
-    {
-        $routes = $this->getRoutes('test', new Route('/get{what}Suffix'));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/getSitesSuffix', $generator->generate('test', ['what' => 'Sites']));
-    }
-
-    public function testDefaultRequirementOfVariable()
-    {
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index', '_format' => 'mobile.html']));
-    }
-
-    public function testImportantVariable()
-    {
-        $routes = $this->getRoutes('test', (new Route('/{page}.{!_format}'))->addDefaults(['_format' => 'mobile.html']));
-        $generator = $this->getGenerator($routes);
-
-        $this->assertSame('/app.php/index.xml', $generator->generate('test', ['page' => 'index', '_format' => 'xml']));
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index', '_format' => 'mobile.html']));
-        $this->assertSame('/app.php/index.mobile.html', $generator->generate('test', ['page' => 'index']));
-    }
-
-    public function testImportantVariableWithNoDefault()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\MissingMandatoryParametersException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{!_format}'));
-        $generator = $this->getGenerator($routes);
-
-        $generator->generate('test', ['page' => 'index']);
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $this->getGenerator($routes)->generate('test', ['page' => 'index', '_format' => 'sl/ash']);
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsNextSeparator()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/{page}.{_format}'));
-        $this->getGenerator($routes)->generate('test', ['page' => 'do.t', '_format' => 'html']);
-    }
-
-    public function testWithHostDifferentFromContext()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('//fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test', ['name' => 'Fabien', 'locale' => 'fr']));
-    }
-
-    public function testWithHostSameAsContext()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('/app.php/Fabien', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test', ['name' => 'Fabien', 'locale' => 'fr']));
-    }
-
-    public function testWithHostSameAsContextAndAbsolute()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com'));
-
-        $this->assertEquals('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test', ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testUrlWithInvalidParameterInHost()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', [], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterInHostWhenParamHasADefaultValue()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', ['foo' => 'bar'], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterEqualsDefaultValueInHost()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\InvalidParameterException');
-        $routes = $this->getRoutes('test', new Route('/', ['foo' => 'baz'], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $this->getGenerator($routes)->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH);
-    }
-
-    public function testUrlWithInvalidParameterInHostInNonStrictMode()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], ['foo' => 'bar'], [], '{foo}.example.com'));
-        $generator = $this->getGenerator($routes);
-        $generator->setStrictRequirements(false);
-        $this->assertSame('', $generator->generate('test', ['foo' => 'baz'], UrlGeneratorInterface::ABSOLUTE_PATH));
-    }
-
-    public function testHostIsCaseInsensitive()
-    {
-        $routes = $this->getRoutes('test', new Route('/', [], ['locale' => 'en|de|fr'], [], '{locale}.FooBar.com'));
-        $generator = $this->getGenerator($routes);
-        $this->assertSame('//EN.FooBar.com/app.php/', $generator->generate('test', ['locale' => 'EN'], UrlGeneratorInterface::NETWORK_PATH));
-    }
-
-    public function testDefaultHostIsUsedWhenContextHostIsEmpty()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', ['domain' => 'my.fallback.host'], ['domain' => '.+'], [], '{domain}'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('http://my.fallback.host/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testDefaultHostIsUsedWhenContextHostIsEmptyAndPathReferenceType()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', ['domain' => 'my.fallback.host'], ['domain' => '.+'], [], '{domain}'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('//my.fallback.host/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH));
-    }
-
-    public function testAbsoluteUrlFallbackToPathIfHostIsEmptyAndSchemeIsHttp()
-    {
-        $routes = $this->getRoutes('test', new Route('/route'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-        $generator->getContext()->setScheme('https');
-
-        $this->assertSame('/app.php/route', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlFallbackToNetworkIfSchemeIsEmptyAndHostIsNot()
-    {
-        $routes = $this->getRoutes('test', new Route('/path'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('example.com');
-        $generator->getContext()->setScheme('');
-
-        $this->assertSame('//example.com/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlFallbackToPathIfSchemeAndHostAreEmpty()
-    {
-        $routes = $this->getRoutes('test', new Route('/path'));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setHost('');
-        $generator->getContext()->setScheme('');
-
-        $this->assertSame('/app.php/path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testAbsoluteUrlWithNonHttpSchemeAndEmptyHost()
-    {
-        $routes = $this->getRoutes('test', new Route('/path', [], [], [], '', ['file']));
-
-        $generator = $this->getGenerator($routes);
-        $generator->getContext()->setBaseUrl('');
-        $generator->getContext()->setHost('');
-
-        $this->assertSame('file:///path', $generator->generate('test', [], UrlGeneratorInterface::ABSOLUTE_URL));
-    }
-
-    public function testGenerateNetworkPath()
-    {
-        $routes = $this->getRoutes('test', new Route('/{name}', [], [], [], '{locale}.example.com', ['http']));
-
-        $this->assertSame('//fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::NETWORK_PATH), 'network path with different host'
-        );
-        $this->assertSame('//fr.example.com/app.php/Fabien?query=string', $this->getGenerator($routes, ['host' => 'fr.example.com'])->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr', 'query' => 'string'], UrlGeneratorInterface::NETWORK_PATH), 'network path although host same as context'
-        );
-        $this->assertSame('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, ['scheme' => 'https'])->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::NETWORK_PATH), 'absolute URL because scheme requirement does not match context'
-        );
-        $this->assertSame('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes)->generate('test',
-            ['name' => 'Fabien', 'locale' => 'fr'], UrlGeneratorInterface::ABSOLUTE_URL), 'absolute URL with same scheme because it is requested'
-        );
-    }
-
-    public function testGenerateRelativePath()
-    {
-        $routes = new RouteCollection();
-        $routes->add('article', new Route('/{author}/{article}/'));
-        $routes->add('comments', new Route('/{author}/{article}/comments'));
-        $routes->add('host', new Route('/{article}', [], [], [], '{author}.example.com'));
-        $routes->add('scheme', new Route('/{author}/blog', [], [], [], '', ['https']));
-        $routes->add('unrelated', new Route('/about'));
-
-        $generator = $this->getGenerator($routes, ['host' => 'example.com', 'pathInfo' => '/fabien/symfony-is-great/']);
-
-        $this->assertSame('comments', $generator->generate('comments',
-            ['author' => 'fabien', 'article' => 'symfony-is-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('comments?page=2', $generator->generate('comments',
-            ['author' => 'fabien', 'article' => 'symfony-is-great', 'page' => 2], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../twig-is-great/', $generator->generate('article',
-            ['author' => 'fabien', 'article' => 'twig-is-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../../bernhard/forms-are-great/', $generator->generate('article',
-            ['author' => 'bernhard', 'article' => 'forms-are-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('//bernhard.example.com/app.php/forms-are-great', $generator->generate('host',
-            ['author' => 'bernhard', 'article' => 'forms-are-great'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('https://example.com/app.php/bernhard/blog', $generator->generate('scheme',
-                ['author' => 'bernhard'], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-        $this->assertSame('../../about', $generator->generate('unrelated',
-            [], UrlGeneratorInterface::RELATIVE_PATH)
-        );
-    }
-
-    /**
-     * @dataProvider provideRelativePaths
-     */
-    public function testGetRelativePath($sourcePath, $targetPath, $expectedPath)
-    {
-        $this->assertSame($expectedPath, UrlGenerator::getRelativePath($sourcePath, $targetPath));
-    }
-
-    public function provideRelativePaths()
-    {
-        return [
-            [
-                '/same/dir/',
-                '/same/dir/',
-                '',
-            ],
-            [
-                '/same/file',
-                '/same/file',
-                '',
-            ],
-            [
-                '/',
-                '/file',
-                'file',
-            ],
-            [
-                '/',
-                '/dir/file',
-                'dir/file',
-            ],
-            [
-                '/dir/file.html',
-                '/dir/different-file.html',
-                'different-file.html',
-            ],
-            [
-                '/same/dir/extra-file',
-                '/same/dir/',
-                './',
-            ],
-            [
-                '/parent/dir/',
-                '/parent/',
-                '../',
-            ],
-            [
-                '/parent/dir/extra-file',
-                '/parent/',
-                '../',
-            ],
-            [
-                '/a/b/',
-                '/x/y/z/',
-                '../../x/y/z/',
-            ],
-            [
-                '/a/b/c/d/e',
-                '/a/c/d',
-                '../../../c/d',
-            ],
-            [
-                '/a/b/c//',
-                '/a/b/c/',
-                '../',
-            ],
-            [
-                '/a/b/c/',
-                '/a/b/c//',
-                './/',
-            ],
-            [
-                '/root/a/b/c/',
-                '/root/x/b/c/',
-                '../../../x/b/c/',
-            ],
-            [
-                '/a/b/c/d/',
-                '/a',
-                '../../../../a',
-            ],
-            [
-                '/special-chars/sp%20ce/1€/mäh/e=mc²',
-                '/special-chars/sp%20ce/1€/<µ>/e=mc²',
-                '../<µ>/e=mc²',
-            ],
-            [
-                'not-rooted',
-                'dir/file',
-                'dir/file',
-            ],
-            [
-                '//dir/',
-                '',
-                '../../',
-            ],
-            [
-                '/dir/',
-                '/dir/file:with-colon',
-                './file:with-colon',
-            ],
-            [
-                '/dir/',
-                '/dir/subdir/file:with-colon',
-                'subdir/file:with-colon',
-            ],
-            [
-                '/dir/',
-                '/dir/:subdir/',
-                './:subdir/',
-            ],
-        ];
-    }
-
-    public function testFragmentsCanBeAppendedToUrls()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => 'frag ment'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $this->assertEquals('/app.php/testing#frag%20ment', $url);
-
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => '0'], UrlGeneratorInterface::ABSOLUTE_PATH);
-        $this->assertEquals('/app.php/testing#0', $url);
-    }
-
-    public function testFragmentsDoNotEscapeValidCharacters()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing'));
-        $url = $this->getGenerator($routes)->generate('test', ['_fragment' => '?/'], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing#?/', $url);
-    }
-
-    public function testFragmentsCanBeDefinedAsDefaults()
-    {
-        $routes = $this->getRoutes('test', new Route('/testing', ['_fragment' => 'fragment']));
-        $url = $this->getGenerator($routes)->generate('test', [], UrlGeneratorInterface::ABSOLUTE_PATH);
-
-        $this->assertEquals('/app.php/testing#fragment', $url);
-    }
-
-    /**
-     * @dataProvider provideLookAroundRequirementsInPath
-     */
-    public function testLookRoundRequirementsInPath($expected, $path, $requirement)
-    {
-        $routes = $this->getRoutes('test', new Route($path, [], ['foo' => $requirement, 'baz' => '.+?']));
-        $this->assertSame($expected, $this->getGenerator($routes)->generate('test', ['foo' => 'a/b', 'baz' => 'c/d/e']));
-    }
-
-    public function provideLookAroundRequirementsInPath()
-    {
-        yield ['/app.php/a/b/b%28ar/c/d/e', '/{foo}/b(ar/{baz}', '.+(?=/b\\(ar/)'];
-        yield ['/app.php/a/b/bar/c/d/e', '/{foo}/bar/{baz}', '.+(?!$)'];
-        yield ['/app.php/bar/a/b/bam/c/d/e', '/bar/{foo}/bam/{baz}', '(?<=/bar/).+'];
-        yield ['/app.php/bar/a/b/bam/c/d/e', '/bar/{foo}/bam/{baz}', '(?<!^).+'];
-    }
-
-    protected function getGenerator(RouteCollection $routes, array $parameters = [], $logger = null, string $defaultLocale = null)
-    {
-        $context = new RequestContext('/app.php');
-        foreach ($parameters as $key => $value) {
-            $method = 'set'.$key;
-            $context->$method($value);
-        }
-
-        return new UrlGenerator($routes, $context, $logger, $defaultLocale);
-    }
-
-    protected function getRoutes($name, Route $route)
-    {
-        $routes = new RouteCollection();
-        $routes->add($name, $route);
-
-        return $routes;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php
deleted file mode 100644
index 0ce4a47e..00000000
--- a/vendor/symfony/routing/Tests/Loader/AbstractAnnotationLoaderTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-
-abstract class AbstractAnnotationLoaderTest extends TestCase
-{
-    public function getReader()
-    {
-        return $this->getMockBuilder('Doctrine\Common\Annotations\Reader')
-            ->disableOriginalConstructor()
-            ->getMock()
-        ;
-    }
-
-    public function getClassLoader($reader)
-    {
-        return $this->getMockBuilder('Symfony\Component\Routing\Loader\AnnotationClassLoader')
-            ->setConstructorArgs([$reader])
-            ->getMockForAbstractClass()
-        ;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php
deleted file mode 100644
index 078e6c71..00000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationClassLoaderTest.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Doctrine\Common\Annotations\AnnotationReader;
-use Doctrine\Common\Annotations\AnnotationRegistry;
-use Symfony\Component\Routing\Annotation\Route as RouteAnnotation;
-use Symfony\Component\Routing\Loader\AnnotationClassLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\AbstractClassController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\ActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\DefaultValueController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\ExplicitLocalizedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\GlobalDefaultsClass;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\InvokableController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\InvokableLocalizedController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedMethodActionControllers;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixLocalizedActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixMissingLocaleActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixMissingRouteLocaleActionController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\LocalizedPrefixWithRouteWithoutLocale;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\MethodActionControllers;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\MissingRouteNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\NothingButNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\PrefixedActionLocalizedRouteController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\PrefixedActionPathController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RouteWithPrefixController;
-use Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\Utf8ActionControllers;
-
-class AnnotationClassLoaderTest extends AbstractAnnotationLoaderTest
-{
-    /**
-     * @var AnnotationClassLoader
-     */
-    private $loader;
-
-    protected function setUp(): void
-    {
-        $reader = new AnnotationReader();
-        $this->loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-        AnnotationRegistry::registerLoader('class_exists');
-    }
-
-    /**
-     * @dataProvider provideTestSupportsChecksResource
-     */
-    public function testSupportsChecksResource($resource, $expectedSupports)
-    {
-        $this->assertSame($expectedSupports, $this->loader->supports($resource), '->supports() returns true if the resource is loadable');
-    }
-
-    public function provideTestSupportsChecksResource()
-    {
-        return [
-            ['class', true],
-            ['\fully\qualified\class\name', true],
-            ['namespaced\class\without\leading\slash', true],
-            ['ÿClassWithLegalSpecialCharacters', true],
-            ['5', false],
-            ['foo.foo', false],
-            [null, false],
-        ];
-    }
-
-    public function testSupportsChecksTypeIfSpecified()
-    {
-        $this->assertTrue($this->loader->supports('class', 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports('class', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testSimplePathRoute()
-    {
-        $routes = $this->loader->load(ActionPathController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/path', $routes->get('action')->getPath());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController"?
-     * @expectedDeprecation A placeholder name must be a string (1 given). Did you forget to specify the placeholder key for the requirement "\d+" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController"?
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "foo" of route "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController::foo()"?
-     * @expectedDeprecation A placeholder name must be a string (1 given). Did you forget to specify the placeholder key for the requirement "\d+" of route "foo" in "Symfony\Component\Routing\Tests\Fixtures\AnnotationFixtures\RequirementsWithoutPlaceholderNameController::foo()"?
-     */
-    public function testRequirementsWithoutPlaceholderName()
-    {
-        $this->loader->load(RequirementsWithoutPlaceholderNameController::class);
-    }
-
-    public function testInvokableControllerLoader()
-    {
-        $routes = $this->loader->load(InvokableController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/here', $routes->get('lol')->getPath());
-        $this->assertEquals(['GET', 'POST'], $routes->get('lol')->getMethods());
-        $this->assertEquals(['https'], $routes->get('lol')->getSchemes());
-    }
-
-    public function testInvokableLocalizedControllerLoading()
-    {
-        $routes = $this->loader->load(InvokableLocalizedController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/here', $routes->get('action.en')->getPath());
-        $this->assertEquals('/hier', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPathRoutes()
-    {
-        $routes = $this->loader->load(LocalizedActionPathController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPathRoutesWithExplicitPathPropety()
-    {
-        $routes = $this->loader->load(ExplicitLocalizedActionPathController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testDefaultValuesForMethods()
-    {
-        $routes = $this->loader->load(DefaultValueController::class);
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/{default}/path', $routes->get('action')->getPath());
-        $this->assertEquals('value', $routes->get('action')->getDefault('default'));
-        $this->assertEquals('Symfony', $routes->get('hello_with_default')->getDefault('name'));
-        $this->assertEquals('World', $routes->get('hello_without_default')->getDefault('name'));
-    }
-
-    public function testMethodActionControllers()
-    {
-        $routes = $this->loader->load(MethodActionControllers::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/the/path', $routes->get('put')->getPath());
-        $this->assertEquals('/the/path', $routes->get('post')->getPath());
-    }
-
-    public function testInvokableClassRouteLoadWithMethodAnnotation()
-    {
-        $routes = $this->loader->load(LocalizedMethodActionControllers::class);
-        $this->assertCount(4, $routes);
-        $this->assertEquals('/the/path', $routes->get('put.en')->getPath());
-        $this->assertEquals('/the/path', $routes->get('post.en')->getPath());
-    }
-
-    public function testGlobalDefaultsRoutesLoadWithAnnotation()
-    {
-        $routes = $this->loader->load(GlobalDefaultsClass::class);
-        $this->assertCount(2, $routes);
-
-        $specificLocaleRoute = $routes->get('specific_locale');
-
-        $this->assertSame('/defaults/specific-locale', $specificLocaleRoute->getPath());
-        $this->assertSame('s_locale', $specificLocaleRoute->getDefault('_locale'));
-        $this->assertSame('g_format', $specificLocaleRoute->getDefault('_format'));
-
-        $specificFormatRoute = $routes->get('specific_format');
-
-        $this->assertSame('/defaults/specific-format', $specificFormatRoute->getPath());
-        $this->assertSame('g_locale', $specificFormatRoute->getDefault('_locale'));
-        $this->assertSame('s_format', $specificFormatRoute->getDefault('_format'));
-    }
-
-    public function testUtf8RoutesLoadWithAnnotation()
-    {
-        $routes = $this->loader->load(Utf8ActionControllers::class);
-        $this->assertCount(2, $routes);
-        $this->assertTrue($routes->get('one')->getOption('utf8'), 'The route must accept utf8');
-        $this->assertFalse($routes->get('two')->getOption('utf8'), 'The route must not accept utf8');
-    }
-
-    public function testRouteWithPathWithPrefix()
-    {
-        $routes = $this->loader->load(PrefixedActionPathController::class);
-        $this->assertCount(1, $routes);
-        $route = $routes->get('action');
-        $this->assertEquals('/prefix/path', $route->getPath());
-        $this->assertEquals('lol=fun', $route->getCondition());
-        $this->assertEquals('frankdejonge.nl', $route->getHost());
-    }
-
-    public function testLocalizedRouteWithPathWithPrefix()
-    {
-        $routes = $this->loader->load(PrefixedActionLocalizedRouteController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/prefix/path', $routes->get('action.en')->getPath());
-        $this->assertEquals('/prefix/pad', $routes->get('action.nl')->getPath());
-    }
-
-    public function testLocalizedPrefixLocalizedRoute()
-    {
-        $routes = $this->loader->load(LocalizedPrefixLocalizedActionController::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/actie', $routes->get('action.nl')->getPath());
-        $this->assertEquals('/en/action', $routes->get('action.en')->getPath());
-    }
-
-    public function testInvokableClassMultipleRouteLoad()
-    {
-        $classRouteData1 = [
-            'name' => 'route1',
-            'path' => '/1',
-            'schemes' => ['https'],
-            'methods' => ['GET'],
-        ];
-
-        $classRouteData2 = [
-            'name' => 'route2',
-            'path' => '/2',
-            'schemes' => ['https'],
-            'methods' => ['GET'],
-        ];
-
-        $reader = $this->getReader();
-        $reader
-            ->expects($this->exactly(1))
-            ->method('getClassAnnotations')
-            ->willReturn([new RouteAnnotation($classRouteData1), new RouteAnnotation($classRouteData2)])
-        ;
-        $reader
-            ->expects($this->once())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-        $loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-
-        $routeCollection = $loader->load('Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BazClass');
-        $route = $routeCollection->get($classRouteData1['name']);
-
-        $this->assertSame($classRouteData1['path'], $route->getPath(), '->load preserves class route path');
-        $this->assertEquals($classRouteData1['schemes'], $route->getSchemes(), '->load preserves class route schemes');
-        $this->assertEquals($classRouteData1['methods'], $route->getMethods(), '->load preserves class route methods');
-
-        $route = $routeCollection->get($classRouteData2['name']);
-
-        $this->assertSame($classRouteData2['path'], $route->getPath(), '->load preserves class route path');
-        $this->assertEquals($classRouteData2['schemes'], $route->getSchemes(), '->load preserves class route schemes');
-        $this->assertEquals($classRouteData2['methods'], $route->getMethods(), '->load preserves class route methods');
-    }
-
-    public function testMissingPrefixLocale()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(LocalizedPrefixMissingLocaleActionController::class);
-    }
-
-    public function testMissingRouteLocale()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(LocalizedPrefixMissingRouteLocaleActionController::class);
-    }
-
-    public function testRouteWithoutName()
-    {
-        $routes = $this->loader->load(MissingRouteNameController::class)->all();
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/path', reset($routes)->getPath());
-    }
-
-    public function testNothingButName()
-    {
-        $routes = $this->loader->load(NothingButNameController::class)->all();
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/', reset($routes)->getPath());
-    }
-
-    public function testNonExistingClass()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load('ClassThatDoesNotExist');
-    }
-
-    public function testLoadingAbstractClass()
-    {
-        $this->expectException(\LogicException::class);
-        $this->loader->load(AbstractClassController::class);
-    }
-
-    public function testLocalizedPrefixWithoutRouteLocale()
-    {
-        $routes = $this->loader->load(LocalizedPrefixWithRouteWithoutLocale::class);
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/en/suffix', $routes->get('action.en')->getPath());
-        $this->assertEquals('/nl/suffix', $routes->get('action.nl')->getPath());
-    }
-
-    /**
-     * @requires function mb_strtolower
-     */
-    public function testDefaultRouteName()
-    {
-        $methodRouteData = [
-            'name' => null,
-        ];
-
-        $reader = $this->getReader();
-        $reader
-            ->expects($this->once())
-            ->method('getMethodAnnotations')
-            ->willReturn([new RouteAnnotation($methodRouteData)])
-        ;
-
-        $loader = new class($reader) extends AnnotationClassLoader {
-            protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, $annot)
-            {
-            }
-        };
-        $routeCollection = $loader->load('Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\EncodingClass');
-
-        $defaultName = array_keys($routeCollection->all())[0];
-
-        $this->assertSame($defaultName, 'symfony_component_routing_tests_fixtures_annotatedclasses_encodingclass_routeàction');
-    }
-
-    public function testLoadingRouteWithPrefix()
-    {
-        $routes = $this->loader->load(RouteWithPrefixController::class);
-        $this->assertCount(1, $routes);
-        $this->assertEquals('/prefix/path', $routes->get('action')->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php
deleted file mode 100644
index 858044d4..00000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationDirectoryLoaderTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Routing\Loader\AnnotationDirectoryLoader;
-
-class AnnotationDirectoryLoaderTest extends AbstractAnnotationLoaderTest
-{
-    protected $loader;
-    protected $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->reader = $this->getReader();
-        $this->loader = new AnnotationDirectoryLoader(new FileLocator(), $this->getClassLoader($this->reader));
-    }
-
-    public function testLoad()
-    {
-        $this->reader->expects($this->exactly(4))->method('getClassAnnotation');
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getClassAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses');
-    }
-
-    public function testLoadIgnoresHiddenDirectories()
-    {
-        $this->expectAnnotationsToBeReadFrom([
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BarClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BazClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\FooClass',
-            'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\EncodingClass',
-        ]);
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getClassAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses');
-    }
-
-    public function testSupports()
-    {
-        $fixturesDir = __DIR__.'/../Fixtures';
-
-        $this->assertTrue($this->loader->supports($fixturesDir), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($this->loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($this->loader->supports($fixturesDir, 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports($fixturesDir, 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testItSupportsAnyAnnotation()
-    {
-        $this->assertTrue($this->loader->supports(__DIR__.'/../Fixtures/even-with-not-existing-folder', 'annotation'));
-    }
-
-    public function testLoadFileIfLocatedResourceIsFile()
-    {
-        $this->reader->expects($this->exactly(1))->method('getClassAnnotation');
-
-        $this->reader
-            ->expects($this->any())
-            ->method('getMethodAnnotations')
-            ->willReturn([])
-        ;
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooClass.php');
-    }
-
-    private function expectAnnotationsToBeReadFrom(array $classes)
-    {
-        $this->reader->expects($this->exactly(\count($classes)))
-            ->method('getClassAnnotation')
-            ->with($this->callback(function (\ReflectionClass $class) use ($classes) {
-                return \in_array($class->getName(), $classes);
-            }));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php
deleted file mode 100644
index d0b670c3..00000000
--- a/vendor/symfony/routing/Tests/Loader/AnnotationFileLoaderTest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Routing\Annotation\Route;
-use Symfony\Component\Routing\Loader\AnnotationFileLoader;
-
-class AnnotationFileLoaderTest extends AbstractAnnotationLoaderTest
-{
-    protected $loader;
-    protected $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->reader = $this->getReader();
-        $this->loader = new AnnotationFileLoader(new FileLocator(), $this->getClassLoader($this->reader));
-    }
-
-    public function testLoad()
-    {
-        $this->reader->expects($this->once())->method('getClassAnnotation');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooClass.php');
-    }
-
-    public function testLoadTraitWithClassConstant()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/FooTrait.php');
-    }
-
-    public function testLoadFileWithoutStartTag()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Did you forgot to add the "<?php" start tag at the beginning of the file?');
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/NoStartTagClass.php');
-    }
-
-    public function testLoadVariadic()
-    {
-        $route = new Route(['path' => '/path/to/{id}']);
-        $this->reader->expects($this->once())->method('getClassAnnotation');
-        $this->reader->expects($this->once())->method('getMethodAnnotations')
-            ->willReturn([$route]);
-
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/VariadicClass.php');
-    }
-
-    /**
-     * @requires PHP 7.0
-     */
-    public function testLoadAnonymousClass()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-        $this->reader->expects($this->never())->method('getMethodAnnotations');
-
-        $this->loader->load(__DIR__.'/../Fixtures/OtherAnnotatedClasses/AnonymousClassInTrait.php');
-    }
-
-    public function testLoadAbstractClass()
-    {
-        $this->reader->expects($this->never())->method('getClassAnnotation');
-        $this->reader->expects($this->never())->method('getMethodAnnotations');
-
-        $this->loader->load(__DIR__.'/../Fixtures/AnnotatedClasses/AbstractClass.php');
-    }
-
-    public function testSupports()
-    {
-        $fixture = __DIR__.'/../Fixtures/annotated.php';
-
-        $this->assertTrue($this->loader->supports($fixture), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($this->loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($this->loader->supports($fixture, 'annotation'), '->supports() checks the resource type if specified');
-        $this->assertFalse($this->loader->supports($fixture, 'foo'), '->supports() checks the resource type if specified');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php b/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php
deleted file mode 100644
index 5d963f86..00000000
--- a/vendor/symfony/routing/Tests/Loader/ClosureLoaderTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Loader\ClosureLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class ClosureLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new ClosureLoader();
-
-        $closure = function () {};
-
-        $this->assertTrue($loader->supports($closure), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports($closure, 'closure'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports($closure, 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoad()
-    {
-        $loader = new ClosureLoader();
-
-        $route = new Route('/');
-        $routes = $loader->load(function () use ($route) {
-            $routes = new RouteCollection();
-
-            $routes->add('foo', $route);
-
-            return $routes;
-        });
-
-        $this->assertEquals($route, $routes->get('foo'), '->load() loads a \Closure resource');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php b/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php
deleted file mode 100644
index 184d5089..00000000
--- a/vendor/symfony/routing/Tests/Loader/DirectoryLoaderTest.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Loader\LoaderResolver;
-use Symfony\Component\Routing\Loader\AnnotationFileLoader;
-use Symfony\Component\Routing\Loader\DirectoryLoader;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-class DirectoryLoaderTest extends AbstractAnnotationLoaderTest
-{
-    private $loader;
-    private $reader;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $locator = new FileLocator();
-        $this->reader = $this->getReader();
-        $this->loader = new DirectoryLoader($locator);
-        $resolver = new LoaderResolver([
-            new YamlFileLoader($locator),
-            new AnnotationFileLoader($locator, $this->getClassLoader($this->reader)),
-            $this->loader,
-        ]);
-        $this->loader->setResolver($resolver);
-    }
-
-    public function testLoadDirectory()
-    {
-        $collection = $this->loader->load(__DIR__.'/../Fixtures/directory', 'directory');
-        $this->verifyCollection($collection);
-    }
-
-    public function testImportDirectory()
-    {
-        $collection = $this->loader->load(__DIR__.'/../Fixtures/directory_import', 'directory');
-        $this->verifyCollection($collection);
-    }
-
-    private function verifyCollection(RouteCollection $collection)
-    {
-        $routes = $collection->all();
-
-        $this->assertCount(3, $routes, 'Three routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        for ($i = 1; $i <= 3; ++$i) {
-            $this->assertSame('/route/'.$i, $routes['route'.$i]->getPath());
-        }
-    }
-
-    public function testSupports()
-    {
-        $fixturesDir = __DIR__.'/../Fixtures';
-
-        $this->assertFalse($this->loader->supports($fixturesDir), '->supports(*) returns false');
-
-        $this->assertTrue($this->loader->supports($fixturesDir, 'directory'), '->supports(*, "directory") returns true');
-        $this->assertFalse($this->loader->supports($fixturesDir, 'foo'), '->supports(*, "foo") returns false');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php b/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php
deleted file mode 100644
index 870c3cf4..00000000
--- a/vendor/symfony/routing/Tests/Loader/FileLocatorStub.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use Symfony\Component\Config\FileLocatorInterface;
-
-class FileLocatorStub implements FileLocatorInterface
-{
-    public function locate($name, $currentPath = null, $first = true)
-    {
-        if (0 === strpos($name, 'http')) {
-            return $name;
-        }
-
-        return rtrim($currentPath, '/').'/'.$name;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php
deleted file mode 100644
index e4e12b88..00000000
--- a/vendor/symfony/routing/Tests/Loader/GlobFileLoaderTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\GlobResource;
-use Symfony\Component\Routing\Loader\GlobFileLoader;
-use Symfony\Component\Routing\RouteCollection;
-
-class GlobFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new GlobFileLoader(new FileLocator());
-
-        $this->assertTrue($loader->supports('any-path', 'glob'), '->supports() returns true if the resource has the glob type');
-        $this->assertFalse($loader->supports('any-path'), '->supports() returns false if the resource is not of glob type');
-    }
-
-    public function testLoadAddsTheGlobResourceToTheContainer()
-    {
-        $loader = new GlobFileLoaderWithoutImport(new FileLocator());
-        $collection = $loader->load(__DIR__.'/../Fixtures/directory/*.yml');
-
-        $this->assertEquals(new GlobResource(__DIR__.'/../Fixtures/directory', '/*.yml', false), $collection->getResources()[0]);
-    }
-}
-
-class GlobFileLoaderWithoutImport extends GlobFileLoader
-{
-    public function import($resource, $type = null, $ignoreErrors = false, $sourceResource = null)
-    {
-        return new RouteCollection();
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php b/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
deleted file mode 100644
index a00bc136..00000000
--- a/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Loader\ObjectRouteLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class ObjectRouteLoaderTest extends TestCase
-{
-    /**
-     * @group legacy
-     * @expectedDeprecation Referencing service route loaders with a single colon is deprecated since Symfony 4.1. Use my_route_provider_service::loadRoutes instead.
-     */
-    public function testLoadCallsServiceAndReturnsCollectionWithLegacyNotation()
-    {
-        $loader = new ObjectRouteLoaderForTest();
-
-        // create a basic collection that will be returned
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $loader->loaderMap = [
-            'my_route_provider_service' => new RouteService($collection),
-        ];
-
-        $actualRoutes = $loader->load(
-            'my_route_provider_service:loadRoutes',
-            'service'
-        );
-
-        $this->assertSame($collection, $actualRoutes);
-        // the service file should be listed as a resource
-        $this->assertNotEmpty($actualRoutes->getResources());
-    }
-
-    public function testLoadCallsServiceAndReturnsCollection()
-    {
-        $loader = new ObjectRouteLoaderForTest();
-
-        // create a basic collection that will be returned
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $loader->loaderMap = [
-            'my_route_provider_service' => new RouteService($collection),
-        ];
-
-        $actualRoutes = $loader->load(
-            'my_route_provider_service::loadRoutes',
-            'service'
-        );
-
-        $this->assertSame($collection, $actualRoutes);
-        // the service file should be listed as a resource
-        $this->assertNotEmpty($actualRoutes->getResources());
-    }
-
-    /**
-     * @dataProvider getBadResourceStrings
-     */
-    public function testExceptionWithoutSyntax(string $resourceString): void
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->load($resourceString);
-    }
-
-    public function getBadResourceStrings()
-    {
-        return [
-            ['Foo:Bar:baz'],
-            ['Foo::Bar::baz'],
-            ['Foo:'],
-            ['Foo::'],
-            [':Foo'],
-            ['::Foo'],
-        ];
-    }
-
-    public function testExceptionOnNoObjectReturned()
-    {
-        $this->expectException('LogicException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => 'NOT_AN_OBJECT'];
-        $loader->load('my_service::method');
-    }
-
-    public function testExceptionOnBadMethod()
-    {
-        $this->expectException('BadMethodCallException');
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => new \stdClass()];
-        $loader->load('my_service::method');
-    }
-
-    public function testExceptionOnMethodNotReturningCollection()
-    {
-        $this->expectException('LogicException');
-        $service = $this->getMockBuilder('stdClass')
-            ->setMethods(['loadRoutes'])
-            ->getMock();
-        $service->expects($this->once())
-            ->method('loadRoutes')
-            ->willReturn('NOT_A_COLLECTION');
-
-        $loader = new ObjectRouteLoaderForTest();
-        $loader->loaderMap = ['my_service' => $service];
-        $loader->load('my_service::loadRoutes');
-    }
-}
-
-class ObjectRouteLoaderForTest extends ObjectRouteLoader
-{
-    public $loaderMap = [];
-
-    protected function getServiceObject($id)
-    {
-        return isset($this->loaderMap[$id]) ? $this->loaderMap[$id] : null;
-    }
-}
-
-class RouteService
-{
-    private $collection;
-
-    public function __construct($collection)
-    {
-        $this->collection = $collection;
-    }
-
-    public function loadRoutes()
-    {
-        return $this->collection;
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php
deleted file mode 100644
index 71f9df15..00000000
--- a/vendor/symfony/routing/Tests/Loader/PhpFileLoaderTest.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\PhpFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class PhpFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new PhpFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.php'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.php', 'php'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.php', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.php');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(1, $routes, 'One route is loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/blog/{slug}', $route->getPath());
-            $this->assertSame('MyBlogBundle:Blog:show', $route->getDefault('_controller'));
-            $this->assertSame('{locale}.example.com', $route->getHost());
-            $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-            $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-            $this->assertEquals(['https'], $route->getSchemes());
-        }
-    }
-
-    public function testLoadWithImport()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.php');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(1, $routes, 'One route is loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/prefix/blog/{slug}', $route->getPath());
-            $this->assertSame('MyBlogBundle:Blog:show', $route->getDefault('_controller'));
-            $this->assertSame('{locale}.example.com', $route->getHost());
-            $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-            $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-            $this->assertEquals(['https'], $route->getSchemes());
-        }
-    }
-
-    public function testThatDefiningVariableInConfigFileHasNoSideEffects()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('with_define_path_variable.php');
-        $resources = $routeCollection->getResources();
-        $this->assertCount(1, $resources);
-        $this->assertContainsOnly('Symfony\Component\Config\Resource\ResourceInterface', $resources);
-        $fileResource = reset($resources);
-        $this->assertSame(
-            realpath($locator->locate('with_define_path_variable.php')),
-            (string) $fileResource
-        );
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.php');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.php'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('some_route', new Route('/'));
-
-        $expectedRoutes->add('some_utf8_route', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new PhpFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.php');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.php'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.php'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testRoutingConfigurator()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollectionClosure = $loader->load('php_dsl.php');
-        $routeCollectionObject = $loader->load('php_object_dsl.php');
-
-        $expectedCollection = new RouteCollection();
-
-        $expectedCollection->add('foo', (new Route('/foo'))
-            ->setOptions(['utf8' => true])
-            ->setCondition('abc')
-        );
-        $expectedCollection->add('buz', (new Route('/zub'))
-            ->setDefaults(['_controller' => 'foo:act'])
-        );
-        $expectedCollection->add('c_root', (new Route('/sub/pub/'))
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('c_bar', (new Route('/sub/pub/bar'))
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('c_pub_buz', (new Route('/sub/pub/buz'))
-            ->setHost('host')
-            ->setRequirements(['id' => '\d+'])
-        );
-        $expectedCollection->add('z_c_root', new Route('/zub/pub/'));
-        $expectedCollection->add('z_c_bar', new Route('/zub/pub/bar'));
-        $expectedCollection->add('z_c_pub_buz', (new Route('/zub/pub/buz'))->setHost('host'));
-        $expectedCollection->add('r_root', new Route('/bus'));
-        $expectedCollection->add('r_bar', new Route('/bus/bar/'));
-        $expectedCollection->add('ouf', (new Route('/ouf'))
-            ->setSchemes(['https'])
-            ->setMethods(['GET'])
-            ->setDefaults(['id' => 0])
-        );
-
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub.php')));
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub_root.php')));
-
-        $expectedCollectionClosure = $expectedCollection;
-        $expectedCollectionObject = clone $expectedCollection;
-
-        $expectedCollectionClosure->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl.php')));
-        $expectedCollectionObject->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_object_dsl.php')));
-
-        $this->assertEquals($expectedCollectionClosure, $routeCollectionClosure);
-        $this->assertEquals($expectedCollectionObject, $routeCollectionObject);
-    }
-
-    public function testRoutingConfiguratorCanImportGlobPatterns()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures/glob']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('php_dsl.php');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testRoutingI18nConfigurator()
-    {
-        $locator = new FileLocator([__DIR__.'/../Fixtures']);
-        $loader = new PhpFileLoader($locator);
-        $routeCollection = $loader->load('php_dsl_i18n.php');
-
-        $expectedCollection = new RouteCollection();
-
-        $expectedCollection->add('foo.en', (new Route('/glish/foo'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'foo']));
-        $expectedCollection->add('bar.en', (new Route('/glish/bar'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'bar']));
-        $expectedCollection->add('baz.en', (new Route('/baz'))->setDefaults(['_locale' => 'en', '_canonical_route' => 'baz']));
-        $expectedCollection->add('c_foo.fr', (new Route('/ench/pub/foo'))->setDefaults(['_locale' => 'fr', '_canonical_route' => 'c_foo']));
-        $expectedCollection->add('c_bar.fr', (new Route('/ench/pub/bar'))->setDefaults(['_locale' => 'fr', '_canonical_route' => 'c_bar']));
-
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_sub_i18n.php')));
-        $expectedCollection->addResource(new FileResource(realpath(__DIR__.'/../Fixtures/php_dsl_i18n.php')));
-
-        $this->assertEquals($expectedCollection, $routeCollection);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php
deleted file mode 100644
index e27149f9..00000000
--- a/vendor/symfony/routing/Tests/Loader/XmlFileLoaderTest.php
+++ /dev/null
@@ -1,516 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\XmlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Tests\Fixtures\CustomXmlFileLoader;
-
-class XmlFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new XmlFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.xml'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.xml', 'xml'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.xml', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.xml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('locale'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-        $this->assertEquals(['https'], $route->getSchemes());
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testLoadWithNamespacePrefix()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('namespaceprefix.xml');
-
-        $this->assertCount(1, $routeCollection->all(), 'One route is loaded');
-
-        $route = $routeCollection->get('blog_show');
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{_locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('slug'));
-        $this->assertSame('en|fr|de', $route->getRequirement('_locale'));
-        $this->assertNull($route->getDefault('slug'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertSame(1, $route->getDefault('page'));
-    }
-
-    public function testLoadWithImport()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/{foo}/blog/{slug}', $route->getPath());
-            $this->assertSame('123', $route->getDefault('foo'));
-            $this->assertSame('\d+', $route->getRequirement('foo'));
-            $this->assertSame('bar', $route->getOption('foo'));
-            $this->assertSame('', $route->getHost());
-            $this->assertSame('context.getMethod() == "POST"', $route->getCondition());
-        }
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.xml');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.xml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('app_utf8', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->add('app_no_utf8', $route = new Route('/no-utf8'));
-        $route->setOption('utf8', false);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.xml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.xml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.xml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadLocalized()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('localized.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/route', $routeCollection->get('localized.fr')->getPath());
-        $this->assertEquals('/path', $routeCollection->get('localized.en')->getPath());
-    }
-
-    public function testLocalizedImports()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routeCollection = $loader->load('importer-with-locale.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/le-prefix/le-suffix', $routeCollection->get('imported.fr')->getPath());
-        $this->assertEquals('/the-prefix/suffix', $routeCollection->get('imported.en')->getPath());
-    }
-
-    public function testLocalizedImportsOfNotLocalizedRoutes()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routeCollection = $loader->load('importer-with-locale-imports-non-localized-route.xml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        $this->assertEquals('/le-prefix/suffix', $routeCollection->get('imported.fr')->getPath());
-        $this->assertEquals('/the-prefix/suffix', $routeCollection->get('imported.en')->getPath());
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFile($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFileEvenWithoutSchemaValidation($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new CustomXmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    public function getPathsToInvalidFiles()
-    {
-        return [['nonvalidnode.xml'], ['nonvalidroute.xml'], ['nonvalid.xml'], ['missing_id.xml'], ['missing_path.xml']];
-    }
-
-    public function testDocTypeIsNotAllowed()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Document types are not allowed.');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load('withdoctype.xml');
-    }
-
-    public function testNullValues()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('null_values.xml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertTrue($route->hasDefault('foo'));
-        $this->assertNull($route->getDefault('foo'));
-        $this->assertTrue($route->hasDefault('bar'));
-        $this->assertNull($route->getDefault('bar'));
-        $this->assertEquals('foo', $route->getDefault('foobar'));
-        $this->assertEquals('bar', $route->getDefault('baz'));
-    }
-
-    public function testScalarDataTypeDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('scalar_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'slug' => null,
-                'published' => true,
-                'page' => 1,
-                'price' => 3.5,
-                'archived' => false,
-                'free' => true,
-                'locked' => false,
-                'foo' => null,
-                'bar' => null,
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [true, 1, 3.5, 'foo'],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListInListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_in_list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [[true, 1, 3.5, 'foo']],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testListInMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_in_map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => ['list' => [true, 1, 3.5, 'foo']],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapInListDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_in_list_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => [[
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ]],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testMapInMapDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_in_map_defaults.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                '_controller' => 'AcmeBlogBundle:Blog:index',
-                'values' => ['map' => [
-                    'public' => true,
-                    'page' => 1,
-                    'price' => 3.5,
-                    'title' => 'foo',
-                ]],
-            ],
-            $route->getDefaults()
-        );
-    }
-
-    public function testNullValuesInList()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('list_null_values.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame([null, null, null, null, null, null], $route->getDefault('list'));
-    }
-
-    public function testNullValuesInMap()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('map_null_values.xml');
-        $route = $routeCollection->get('blog');
-
-        $this->assertSame(
-            [
-                'boolean' => null,
-                'integer' => null,
-                'float' => null,
-                'string' => null,
-                'list' => null,
-                'map' => null,
-            ],
-            $route->getDefault('map')
-        );
-    }
-
-    public function testLoadRouteWithControllerAttribute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_homepage');
-
-        $this->assertSame('AppBundle:Homepage:show', $route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithoutControllerAttribute()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_logout');
-
-        $this->assertNull($route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithControllerSetInDefaults()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $route = $routeCollection->get('app_blog');
-
-        $this->assertSame('AppBundle:Blog:list', $route->getDefault('_controller'));
-    }
-
-    public function testOverrideControllerInDefaults()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" attribute and the defaults key "_controller" for "app_blog"/');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('override_defaults.xml');
-    }
-
-    /**
-     * @dataProvider provideFilesImportingRoutesWithControllers
-     */
-    public function testImportRouteWithController($file)
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load($file);
-
-        $route = $routeCollection->get('app_homepage');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_blog');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_logout');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-    }
-
-    public function provideFilesImportingRoutesWithControllers()
-    {
-        yield ['import_controller.xml'];
-        yield ['import__controller.xml'];
-    }
-
-    public function testImportWithOverriddenController()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" attribute and the defaults key "_controller" for the "import" tag/');
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('import_override_defaults.xml');
-    }
-
-    public function testImportRouteWithGlobMatchingSingleFile()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_single.xml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithGlobMatchingMultipleFiles()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_multiple.xml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNamePrefix()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_name_prefix']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $this->assertNotNull($routeCollection->get('app_blog'));
-        $this->assertEquals('/blog', $routeCollection->get('app_blog')->getPath());
-        $this->assertNotNull($routeCollection->get('api_app_blog'));
-        $this->assertEquals('/api/blog', $routeCollection->get('api_app_blog')->getPath());
-    }
-
-    public function testImportRouteWithNoTrailingSlash()
-    {
-        $loader = new XmlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_no_trailing_slash']));
-        $routeCollection = $loader->load('routing.xml');
-
-        $this->assertEquals('/slash/', $routeCollection->get('a_app_homepage')->getPath());
-        $this->assertEquals('/no-slash', $routeCollection->get('b_app_homepage')->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php b/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php
deleted file mode 100644
index caad0aa9..00000000
--- a/vendor/symfony/routing/Tests/Loader/YamlFileLoaderTest.php
+++ /dev/null
@@ -1,389 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Loader;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class YamlFileLoaderTest extends TestCase
-{
-    public function testSupports()
-    {
-        $loader = new YamlFileLoader($this->getMockBuilder('Symfony\Component\Config\FileLocator')->getMock());
-
-        $this->assertTrue($loader->supports('foo.yml'), '->supports() returns true if the resource is loadable');
-        $this->assertTrue($loader->supports('foo.yaml'), '->supports() returns true if the resource is loadable');
-        $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable');
-
-        $this->assertTrue($loader->supports('foo.yml', 'yaml'), '->supports() checks the resource type if specified');
-        $this->assertTrue($loader->supports('foo.yaml', 'yaml'), '->supports() checks the resource type if specified');
-        $this->assertFalse($loader->supports('foo.yml', 'foo'), '->supports() checks the resource type if specified');
-    }
-
-    public function testLoadDoesNothingIfEmpty()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $collection = $loader->load('empty.yml');
-
-        $this->assertEquals([], $collection->all());
-        $this->assertEquals([new FileResource(realpath(__DIR__.'/../Fixtures/empty.yml'))], $collection->getResources());
-    }
-
-    /**
-     * @dataProvider getPathsToInvalidFiles
-     */
-    public function testLoadThrowsExceptionWithInvalidFile($filePath)
-    {
-        $this->expectException('InvalidArgumentException');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load($filePath);
-    }
-
-    public function getPathsToInvalidFiles()
-    {
-        return [
-            ['nonvalid.yml'],
-            ['nonvalid2.yml'],
-            ['incomplete.yml'],
-            ['nonvalidkeys.yml'],
-            ['nonesense_resource_plus_path.yml'],
-            ['nonesense_type_without_resource.yml'],
-            ['bad_format.yml'],
-        ];
-    }
-
-    public function testLoadSpecialRouteName()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('special_route_name.yml');
-        $route = $routeCollection->get('#$péß^a|');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/true', $route->getPath());
-    }
-
-    public function testLoadWithRoute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validpattern.yml');
-        $route = $routeCollection->get('blog_show');
-
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $route);
-        $this->assertSame('/blog/{slug}', $route->getPath());
-        $this->assertSame('{locale}.example.com', $route->getHost());
-        $this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
-        $this->assertSame('\w+', $route->getRequirement('locale'));
-        $this->assertSame('RouteCompiler', $route->getOption('compiler_class'));
-        $this->assertEquals(['GET', 'POST', 'PUT', 'OPTIONS'], $route->getMethods());
-        $this->assertEquals(['https'], $route->getSchemes());
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testLoadWithResource()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routeCollection = $loader->load('validresource.yml');
-        $routes = $routeCollection->all();
-
-        $this->assertCount(2, $routes, 'Two routes are loaded');
-        $this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
-
-        foreach ($routes as $route) {
-            $this->assertSame('/{foo}/blog/{slug}', $route->getPath());
-            $this->assertSame('123', $route->getDefault('foo'));
-            $this->assertSame('\d+', $route->getRequirement('foo'));
-            $this->assertSame('bar', $route->getOption('foo'));
-            $this->assertSame('', $route->getHost());
-            $this->assertSame('context.getMethod() == "POST"', $route->getCondition());
-        }
-    }
-
-    public function testLoadRouteWithControllerAttribute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_homepage');
-
-        $this->assertSame('AppBundle:Homepage:show', $route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithoutControllerAttribute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_logout');
-
-        $this->assertNull($route->getDefault('_controller'));
-    }
-
-    public function testLoadRouteWithControllerSetInDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $route = $routeCollection->get('app_blog');
-
-        $this->assertSame('AppBundle:Blog:list', $route->getDefault('_controller'));
-    }
-
-    public function testOverrideControllerInDefaults()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" key and the defaults key "_controller" for "app_blog"/');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('override_defaults.yml');
-    }
-
-    /**
-     * @dataProvider provideFilesImportingRoutesWithControllers
-     */
-    public function testImportRouteWithController($file)
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $routeCollection = $loader->load($file);
-
-        $route = $routeCollection->get('app_homepage');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_blog');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('app_logout');
-        $this->assertSame('FrameworkBundle:Template:template', $route->getDefault('_controller'));
-    }
-
-    public function provideFilesImportingRoutesWithControllers()
-    {
-        yield ['import_controller.yml'];
-        yield ['import__controller.yml'];
-    }
-
-    public function testImportWithOverriddenController()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessageRegExp('/The routing file "[^"]*" must not specify both the "controller" key and the defaults key "_controller" for "_static"/');
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/controller']));
-        $loader->load('import_override_defaults.yml');
-    }
-
-    public function testImportRouteWithGlobMatchingSingleFile()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_single.yml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithGlobMatchingMultipleFiles()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/glob']));
-        $routeCollection = $loader->load('import_multiple.yml');
-
-        $route = $routeCollection->get('bar_route');
-        $this->assertSame('AppBundle:Bar:view', $route->getDefault('_controller'));
-
-        $route = $routeCollection->get('baz_route');
-        $this->assertSame('AppBundle:Baz:view', $route->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNamePrefix()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_name_prefix']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $this->assertNotNull($routeCollection->get('app_blog'));
-        $this->assertEquals('/blog', $routeCollection->get('app_blog')->getPath());
-        $this->assertNotNull($routeCollection->get('api_app_blog'));
-        $this->assertEquals('/api/blog', $routeCollection->get('api_app_blog')->getPath());
-    }
-
-    public function testRemoteSourcesAreNotAccepted()
-    {
-        $loader = new YamlFileLoader(new FileLocatorStub());
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('http://remote.com/here.yml');
-    }
-
-    public function testLoadingRouteWithDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('defaults.yml');
-
-        $this->assertCount(1, $routes);
-
-        $defaultsRoute = $routes->get('defaults');
-
-        $this->assertSame('/defaults', $defaultsRoute->getPath());
-        $this->assertSame('en', $defaultsRoute->getDefault('_locale'));
-        $this->assertSame('html', $defaultsRoute->getDefault('_format'));
-    }
-
-    public function testLoadingImportedRoutesWithDefaults()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $routes = $loader->load('importer-with-defaults.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('one', $localeRoute = new Route('/defaults/one'));
-        $localeRoute->setDefault('_locale', 'g_locale');
-        $localeRoute->setDefault('_format', 'g_format');
-        $expectedRoutes->add('two', $formatRoute = new Route('/defaults/two'));
-        $formatRoute->setDefault('_locale', 'g_locale');
-        $formatRoute->setDefault('_format', 'g_format');
-        $formatRoute->setDefault('specific', 'imported');
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/imported-with-defaults.yml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/importer-with-defaults.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8Route()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('utf8.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('some_route', new Route('/'));
-
-        $expectedRoutes->add('some_utf8_route', $route = new Route('/utf8'));
-        $route->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/utf8.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingUtf8ImportedRoutes()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-utf8.yml');
-
-        $this->assertCount(2, $routes);
-
-        $expectedRoutes = new RouteCollection();
-        $expectedRoutes->add('utf8_one', $one = new Route('/one'));
-        $one->setOption('utf8', true);
-
-        $expectedRoutes->add('utf8_two', $two = new Route('/two'));
-        $two->setOption('utf8', true);
-
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/imported-with-utf8.yml'));
-        $expectedRoutes->addResource(new FileResource(__DIR__.'/../Fixtures/localized/importer-with-utf8.yml'));
-
-        $this->assertEquals($expectedRoutes, $routes);
-    }
-
-    public function testLoadingLocalizedRoute()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('localized-route.yml');
-
-        $this->assertCount(3, $routes);
-    }
-
-    public function testImportingRoutesFromDefinition()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importing-localized-route.yml');
-
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/nl', $routes->get('home.nl')->getPath());
-        $this->assertEquals('/en', $routes->get('home.en')->getPath());
-        $this->assertEquals('/here', $routes->get('not_localized')->getPath());
-    }
-
-    public function testImportingRoutesWithLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-locale.yml');
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/voorbeeld', $routes->get('imported.nl')->getPath());
-        $this->assertEquals('/en/example', $routes->get('imported.en')->getPath());
-    }
-
-    public function testImportingNonLocalizedRoutesWithLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-locale-imports-non-localized-route.yml');
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/nl/imported', $routes->get('imported.nl')->getPath());
-        $this->assertEquals('/en/imported', $routes->get('imported.en')->getPath());
-    }
-
-    public function testImportingRoutesWithOfficialLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('officially_formatted_locales.yml');
-
-        $this->assertCount(3, $routes);
-        $this->assertEquals('/omelette-au-fromage', $routes->get('official.fr.UTF-8')->getPath());
-        $this->assertEquals('/eu-não-sou-espanhol', $routes->get('official.pt-PT')->getPath());
-        $this->assertEquals('/churrasco', $routes->get('official.pt_BR')->getPath());
-    }
-
-    public function testImportingRoutesFromDefinitionMissingLocalePrefix()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('missing-locale-in-importer.yml');
-    }
-
-    public function testImportingRouteWithoutPathOrLocales()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $this->expectException(\InvalidArgumentException::class);
-        $loader->load('route-without-path-or-locales.yml');
-    }
-
-    public function testImportingWithControllerDefault()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/localized']));
-        $routes = $loader->load('importer-with-controller-default.yml');
-        $this->assertCount(3, $routes);
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('home.en')->getDefault('_controller'));
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('home.nl')->getDefault('_controller'));
-        $this->assertEquals('DefaultController::defaultAction', $routes->get('not_localized')->getDefault('_controller'));
-    }
-
-    public function testImportRouteWithNoTrailingSlash()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures/import_with_no_trailing_slash']));
-        $routeCollection = $loader->load('routing.yml');
-
-        $this->assertEquals('/slash/', $routeCollection->get('a_app_homepage')->getPath());
-        $this->assertEquals('/no-slash', $routeCollection->get('b_app_homepage')->getPath());
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation A placeholder name must be a string (0 given). Did you forget to specify the placeholder key for the requirement "\d+" of route "foo" in "%srequirements_without_placeholder_name.yml"?
-     */
-    public function testRequirementsWithoutPlaceholderName()
-    {
-        $loader = new YamlFileLoader(new FileLocator([__DIR__.'/../Fixtures']));
-        $loader->load('requirements_without_placeholder_name.yml');
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php
deleted file mode 100644
index 7fb7dfef..00000000
--- a/vendor/symfony/routing/Tests/Matcher/CompiledRedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledRedirectableUrlMatcherTest extends RedirectableUrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        $dumper = new CompiledUrlMatcherDumper($routes);
-        $compiledRoutes = $dumper->getCompiledRoutes();
-
-        return $this->getMockBuilder(TestCompiledRedirectableUrlMatcher::class)
-            ->setConstructorArgs([$compiledRoutes, $context ?: new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-}
-
-class TestCompiledRedirectableUrlMatcher extends CompiledUrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php
deleted file mode 100644
index 0a93f5ee..00000000
--- a/vendor/symfony/routing/Tests/Matcher/CompiledUrlMatcherTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlMatcherTest extends UrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        $dumper = new CompiledUrlMatcherDumper($routes);
-
-        return new CompiledUrlMatcher($dumper->getCompiledRoutes(), $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php
deleted file mode 100644
index aed006f7..00000000
--- a/vendor/symfony/routing/Tests/Matcher/DumpedRedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class DumpedRedirectableUrlMatcherTest extends RedirectableUrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        static $i = 0;
-
-        $class = 'DumpedRedirectableUrlMatcher'.++$i;
-        $dumper = new PhpMatcherDumper($routes);
-        eval('?>'.$dumper->dump(['class' => $class, 'base_class' => 'Symfony\Component\Routing\Tests\Matcher\TestDumpedRedirectableUrlMatcher']));
-
-        return $this->getMockBuilder($class)
-            ->setConstructorArgs([$context ?: new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-}
-
-class TestDumpedRedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php
deleted file mode 100644
index 1766c04d..00000000
--- a/vendor/symfony/routing/Tests/Matcher/DumpedUrlMatcherTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class DumpedUrlMatcherTest extends UrlMatcherTest
-{
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        static $i = 0;
-
-        $class = 'DumpedUrlMatcher'.++$i;
-        $dumper = new PhpMatcherDumper($routes);
-        eval('?>'.$dumper->dump(['class' => $class]));
-
-        return new $class($context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php
deleted file mode 100644
index 744229b3..00000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php
+++ /dev/null
@@ -1,494 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
-use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class CompiledUrlMatcherDumperTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $dumpPath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->dumpPath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_matcher.'.uniqid('CompiledUrlMatcher').'.php';
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->dumpPath);
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo:bar/'));
-
-        $matcher = $this->generateDumpedMatcher($collection);
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/', 'foo')->willReturn([]);
-
-        $matcher->match('/foo%3Abar');
-    }
-
-    /**
-     * @dataProvider getRouteCollections
-     */
-    public function testDump(RouteCollection $collection, $fixture)
-    {
-        $basePath = __DIR__.'/../../Fixtures/dumper/';
-
-        $dumper = new CompiledUrlMatcherDumper($collection);
-        $this->assertStringEqualsFile($basePath.$fixture, $dumper->dump());
-    }
-
-    public function getRouteCollections()
-    {
-        /* test case 1 */
-
-        $collection = new RouteCollection();
-
-        $collection->add('overridden', new Route('/overridden'));
-
-        // defaults and requirements
-        $collection->add('foo', new Route(
-            '/foo/{bar}',
-            ['def' => 'test'],
-            ['bar' => 'baz|symfony']
-        ));
-        // method requirement
-        $collection->add('bar', new Route(
-            '/bar/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'head']
-        ));
-        // GET method requirement automatically adds HEAD as valid
-        $collection->add('barhead', new Route(
-            '/barhead/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET']
-        ));
-        // simple
-        $collection->add('baz', new Route(
-            '/test/baz'
-        ));
-        // simple with extension
-        $collection->add('baz2', new Route(
-            '/test/baz.html'
-        ));
-        // trailing slash
-        $collection->add('baz3', new Route(
-            '/test/baz3/'
-        ));
-        // trailing slash with variable
-        $collection->add('baz4', new Route(
-            '/test/{foo}/'
-        ));
-        // trailing slash and method
-        $collection->add('baz5', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['post']
-        ));
-        // complex name
-        $collection->add('baz.baz6', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['put']
-        ));
-        // defaults without variable
-        $collection->add('foofoo', new Route(
-            '/foofoo',
-            ['def' => 'test']
-        ));
-        // pattern with quotes
-        $collection->add('quoter', new Route(
-            '/{quoter}',
-            [],
-            ['quoter' => '[\']+']
-        ));
-        // space in pattern
-        $collection->add('space', new Route(
-            '/spa ce'
-        ));
-
-        // prefixes
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden', new Route('/overridden1'));
-        $collection1->add('foo1', (new Route('/{foo}'))->setMethods('PUT'));
-        $collection1->add('bar1', new Route('/{bar}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2 = new RouteCollection();
-        $collection2->addCollection($collection1);
-        $collection2->add('overridden', new Route('/{var}', [], ['var' => '.*']));
-        $collection1 = new RouteCollection();
-        $collection1->add('foo2', new Route('/{foo1}'));
-        $collection1->add('bar2', new Route('/{bar1}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2->addCollection($collection1);
-        $collection2->addPrefix('/a');
-        $collection->addCollection($collection2);
-
-        // overridden through addCollection() and multiple sub-collections with no own prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden2', new Route('/old'));
-        $collection1->add('helloWorld', new Route('/hello/{who}', ['who' => 'World!']));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('overridden2', new Route('/new'));
-        $collection3->add('hey', new Route('/hey/'));
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/multi');
-        $collection->addCollection($collection1);
-
-        // "dynamic" prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('foo3', new Route('/{foo}'));
-        $collection1->add('bar3', new Route('/{bar}'));
-        $collection1->addPrefix('/b');
-        $collection1->addPrefix('{_locale}');
-        $collection->addCollection($collection1);
-
-        // route between collections
-        $collection->add('ababa', new Route('/ababa'));
-
-        // collection with static prefix but only one route
-        $collection1 = new RouteCollection();
-        $collection1->add('foo4', new Route('/{foo}'));
-        $collection1->addPrefix('/aba');
-        $collection->addCollection($collection1);
-
-        // prefix and host
-
-        $collection1 = new RouteCollection();
-
-        $route1 = new Route('/route1', [], [], [], 'a.example.com');
-        $collection1->add('route1', $route1);
-
-        $route2 = new Route('/c2/route2', [], [], [], 'a.example.com');
-        $collection1->add('route2', $route2);
-
-        $route3 = new Route('/c2/route3', [], [], [], 'b.example.com');
-        $collection1->add('route3', $route3);
-
-        $route4 = new Route('/route4', [], [], [], 'a.example.com');
-        $collection1->add('route4', $route4);
-
-        $route5 = new Route('/route5', [], [], [], 'c.example.com');
-        $collection1->add('route5', $route5);
-
-        $route6 = new Route('/route6', [], [], [], null);
-        $collection1->add('route6', $route6);
-
-        $collection->addCollection($collection1);
-
-        // host and variables
-
-        $collection1 = new RouteCollection();
-
-        $route11 = new Route('/route11', [], [], [], '{var1}.example.com');
-        $collection1->add('route11', $route11);
-
-        $route12 = new Route('/route12', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route12', $route12);
-
-        $route13 = new Route('/route13/{name}', [], [], [], '{var1}.example.com');
-        $collection1->add('route13', $route13);
-
-        $route14 = new Route('/route14/{name}', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route14', $route14);
-
-        $route15 = new Route('/route15/{name}', [], [], [], 'c.example.com');
-        $collection1->add('route15', $route15);
-
-        $route16 = new Route('/route16/{name}', ['var1' => 'val'], [], [], null);
-        $collection1->add('route16', $route16);
-
-        $route17 = new Route('/route17', [], [], [], null);
-        $collection1->add('route17', $route17);
-
-        $collection->addCollection($collection1);
-
-        // multiple sub-collections with a single route and a prefix each
-        $collection1 = new RouteCollection();
-        $collection1->add('a', new Route('/a...'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', new Route('/{var}'));
-        $collection3 = new RouteCollection();
-        $collection3->add('c', new Route('/{var}'));
-        $collection3->addPrefix('/c');
-        $collection2->addCollection($collection3);
-        $collection2->addPrefix('/b');
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/a');
-        $collection->addCollection($collection1);
-
-        /* test case 2 */
-
-        $redirectCollection = clone $collection;
-
-        // force HTTPS redirection
-        $redirectCollection->add('secure', new Route(
-            '/secure',
-            [],
-            [],
-            [],
-            '',
-            ['https']
-        ));
-
-        // force HTTP redirection
-        $redirectCollection->add('nonsecure', new Route(
-            '/nonsecure',
-            [],
-            [],
-            [],
-            '',
-            ['http']
-        ));
-
-        /* test case 3 */
-
-        $rootprefixCollection = new RouteCollection();
-        $rootprefixCollection->add('static', new Route('/test'));
-        $rootprefixCollection->add('dynamic', new Route('/{var}'));
-        $rootprefixCollection->addPrefix('rootprefix');
-        $route = new Route('/with-condition');
-        $route->setCondition('context.getMethod() == "GET"');
-        $rootprefixCollection->add('with-condition', $route);
-
-        /* test case 4 */
-        $headMatchCasesCollection = new RouteCollection();
-        $headMatchCasesCollection->add('just_head', new Route(
-            '/just_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD']
-        ));
-        $headMatchCasesCollection->add('head_and_get', new Route(
-            '/head_and_get',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD', 'GET']
-        ));
-        $headMatchCasesCollection->add('get_and_head', new Route(
-            '/get_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('post_and_head', new Route(
-            '/post_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['POST', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('put_and_post', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'POST']
-        ));
-        $headMatchCasesCollection->add('put_and_get_and_head', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'GET', 'HEAD']
-        ));
-
-        /* test case 5 */
-        $groupOptimisedCollection = new RouteCollection();
-        $groupOptimisedCollection->add('a_first', new Route('/a/11'));
-        $groupOptimisedCollection->add('a_second', new Route('/a/22'));
-        $groupOptimisedCollection->add('a_third', new Route('/a/333'));
-        $groupOptimisedCollection->add('a_wildcard', new Route('/{param}'));
-        $groupOptimisedCollection->add('a_fourth', new Route('/a/44/'));
-        $groupOptimisedCollection->add('a_fifth', new Route('/a/55/'));
-        $groupOptimisedCollection->add('a_sixth', new Route('/a/66/'));
-        $groupOptimisedCollection->add('nested_wildcard', new Route('/nested/{param}'));
-        $groupOptimisedCollection->add('nested_a', new Route('/nested/group/a/'));
-        $groupOptimisedCollection->add('nested_b', new Route('/nested/group/b/'));
-        $groupOptimisedCollection->add('nested_c', new Route('/nested/group/c/'));
-
-        $groupOptimisedCollection->add('slashed_a', new Route('/slashed/group/'));
-        $groupOptimisedCollection->add('slashed_b', new Route('/slashed/group/b/'));
-        $groupOptimisedCollection->add('slashed_c', new Route('/slashed/group/c/'));
-
-        /* test case 6 & 7 */
-        $trailingSlashCollection = new RouteCollection();
-        $trailingSlashCollection->add('simple_trailing_slash_no_methods', new Route('/trailing/simple/no-methods/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_trailing_slash_GET_method', new Route('/trailing/simple/get-method/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_trailing_slash_HEAD_method', new Route('/trailing/simple/head-method/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_trailing_slash_POST_method', new Route('/trailing/simple/post-method/', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_trailing_slash_no_methods', new Route('/trailing/regex/no-methods/{param}/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_trailing_slash_GET_method', new Route('/trailing/regex/get-method/{param}/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_trailing_slash_HEAD_method', new Route('/trailing/regex/head-method/{param}/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_trailing_slash_POST_method', new Route('/trailing/regex/post-method/{param}/', [], [], [], '', [], ['POST']));
-
-        $trailingSlashCollection->add('simple_not_trailing_slash_no_methods', new Route('/not-trailing/simple/no-methods', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_not_trailing_slash_GET_method', new Route('/not-trailing/simple/get-method', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_HEAD_method', new Route('/not-trailing/simple/head-method', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_POST_method', new Route('/not-trailing/simple/post-method', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_no_methods', new Route('/not-trailing/regex/no-methods/{param}', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_not_trailing_slash_GET_method', new Route('/not-trailing/regex/get-method/{param}', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_HEAD_method', new Route('/not-trailing/regex/head-method/{param}', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_POST_method', new Route('/not-trailing/regex/post-method/{param}', [], [], [], '', [], ['POST']));
-
-        /* test case 8 */
-        $unicodeCollection = new RouteCollection();
-        $unicodeCollection->add('a', new Route('/{a}', [], ['a' => 'a'], ['utf8' => false]));
-        $unicodeCollection->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-        $unicodeCollection->add('c', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-
-        /* test case 9 */
-        $hostTreeCollection = new RouteCollection();
-        $hostTreeCollection->add('a', (new Route('/'))->setHost('{d}.e.c.b.a'));
-        $hostTreeCollection->add('b', (new Route('/'))->setHost('d.c.b.a'));
-        $hostTreeCollection->add('c', (new Route('/'))->setHost('{e}.e.c.b.a'));
-
-        /* test case 10 */
-        $chunkedCollection = new RouteCollection();
-        for ($i = 0; $i < 1000; ++$i) {
-            $h = substr(md5($i), 0, 6);
-            $chunkedCollection->add('_'.$i, new Route('/'.$h.'/{a}/{b}/{c}/'.$h));
-        }
-
-        /* test case 11 */
-        $demoCollection = new RouteCollection();
-        $demoCollection->add('a', new Route('/admin/post/'));
-        $demoCollection->add('b', new Route('/admin/post/new'));
-        $demoCollection->add('c', (new Route('/admin/post/{id}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('d', (new Route('/admin/post/{id}/edit'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('e', (new Route('/admin/post/{id}/delete'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('f', new Route('/blog/'));
-        $demoCollection->add('g', new Route('/blog/rss.xml'));
-        $demoCollection->add('h', (new Route('/blog/page/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('i', (new Route('/blog/posts/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('j', (new Route('/blog/comments/{id}/new'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('k', new Route('/blog/search'));
-        $demoCollection->add('l', new Route('/login'));
-        $demoCollection->add('m', new Route('/logout'));
-        $demoCollection->addPrefix('/{_locale}');
-        $demoCollection->add('n', new Route('/{_locale}'));
-        $demoCollection->addRequirements(['_locale' => 'en|fr']);
-        $demoCollection->addDefaults(['_locale' => 'en']);
-
-        /* test case 12 */
-        $suffixCollection = new RouteCollection();
-        $suffixCollection->add('r1', new Route('abc{foo}/1'));
-        $suffixCollection->add('r2', new Route('abc{foo}/2'));
-        $suffixCollection->add('r10', new Route('abc{foo}/10'));
-        $suffixCollection->add('r20', new Route('abc{foo}/20'));
-        $suffixCollection->add('r100', new Route('abc{foo}/100'));
-        $suffixCollection->add('r200', new Route('abc{foo}/200'));
-
-        /* test case 13 */
-        $hostCollection = new RouteCollection();
-        $hostCollection->add('r1', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-        $hostCollection->add('r2', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-
-        return [
-           [new RouteCollection(), 'compiled_url_matcher0.php'],
-           [$collection, 'compiled_url_matcher1.php'],
-           [$redirectCollection, 'compiled_url_matcher2.php'],
-           [$rootprefixCollection, 'compiled_url_matcher3.php'],
-           [$headMatchCasesCollection, 'compiled_url_matcher4.php'],
-           [$groupOptimisedCollection, 'compiled_url_matcher5.php'],
-           [$trailingSlashCollection, 'compiled_url_matcher6.php'],
-           [$trailingSlashCollection, 'compiled_url_matcher7.php'],
-           [$unicodeCollection, 'compiled_url_matcher8.php'],
-           [$hostTreeCollection, 'compiled_url_matcher9.php'],
-           [$chunkedCollection, 'compiled_url_matcher10.php'],
-           [$demoCollection, 'compiled_url_matcher11.php'],
-           [$suffixCollection, 'compiled_url_matcher12.php'],
-           [$hostCollection, 'compiled_url_matcher13.php'],
-        ];
-    }
-
-    private function generateDumpedMatcher(RouteCollection $collection)
-    {
-        $dumper = new CompiledUrlMatcherDumper($collection);
-        $code = $dumper->dump();
-
-        file_put_contents($this->dumpPath, $code);
-        $compiledRoutes = require $this->dumpPath;
-
-        return $this->getMockBuilder(TestCompiledUrlMatcher::class)
-            ->setConstructorArgs([$compiledRoutes, new RequestContext()])
-            ->setMethods(['redirect'])
-            ->getMock();
-    }
-
-    public function testGenerateDumperMatcherWithObject()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Symfony\Component\Routing\Route cannot contain objects');
-        $routeCollection = new RouteCollection();
-        $routeCollection->add('_', new Route('/', [new \stdClass()]));
-        $dumper = new CompiledUrlMatcherDumper($routeCollection);
-        $dumper->dump();
-    }
-}
-
-class TestCompiledUrlMatcher extends CompiledUrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-        return [];
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php
deleted file mode 100644
index 4c154512..00000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/PhpMatcherDumperTest.php
+++ /dev/null
@@ -1,511 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-/**
- * @group legacy
- */
-class PhpMatcherDumperTest extends TestCase
-{
-    /**
-     * @var string
-     */
-    private $matcherClass;
-
-    /**
-     * @var string
-     */
-    private $dumpPath;
-
-    protected function setUp(): void
-    {
-        parent::setUp();
-
-        $this->matcherClass = uniqid('ProjectUrlMatcher');
-        $this->dumpPath = sys_get_temp_dir().\DIRECTORY_SEPARATOR.'php_matcher.'.$this->matcherClass.'.php';
-    }
-
-    protected function tearDown(): void
-    {
-        parent::tearDown();
-
-        @unlink($this->dumpPath);
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo:bar/'));
-
-        $class = $this->generateDumpedMatcher($collection, true);
-
-        $matcher = $this->getMockBuilder($class)
-                        ->setMethods(['redirect'])
-                        ->setConstructorArgs([new RequestContext()])
-                        ->getMock();
-
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/', 'foo')->willReturn([]);
-
-        $matcher->match('/foo%3Abar');
-    }
-
-    /**
-     * @dataProvider getRouteCollections
-     */
-    public function testDump(RouteCollection $collection, $fixture, $options = [])
-    {
-        $basePath = __DIR__.'/../../Fixtures/dumper/';
-
-        $dumper = new PhpMatcherDumper($collection);
-        $this->assertStringEqualsFile($basePath.$fixture, $dumper->dump($options), '->dump() correctly dumps routes as optimized PHP code.');
-    }
-
-    public function getRouteCollections()
-    {
-        /* test case 1 */
-
-        $collection = new RouteCollection();
-
-        $collection->add('overridden', new Route('/overridden'));
-
-        // defaults and requirements
-        $collection->add('foo', new Route(
-            '/foo/{bar}',
-            ['def' => 'test'],
-            ['bar' => 'baz|symfony']
-        ));
-        // method requirement
-        $collection->add('bar', new Route(
-            '/bar/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'head']
-        ));
-        // GET method requirement automatically adds HEAD as valid
-        $collection->add('barhead', new Route(
-            '/barhead/{foo}',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET']
-        ));
-        // simple
-        $collection->add('baz', new Route(
-            '/test/baz'
-        ));
-        // simple with extension
-        $collection->add('baz2', new Route(
-            '/test/baz.html'
-        ));
-        // trailing slash
-        $collection->add('baz3', new Route(
-            '/test/baz3/'
-        ));
-        // trailing slash with variable
-        $collection->add('baz4', new Route(
-            '/test/{foo}/'
-        ));
-        // trailing slash and method
-        $collection->add('baz5', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['post']
-        ));
-        // complex name
-        $collection->add('baz.baz6', new Route(
-            '/test/{foo}/',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['put']
-        ));
-        // defaults without variable
-        $collection->add('foofoo', new Route(
-            '/foofoo',
-            ['def' => 'test']
-        ));
-        // pattern with quotes
-        $collection->add('quoter', new Route(
-            '/{quoter}',
-            [],
-            ['quoter' => '[\']+']
-        ));
-        // space in pattern
-        $collection->add('space', new Route(
-            '/spa ce'
-        ));
-
-        // prefixes
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden', new Route('/overridden1'));
-        $collection1->add('foo1', (new Route('/{foo}'))->setMethods('PUT'));
-        $collection1->add('bar1', new Route('/{bar}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2 = new RouteCollection();
-        $collection2->addCollection($collection1);
-        $collection2->add('overridden', new Route('/{var}', [], ['var' => '.*']));
-        $collection1 = new RouteCollection();
-        $collection1->add('foo2', new Route('/{foo1}'));
-        $collection1->add('bar2', new Route('/{bar1}'));
-        $collection1->addPrefix('/b\'b');
-        $collection2->addCollection($collection1);
-        $collection2->addPrefix('/a');
-        $collection->addCollection($collection2);
-
-        // overridden through addCollection() and multiple sub-collections with no own prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('overridden2', new Route('/old'));
-        $collection1->add('helloWorld', new Route('/hello/{who}', ['who' => 'World!']));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('overridden2', new Route('/new'));
-        $collection3->add('hey', new Route('/hey/'));
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/multi');
-        $collection->addCollection($collection1);
-
-        // "dynamic" prefix
-        $collection1 = new RouteCollection();
-        $collection1->add('foo3', new Route('/{foo}'));
-        $collection1->add('bar3', new Route('/{bar}'));
-        $collection1->addPrefix('/b');
-        $collection1->addPrefix('{_locale}');
-        $collection->addCollection($collection1);
-
-        // route between collections
-        $collection->add('ababa', new Route('/ababa'));
-
-        // collection with static prefix but only one route
-        $collection1 = new RouteCollection();
-        $collection1->add('foo4', new Route('/{foo}'));
-        $collection1->addPrefix('/aba');
-        $collection->addCollection($collection1);
-
-        // prefix and host
-
-        $collection1 = new RouteCollection();
-
-        $route1 = new Route('/route1', [], [], [], 'a.example.com');
-        $collection1->add('route1', $route1);
-
-        $route2 = new Route('/c2/route2', [], [], [], 'a.example.com');
-        $collection1->add('route2', $route2);
-
-        $route3 = new Route('/c2/route3', [], [], [], 'b.example.com');
-        $collection1->add('route3', $route3);
-
-        $route4 = new Route('/route4', [], [], [], 'a.example.com');
-        $collection1->add('route4', $route4);
-
-        $route5 = new Route('/route5', [], [], [], 'c.example.com');
-        $collection1->add('route5', $route5);
-
-        $route6 = new Route('/route6', [], [], [], null);
-        $collection1->add('route6', $route6);
-
-        $collection->addCollection($collection1);
-
-        // host and variables
-
-        $collection1 = new RouteCollection();
-
-        $route11 = new Route('/route11', [], [], [], '{var1}.example.com');
-        $collection1->add('route11', $route11);
-
-        $route12 = new Route('/route12', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route12', $route12);
-
-        $route13 = new Route('/route13/{name}', [], [], [], '{var1}.example.com');
-        $collection1->add('route13', $route13);
-
-        $route14 = new Route('/route14/{name}', ['var1' => 'val'], [], [], '{var1}.example.com');
-        $collection1->add('route14', $route14);
-
-        $route15 = new Route('/route15/{name}', [], [], [], 'c.example.com');
-        $collection1->add('route15', $route15);
-
-        $route16 = new Route('/route16/{name}', ['var1' => 'val'], [], [], null);
-        $collection1->add('route16', $route16);
-
-        $route17 = new Route('/route17', [], [], [], null);
-        $collection1->add('route17', $route17);
-
-        $collection->addCollection($collection1);
-
-        // multiple sub-collections with a single route and a prefix each
-        $collection1 = new RouteCollection();
-        $collection1->add('a', new Route('/a...'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', new Route('/{var}'));
-        $collection3 = new RouteCollection();
-        $collection3->add('c', new Route('/{var}'));
-        $collection3->addPrefix('/c');
-        $collection2->addCollection($collection3);
-        $collection2->addPrefix('/b');
-        $collection1->addCollection($collection2);
-        $collection1->addPrefix('/a');
-        $collection->addCollection($collection1);
-
-        /* test case 2 */
-
-        $redirectCollection = clone $collection;
-
-        // force HTTPS redirection
-        $redirectCollection->add('secure', new Route(
-            '/secure',
-            [],
-            [],
-            [],
-            '',
-            ['https']
-        ));
-
-        // force HTTP redirection
-        $redirectCollection->add('nonsecure', new Route(
-            '/nonsecure',
-            [],
-            [],
-            [],
-            '',
-            ['http']
-        ));
-
-        /* test case 3 */
-
-        $rootprefixCollection = new RouteCollection();
-        $rootprefixCollection->add('static', new Route('/test'));
-        $rootprefixCollection->add('dynamic', new Route('/{var}'));
-        $rootprefixCollection->addPrefix('rootprefix');
-        $route = new Route('/with-condition');
-        $route->setCondition('context.getMethod() == "GET"');
-        $rootprefixCollection->add('with-condition', $route);
-
-        /* test case 4 */
-        $headMatchCasesCollection = new RouteCollection();
-        $headMatchCasesCollection->add('just_head', new Route(
-            '/just_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD']
-        ));
-        $headMatchCasesCollection->add('head_and_get', new Route(
-            '/head_and_get',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['HEAD', 'GET']
-        ));
-        $headMatchCasesCollection->add('get_and_head', new Route(
-            '/get_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['GET', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('post_and_head', new Route(
-            '/post_and_head',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['POST', 'HEAD']
-        ));
-        $headMatchCasesCollection->add('put_and_post', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'POST']
-        ));
-        $headMatchCasesCollection->add('put_and_get_and_head', new Route(
-            '/put_and_post',
-            [],
-            [],
-            [],
-            '',
-            [],
-            ['PUT', 'GET', 'HEAD']
-        ));
-
-        /* test case 5 */
-        $groupOptimisedCollection = new RouteCollection();
-        $groupOptimisedCollection->add('a_first', new Route('/a/11'));
-        $groupOptimisedCollection->add('a_second', new Route('/a/22'));
-        $groupOptimisedCollection->add('a_third', new Route('/a/333'));
-        $groupOptimisedCollection->add('a_wildcard', new Route('/{param}'));
-        $groupOptimisedCollection->add('a_fourth', new Route('/a/44/'));
-        $groupOptimisedCollection->add('a_fifth', new Route('/a/55/'));
-        $groupOptimisedCollection->add('a_sixth', new Route('/a/66/'));
-        $groupOptimisedCollection->add('nested_wildcard', new Route('/nested/{param}'));
-        $groupOptimisedCollection->add('nested_a', new Route('/nested/group/a/'));
-        $groupOptimisedCollection->add('nested_b', new Route('/nested/group/b/'));
-        $groupOptimisedCollection->add('nested_c', new Route('/nested/group/c/'));
-
-        $groupOptimisedCollection->add('slashed_a', new Route('/slashed/group/'));
-        $groupOptimisedCollection->add('slashed_b', new Route('/slashed/group/b/'));
-        $groupOptimisedCollection->add('slashed_c', new Route('/slashed/group/c/'));
-
-        /* test case 6 & 7 */
-        $trailingSlashCollection = new RouteCollection();
-        $trailingSlashCollection->add('simple_trailing_slash_no_methods', new Route('/trailing/simple/no-methods/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_trailing_slash_GET_method', new Route('/trailing/simple/get-method/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_trailing_slash_HEAD_method', new Route('/trailing/simple/head-method/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_trailing_slash_POST_method', new Route('/trailing/simple/post-method/', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_trailing_slash_no_methods', new Route('/trailing/regex/no-methods/{param}/', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_trailing_slash_GET_method', new Route('/trailing/regex/get-method/{param}/', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_trailing_slash_HEAD_method', new Route('/trailing/regex/head-method/{param}/', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_trailing_slash_POST_method', new Route('/trailing/regex/post-method/{param}/', [], [], [], '', [], ['POST']));
-
-        $trailingSlashCollection->add('simple_not_trailing_slash_no_methods', new Route('/not-trailing/simple/no-methods', [], [], [], '', [], []));
-        $trailingSlashCollection->add('simple_not_trailing_slash_GET_method', new Route('/not-trailing/simple/get-method', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_HEAD_method', new Route('/not-trailing/simple/head-method', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('simple_not_trailing_slash_POST_method', new Route('/not-trailing/simple/post-method', [], [], [], '', [], ['POST']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_no_methods', new Route('/not-trailing/regex/no-methods/{param}', [], [], [], '', [], []));
-        $trailingSlashCollection->add('regex_not_trailing_slash_GET_method', new Route('/not-trailing/regex/get-method/{param}', [], [], [], '', [], ['GET']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_HEAD_method', new Route('/not-trailing/regex/head-method/{param}', [], [], [], '', [], ['HEAD']));
-        $trailingSlashCollection->add('regex_not_trailing_slash_POST_method', new Route('/not-trailing/regex/post-method/{param}', [], [], [], '', [], ['POST']));
-
-        /* test case 8 */
-        $unicodeCollection = new RouteCollection();
-        $unicodeCollection->add('a', new Route('/{a}', [], ['a' => 'a'], ['utf8' => false]));
-        $unicodeCollection->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-        $unicodeCollection->add('c', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-
-        /* test case 9 */
-        $hostTreeCollection = new RouteCollection();
-        $hostTreeCollection->add('a', (new Route('/'))->setHost('{d}.e.c.b.a'));
-        $hostTreeCollection->add('b', (new Route('/'))->setHost('d.c.b.a'));
-        $hostTreeCollection->add('c', (new Route('/'))->setHost('{e}.e.c.b.a'));
-
-        /* test case 10 */
-        $chunkedCollection = new RouteCollection();
-        for ($i = 0; $i < 1000; ++$i) {
-            $h = substr(md5($i), 0, 6);
-            $chunkedCollection->add('_'.$i, new Route('/'.$h.'/{a}/{b}/{c}/'.$h));
-        }
-
-        /* test case 11 */
-        $demoCollection = new RouteCollection();
-        $demoCollection->add('a', new Route('/admin/post/'));
-        $demoCollection->add('b', new Route('/admin/post/new'));
-        $demoCollection->add('c', (new Route('/admin/post/{id}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('d', (new Route('/admin/post/{id}/edit'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('e', (new Route('/admin/post/{id}/delete'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('f', new Route('/blog/'));
-        $demoCollection->add('g', new Route('/blog/rss.xml'));
-        $demoCollection->add('h', (new Route('/blog/page/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('i', (new Route('/blog/posts/{page}'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('j', (new Route('/blog/comments/{id}/new'))->setRequirements(['id' => '\d+']));
-        $demoCollection->add('k', new Route('/blog/search'));
-        $demoCollection->add('l', new Route('/login'));
-        $demoCollection->add('m', new Route('/logout'));
-        $demoCollection->addPrefix('/{_locale}');
-        $demoCollection->add('n', new Route('/{_locale}'));
-        $demoCollection->addRequirements(['_locale' => 'en|fr']);
-        $demoCollection->addDefaults(['_locale' => 'en']);
-
-        /* test case 12 */
-        $suffixCollection = new RouteCollection();
-        $suffixCollection->add('r1', new Route('abc{foo}/1'));
-        $suffixCollection->add('r2', new Route('abc{foo}/2'));
-        $suffixCollection->add('r10', new Route('abc{foo}/10'));
-        $suffixCollection->add('r20', new Route('abc{foo}/20'));
-        $suffixCollection->add('r100', new Route('abc{foo}/100'));
-        $suffixCollection->add('r200', new Route('abc{foo}/200'));
-
-        /* test case 13 */
-        $hostCollection = new RouteCollection();
-        $hostCollection->add('r1', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-        $hostCollection->add('r2', (new Route('abc{foo}'))->setHost('{foo}.exampple.com'));
-
-        return [
-           [new RouteCollection(), 'url_matcher0.php', []],
-           [$collection, 'url_matcher1.php', []],
-           [$redirectCollection, 'url_matcher2.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$rootprefixCollection, 'url_matcher3.php', []],
-           [$headMatchCasesCollection, 'url_matcher4.php', []],
-           [$groupOptimisedCollection, 'url_matcher5.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$trailingSlashCollection, 'url_matcher6.php', []],
-           [$trailingSlashCollection, 'url_matcher7.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$unicodeCollection, 'url_matcher8.php', []],
-           [$hostTreeCollection, 'url_matcher9.php', []],
-           [$chunkedCollection, 'url_matcher10.php', []],
-           [$demoCollection, 'url_matcher11.php', ['base_class' => 'Symfony\Component\Routing\Tests\Fixtures\RedirectableUrlMatcher']],
-           [$suffixCollection, 'url_matcher12.php', []],
-           [$hostCollection, 'url_matcher13.php', []],
-        ];
-    }
-
-    private function generateDumpedMatcher(RouteCollection $collection, $redirectableStub = false)
-    {
-        $options = ['class' => $this->matcherClass];
-
-        if ($redirectableStub) {
-            $options['base_class'] = '\Symfony\Component\Routing\Tests\Matcher\Dumper\RedirectableUrlMatcherStub';
-        }
-
-        $dumper = new PhpMatcherDumper($collection);
-        $code = $dumper->dump($options);
-
-        file_put_contents($this->dumpPath, $code);
-        include $this->dumpPath;
-
-        return $this->matcherClass;
-    }
-
-    public function testGenerateDumperMatcherWithObject()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('Symfony\Component\Routing\Route cannot contain objects');
-        $routeCollection = new RouteCollection();
-        $routeCollection->add('_', new Route('/', [new \stdClass()]));
-        $dumper = new PhpMatcherDumper($routeCollection);
-        $dumper->dump();
-    }
-}
-
-abstract class RedirectableUrlMatcherStub extends UrlMatcher implements RedirectableUrlMatcherInterface
-{
-    public function redirect($path, $route, $scheme = null)
-    {
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php b/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php
deleted file mode 100644
index fe5014fc..00000000
--- a/vendor/symfony/routing/Tests/Matcher/Dumper/StaticPrefixCollectionTest.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-namespace Symfony\Component\Routing\Tests\Matcher\Dumper;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Matcher\Dumper\StaticPrefixCollection;
-use Symfony\Component\Routing\Route;
-
-class StaticPrefixCollectionTest extends TestCase
-{
-    /**
-     * @dataProvider routeProvider
-     */
-    public function testGrouping(array $routes, $expected)
-    {
-        $collection = new StaticPrefixCollection('/');
-
-        foreach ($routes as $route) {
-            list($path, $name) = $route;
-            $staticPrefix = (new Route($path))->compile()->getStaticPrefix();
-            $collection->addRoute($staticPrefix, [$name]);
-        }
-
-        $dumped = $this->dumpCollection($collection);
-        $this->assertEquals($expected, $dumped);
-    }
-
-    public function routeProvider()
-    {
-        return [
-            'Simple - not nested' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/', 'prefix_segment'],
-                    ['/leading/segment/', 'leading_segment'],
-                ],
-                <<<EOF
-root
-prefix_segment
-leading_segment
-EOF
-            ],
-            'Nested - small group' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/aa', 'prefix_segment'],
-                    ['/prefix/segment/bb', 'leading_segment'],
-                ],
-                <<<EOF
-root
-/prefix/segment/
--> prefix_segment
--> leading_segment
-EOF
-            ],
-            'Nested - contains item at intersection' => [
-                [
-                    ['/', 'root'],
-                    ['/prefix/segment/', 'prefix_segment'],
-                    ['/prefix/segment/bb', 'leading_segment'],
-                ],
-                <<<EOF
-root
-/prefix/segment/
--> prefix_segment
--> leading_segment
-EOF
-            ],
-            'Simple one level nesting' => [
-                [
-                    ['/', 'root'],
-                    ['/group/segment/', 'nested_segment'],
-                    ['/group/thing/', 'some_segment'],
-                    ['/group/other/', 'other_segment'],
-                ],
-                <<<EOF
-root
-/group/
--> nested_segment
--> some_segment
--> other_segment
-EOF
-            ],
-            'Retain matching order with groups' => [
-                [
-                    ['/group/aa/', 'aa'],
-                    ['/group/bb/', 'bb'],
-                    ['/group/cc/', 'cc'],
-                    ['/(.*)', 'root'],
-                    ['/group/dd/', 'dd'],
-                    ['/group/ee/', 'ee'],
-                    ['/group/ff/', 'ff'],
-                ],
-                <<<EOF
-/group/
--> aa
--> bb
--> cc
-root
-/group/
--> dd
--> ee
--> ff
-EOF
-            ],
-            'Retain complex matching order with groups at base' => [
-                [
-                    ['/aaa/111/', 'first_aaa'],
-                    ['/prefixed/group/aa/', 'aa'],
-                    ['/prefixed/group/bb/', 'bb'],
-                    ['/prefixed/group/cc/', 'cc'],
-                    ['/prefixed/(.*)', 'root'],
-                    ['/prefixed/group/dd/', 'dd'],
-                    ['/prefixed/group/ee/', 'ee'],
-                    ['/prefixed/', 'parent'],
-                    ['/prefixed/group/ff/', 'ff'],
-                    ['/aaa/222/', 'second_aaa'],
-                    ['/aaa/333/', 'third_aaa'],
-                ],
-                <<<EOF
-/aaa/
--> first_aaa
--> second_aaa
--> third_aaa
-/prefixed/
--> /prefixed/group/
--> -> aa
--> -> bb
--> -> cc
--> root
--> /prefixed/group/
--> -> dd
--> -> ee
--> -> ff
--> parent
-EOF
-            ],
-
-            'Group regardless of segments' => [
-                [
-                    ['/aaa-111/', 'a1'],
-                    ['/aaa-222/', 'a2'],
-                    ['/aaa-333/', 'a3'],
-                    ['/group-aa/', 'g1'],
-                    ['/group-bb/', 'g2'],
-                    ['/group-cc/', 'g3'],
-                ],
-                <<<EOF
-/aaa-
--> a1
--> a2
--> a3
-/group-
--> g1
--> g2
--> g3
-EOF
-            ],
-        ];
-    }
-
-    private function dumpCollection(StaticPrefixCollection $collection, $prefix = '')
-    {
-        $lines = [];
-
-        foreach ($collection->getRoutes() as $item) {
-            if ($item instanceof StaticPrefixCollection) {
-                $lines[] = $prefix.$item->getPrefix();
-                $lines[] = $this->dumpCollection($item, $prefix.'-> ');
-            } else {
-                $lines[] = $prefix.implode(' ', $item);
-            }
-        }
-
-        return implode("\n", $lines);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php
deleted file mode 100644
index 1461b4b9..00000000
--- a/vendor/symfony/routing/Tests/Matcher/RedirectableUrlMatcherTest.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class RedirectableUrlMatcherTest extends UrlMatcherTest
-{
-    public function testMissingTrailingSlash()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->willReturn([]);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlash()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->willReturn([]);
-        $matcher->match('/foo/');
-    }
-
-    public function testRedirectWhenNoSlashForNonSafeMethod()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRedirectRedirectsToFirstScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['FTP', 'HTTPS']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo', 'foo', 'ftp')
-            ->willReturn(['_route' => 'foo'])
-        ;
-        $matcher->match('/foo');
-    }
-
-    public function testNoSchemaRedirectIfOneOfMultipleSchemesMatches()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https', 'http']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->never())
-            ->method('redirect');
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRedirectWithParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{bar}', [], [], [], '', ['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo/baz', 'foo', 'https')
-            ->willReturn(['redirect' => 'value'])
-        ;
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz'));
-    }
-
-    public function testSchemeRedirectForRoot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], '', ['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/', 'foo', 'https')
-            ->willReturn(['redirect' => 'value']);
-        $this->assertEquals(['_route' => 'foo', 'redirect' => 'value'], $matcher->match('/'));
-    }
-
-    public function testSlashRedirectWithParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{bar}/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher
-            ->expects($this->once())
-            ->method('redirect')
-            ->with('/foo/baz/', 'foo', null)
-            ->willReturn(['redirect' => 'value'])
-        ;
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz'));
-    }
-
-    public function testRedirectPreservesUrlEncoding()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo:bar/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/')->willReturn([]);
-        $matcher->match('/foo%3Abar');
-    }
-
-    public function testSchemeRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-        $matcher = $this->getUrlMatcher($coll, new RequestContext());
-        $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo', 'https')->willReturn([]);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo'));
-    }
-
-    public function testFallbackPage()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-        $coll->add('bar', new Route('/{name}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo')->willReturn(['_route' => 'foo']);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo'));
-
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-        $coll->add('bar', new Route('/{name}/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo')->willReturn(['_route' => 'foo']);
-        $this->assertSame(['_route' => 'foo'], $matcher->match('/foo/'));
-    }
-
-    public function testMissingTrailingSlashAndScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', (new Route('/foo/'))->setSchemes(['https']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo', 'https')->willReturn([]);
-        $matcher->match('/foo');
-    }
-
-    public function testSlashAndVerbPrecedenceWithRedirection()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['post']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons/'));
-
-        $matcher->expects($this->once())->method('redirect')->with('/api/customers/123/contactpersons/')->willReturn([]);
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-    }
-
-    public function testNonGreedyTrailingRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '\d+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/123')->willReturn([]);
-
-        $this->assertEquals(['_route' => 'a', 'a' => '123'], $matcher->match('/123/'));
-    }
-
-    public function testTrailingRequirementWithDefault_A()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->expects($this->once())->method('redirect')->with('/fr-fr')->willReturn([]);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'aaa'], $matcher->match('/fr-fr/'));
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return $this->getMockForAbstractClass('Symfony\Component\Routing\Matcher\RedirectableUrlMatcher', [$routes, $context ?: new RequestContext()]);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php
deleted file mode 100644
index b31f99e0..00000000
--- a/vendor/symfony/routing/Tests/Matcher/TraceableUrlMatcherTest.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Matcher\TraceableUrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class TraceableUrlMatcherTest extends UrlMatcherTest
-{
-    public function test()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/bar/{id}', [], ['id' => '\d+']));
-        $coll->add('bar1', new Route('/bar/{name}', [], ['id' => '\w+'], [], '', [], ['POST']));
-        $coll->add('bar2', new Route('/foo', [], [], [], 'baz'));
-        $coll->add('bar3', new Route('/foo1', [], [], [], 'baz'));
-        $coll->add('bar4', new Route('/foo2', [], [], [], 'baz', [], [], 'context.getMethod() == "GET"'));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($coll, $context);
-        $traces = $matcher->getTraces('/babar');
-        $this->assertSame([0, 0, 0, 0, 0, 0], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo');
-        $this->assertSame([1, 0, 0, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/12');
-        $this->assertSame([0, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/dd');
-        $this->assertSame([0, 1, 1, 0, 0, 0], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo1');
-        $this->assertSame([0, 0, 0, 0, 2], $this->getLevels($traces));
-
-        $context->setMethod('POST');
-        $traces = $matcher->getTraces('/foo');
-        $this->assertSame([2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/bar/dd');
-        $this->assertSame([0, 1, 2], $this->getLevels($traces));
-
-        $traces = $matcher->getTraces('/foo2');
-        $this->assertSame([0, 0, 0, 0, 0, 1], $this->getLevels($traces));
-    }
-
-    public function testMatchRouteOnMultipleHosts()
-    {
-        $routes = new RouteCollection();
-        $routes->add('first', new Route(
-            '/mypath/',
-            ['_controller' => 'MainBundle:Info:first'],
-            [],
-            [],
-            'some.example.com'
-        ));
-
-        $routes->add('second', new Route(
-            '/mypath/',
-            ['_controller' => 'MainBundle:Info:second'],
-            [],
-            [],
-            'another.example.com'
-        ));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($routes, $context);
-
-        $traces = $matcher->getTraces('/mypath/');
-        $this->assertSame(
-            [TraceableUrlMatcher::ROUTE_ALMOST_MATCHES, TraceableUrlMatcher::ROUTE_ALMOST_MATCHES],
-            $this->getLevels($traces)
-        );
-    }
-
-    public function getLevels($traces)
-    {
-        $levels = [];
-        foreach ($traces as $trace) {
-            $levels[] = $trace['level'];
-        }
-
-        return $levels;
-    }
-
-    public function testRoutesWithConditions()
-    {
-        $routes = new RouteCollection();
-        $routes->add('foo', new Route('/foo', [], [], [], 'baz', [], [], "request.headers.get('User-Agent') matches '/firefox/i'"));
-
-        $context = new RequestContext();
-        $context->setHost('baz');
-
-        $matcher = new TraceableUrlMatcher($routes, $context);
-
-        $notMatchingRequest = Request::create('/foo', 'GET');
-        $traces = $matcher->getTracesForRequest($notMatchingRequest);
-        $this->assertEquals("Condition \"request.headers.get('User-Agent') matches '/firefox/i'\" does not evaluate to \"true\"", $traces[0]['log']);
-
-        $matchingRequest = Request::create('/foo', 'GET', [], [], [], ['HTTP_USER_AGENT' => 'Firefox']);
-        $traces = $matcher->getTracesForRequest($matchingRequest);
-        $this->assertEquals('Route matches!', $traces[0]['log']);
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return new TraceableUrlMatcher($routes, $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php b/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php
deleted file mode 100644
index c6846ae8..00000000
--- a/vendor/symfony/routing/Tests/Matcher/UrlMatcherTest.php
+++ /dev/null
@@ -1,947 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests\Matcher;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class UrlMatcherTest extends TestCase
-{
-    public function testNoMethodSoAllowed()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testMethodNotAllowed()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['post']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['POST'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testMethodNotAllowedOnRoot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-
-        try {
-            $matcher->match('/');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['GET'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testHeadAllowedWhenRequirementContainsGet()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'head'));
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testMethodNotAllowedAggregatesAllowedMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo1', new Route('/foo', [], [], [], '', [], ['post']));
-        $coll->add('foo2', new Route('/foo', [], [], [], '', [], ['put', 'delete']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-            $this->assertEquals(['POST', 'PUT', 'DELETE'], $e->getAllowedMethods());
-        }
-    }
-
-    public function testPatternMatchAndParameterReturn()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo/{bar}'));
-        $matcher = $this->getUrlMatcher($collection);
-        try {
-            $matcher->match('/no-match');
-            $this->fail();
-        } catch (ResourceNotFoundException $e) {
-        }
-
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz'], $matcher->match('/foo/baz'));
-    }
-
-    public function testDefaultsAreMerged()
-    {
-        // test that defaults are merged
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo/{bar}', ['def' => 'test']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'def' => 'test'], $matcher->match('/foo/baz'));
-    }
-
-    public function testMethodIsIgnoredIfNoMethodGiven()
-    {
-        // test that route "method" is ignored if no method is given in the context
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo', [], [], [], '', [], ['get', 'head']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertIsArray($matcher->match('/foo'));
-
-        // route does not match with POST method context
-        $matcher = $this->getUrlMatcher($collection, new RequestContext('', 'post'));
-        try {
-            $matcher->match('/foo');
-            $this->fail();
-        } catch (MethodNotAllowedException $e) {
-        }
-
-        // route does match with GET or HEAD method context
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertIsArray($matcher->match('/foo'));
-        $matcher = $this->getUrlMatcher($collection, new RequestContext('', 'head'));
-        $this->assertIsArray($matcher->match('/foo'));
-    }
-
-    public function testRouteWithOptionalVariableAsFirstSegment()
-    {
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{bar}/foo', ['bar' => 'bar'], ['bar' => 'foo|bar']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'bar'], $matcher->match('/bar/foo'));
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'foo'], $matcher->match('/foo/foo'));
-
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{bar}', ['bar' => 'bar'], ['bar' => 'foo|bar']));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'foo'], $matcher->match('/foo'));
-        $this->assertEquals(['_route' => 'bar', 'bar' => 'bar'], $matcher->match('/'));
-    }
-
-    public function testRouteWithOnlyOptionalVariables()
-    {
-        $collection = new RouteCollection();
-        $collection->add('bar', new Route('/{foo}/{bar}', ['foo' => 'foo', 'bar' => 'bar'], []));
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'foo', 'bar' => 'bar'], $matcher->match('/'));
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'a', 'bar' => 'bar'], $matcher->match('/a'));
-        $this->assertEquals(['_route' => 'bar', 'foo' => 'a', 'bar' => 'b'], $matcher->match('/a/b'));
-    }
-
-    public function testMatchWithPrefixes()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}'));
-        $collection->addPrefix('/b');
-        $collection->addPrefix('/a');
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => 'foo'], $matcher->match('/a/b/foo'));
-    }
-
-    public function testMatchWithDynamicPrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}'));
-        $collection->addPrefix('/b');
-        $collection->addPrefix('/{_locale}');
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_locale' => 'fr', '_route' => 'foo', 'foo' => 'foo'], $matcher->match('/fr/b/foo'));
-    }
-
-    public function testMatchSpecialRouteName()
-    {
-        $collection = new RouteCollection();
-        $collection->add('$péß^a|', new Route('/bar'));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => '$péß^a|'], $matcher->match('/bar'));
-    }
-
-    public function testMatchImportantVariable()
-    {
-        $collection = new RouteCollection();
-        $collection->add('index', new Route('/index.{!_format}', ['_format' => 'xml']));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'index', '_format' => 'xml'], $matcher->match('/index.xml'));
-    }
-
-    public function testShortPathDoesNotMatchImportantVariable()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-
-        $collection = new RouteCollection();
-        $collection->add('index', new Route('/index.{!_format}', ['_format' => 'xml']));
-
-        $this->getUrlMatcher($collection)->match('/index');
-    }
-
-    public function testTrailingEncodedNewlineIsNotOverlooked()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $matcher->match('/foo%0a');
-    }
-
-    public function testMatchNonAlpha()
-    {
-        $collection = new RouteCollection();
-        $chars = '!"$%éà &\'()*+,./:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ\\[]^_`abcdefghijklmnopqrstuvwxyz{|}~-';
-        $collection->add('foo', new Route('/{foo}/bar', [], ['foo' => '['.preg_quote($chars).']+'], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => $chars], $matcher->match('/'.rawurlencode($chars).'/bar'));
-        $this->assertEquals(['_route' => 'foo', 'foo' => $chars], $matcher->match('/'.strtr($chars, ['%' => '%25']).'/bar'));
-    }
-
-    public function testMatchWithDotMetacharacterInRequirements()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{foo}/bar', [], ['foo' => '.+']));
-
-        $matcher = $this->getUrlMatcher($collection);
-        $this->assertEquals(['_route' => 'foo', 'foo' => "\n"], $matcher->match('/'.urlencode("\n").'/bar'), 'linefeed character is matched');
-    }
-
-    public function testMatchOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/foo1'));
-
-        $collection->addCollection($collection1);
-
-        $matcher = $this->getUrlMatcher($collection);
-
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo1'));
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $this->assertEquals([], $matcher->match('/foo'));
-    }
-
-    public function testMatchRegression()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-        $coll->add('bar', new Route('/foo/bar/{foo}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/foo/bar/bar'));
-
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{bar}'));
-        $matcher = $this->getUrlMatcher($collection);
-        try {
-            $matcher->match('/');
-            $this->fail();
-        } catch (ResourceNotFoundException $e) {
-        }
-    }
-
-    public function testMultipleParams()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo1', new Route('/foo/{a}/{b}'));
-        $coll->add('foo2', new Route('/foo/{a}/test/test/{b}'));
-        $coll->add('foo3', new Route('/foo/{a}/{b}/{c}/{d}'));
-
-        $route = $this->getUrlMatcher($coll)->match('/foo/test/test/test/bar')['_route'];
-
-        $this->assertEquals('foo2', $route);
-    }
-
-    public function testDefaultRequirementForOptionalVariables()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}', ['page' => 'index', '_format' => 'html']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['page' => 'my-page', '_format' => 'xml', '_route' => 'test'], $matcher->match('/my-page.xml'));
-    }
-
-    public function testMatchingIsEager()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{foo}-{bar}-', [], ['foo' => '.+', 'bar' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'text1-text2-text3', 'bar' => 'text4', '_route' => 'test'], $matcher->match('/text1-text2-text3-text4-'));
-    }
-
-    public function testAdjacentVariables()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{w}{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => 'y|Y']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        // 'w' eagerly matches as much as possible and the other variables match the remaining chars.
-        // This also shows that the variables w-z must all exclude the separating char (the dot '.' in this case) by default requirement.
-        // Otherwise they would also consume '.xml' and _format would never match as it's an optional variable.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'Y', 'z' => 'Z', '_format' => 'xml', '_route' => 'test'], $matcher->match('/wwwwwxYZ.xml'));
-        // As 'y' has custom requirement and can only be of value 'y|Y', it will leave  'ZZZ' to variable z.
-        // So with carefully chosen requirements adjacent variables, can be useful.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'y', 'z' => 'ZZZ', '_format' => 'html', '_route' => 'test'], $matcher->match('/wwwwwxyZZZ'));
-        // z and _format are optional.
-        $this->assertEquals(['w' => 'wwwww', 'x' => 'x', 'y' => 'y', 'z' => 'default-z', '_format' => 'html', '_route' => 'test'], $matcher->match('/wwwwwxy'));
-
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $matcher->match('/wxy.html');
-    }
-
-    public function testOptionalVariableWithNoRealSeparator()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/get{what}', ['what' => 'All']));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['what' => 'All', '_route' => 'test'], $matcher->match('/get'));
-        $this->assertEquals(['what' => 'Sites', '_route' => 'test'], $matcher->match('/getSites'));
-
-        // Usually the character in front of an optional parameter can be left out, e.g. with pattern '/get/{what}' just '/get' would match.
-        // But here the 't' in 'get' is not a separating character, so it makes no sense to match without it.
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $matcher->match('/ge');
-    }
-
-    public function testRequiredVariableWithNoRealSeparator()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/get{what}Suffix'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['what' => 'Sites', '_route' => 'test'], $matcher->match('/getSitesSuffix'));
-    }
-
-    public function testDefaultRequirementOfVariable()
-    {
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['page' => 'index', '_format' => 'mobile.html', '_route' => 'test'], $matcher->match('/index.mobile.html'));
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}'));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $matcher->match('/index.sl/ash');
-    }
-
-    public function testDefaultRequirementOfVariableDisallowsNextSeparator()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('test', new Route('/{page}.{_format}', [], ['_format' => 'html|xml']));
-        $matcher = $this->getUrlMatcher($coll);
-
-        $matcher->match('/do.t.html');
-    }
-
-    public function testMissingTrailingSlash()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlash()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo/');
-    }
-
-    public function testMissingTrailingSlashForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testExtraTrailingSlashForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo'));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo/');
-    }
-
-    public function testSchemeRequirement()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testSchemeRequirementForNonSafeMethod()
-    {
-        $this->getExpectedException() ?: $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo', [], [], [], '', ['https']));
-
-        $context = new RequestContext();
-        $context->setMethod('POST');
-        $matcher = $this->getUrlMatcher($coll, $context);
-        $matcher->match('/foo');
-    }
-
-    public function testSamePathWithDifferentScheme()
-    {
-        $coll = new RouteCollection();
-        $coll->add('https_route', new Route('/', [], [], [], '', ['https']));
-        $coll->add('http_route', new Route('/', [], [], [], '', ['http']));
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'http_route'], $matcher->match('/'));
-    }
-
-    public function testCondition()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $route = new Route('/foo');
-        $route->setCondition('context.getMethod() == "POST"');
-        $coll->add('foo', $route);
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/foo');
-    }
-
-    public function testRequestCondition()
-    {
-        $coll = new RouteCollection();
-        $route = new Route('/foo/{bar}');
-        $route->setCondition('request.getBaseUrl() == "/bar"');
-        $coll->add('bar', $route);
-        $route = new Route('/foo/{bar}');
-        $route->setCondition('request.getBaseUrl() == "/sub/front.php" and request.getPathInfo() == "/foo/bar"');
-        $coll->add('foo', $route);
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('/sub/front.php'));
-        $this->assertEquals(['bar' => 'bar', '_route' => 'foo'], $matcher->match('/foo/bar'));
-    }
-
-    public function testDecodeOnce()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['foo' => 'bar%23', '_route' => 'foo'], $matcher->match('/foo/bar%2523'));
-    }
-
-    public function testCannotRelyOnPrefix()
-    {
-        $coll = new RouteCollection();
-
-        $subColl = new RouteCollection();
-        $subColl->add('bar', new Route('/bar'));
-        $subColl->addPrefix('/prefix');
-        // overwrite the pattern, so the prefix is not valid anymore for this route in the collection
-        $subColl->get('bar')->setPath('/new');
-
-        $coll->addCollection($subColl);
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/new'));
-    }
-
-    public function testWithHost()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}', [], [], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo', 'locale' => 'en'], $matcher->match('/foo/bar'));
-    }
-
-    public function testWithHostOnRouteCollection()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}'));
-        $coll->add('bar', new Route('/bar/{foo}', [], [], [], '{locale}.example.net'));
-        $coll->setHost('{locale}.example.com');
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo', 'locale' => 'en'], $matcher->match('/foo/bar'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar', 'locale' => 'en'], $matcher->match('/bar/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithHosts()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/foo', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/foo', [], [], [], 'bar.example.com'));
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsAndVariable()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/{foo}/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithHostsAndVariableInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-        $coll->add('foo', new Route('/{foo}/', [], [], [], 'foo.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/foo', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariationInTrailingSlashWithMethodsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/foo', [], [], [], '', [], ['GET']));
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testVariableVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/{foo}/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testVariableVariationInTrailingSlashWithMethodsInReverse()
-    {
-        // The order should not matter
-        $coll = new RouteCollection();
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-        $coll->add('foo', new Route('/{foo}/', [], [], [], '', [], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'foo'], $matcher->match('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testMixOfStaticAndVariableVariationInTrailingSlashWithHosts()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], 'foo.example.com'));
-        $coll->add('bar', new Route('/{foo}', [], [], [], 'bar.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo.example.com'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'bar.example.com'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-    }
-
-    public function testMixOfStaticAndVariableVariationInTrailingSlashWithMethods()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/', [], [], [], '', [], ['POST']));
-        $coll->add('bar', new Route('/{foo}', [], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $this->assertEquals(['_route' => 'foo'], $matcher->match('/foo/'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET'));
-        $this->assertEquals(['foo' => 'bar', '_route' => 'bar'], $matcher->match('/bar'));
-        $this->assertEquals(['foo' => 'foo', '_route' => 'bar'], $matcher->match('/foo'));
-    }
-
-    public function testWithOutHostHostDoesNotMatch()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/foo/{foo}', [], [], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'example.com'));
-        $matcher->match('/foo/bar');
-    }
-
-    public function testPathIsCaseSensitive()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/locale', [], ['locale' => 'EN|FR|DE']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/en');
-    }
-
-    public function testHostIsCaseInsensitive()
-    {
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], ['locale' => 'EN|FR|DE'], [], '{locale}.example.com'));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
-        $this->assertEquals(['_route' => 'foo', 'locale' => 'en'], $matcher->match('/'));
-    }
-
-    public function testNoConfiguration()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\NoConfigurationException');
-        $coll = new RouteCollection();
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/');
-    }
-
-    public function testNestedCollections()
-    {
-        $coll = new RouteCollection();
-
-        $subColl = new RouteCollection();
-        $subColl->add('a', new Route('/a'));
-        $subColl->add('b', new Route('/b'));
-        $subColl->add('c', new Route('/c'));
-        $subColl->addPrefix('/p');
-        $coll->addCollection($subColl);
-
-        $coll->add('baz', new Route('/{baz}'));
-
-        $subColl = new RouteCollection();
-        $subColl->add('buz', new Route('/buz'));
-        $subColl->addPrefix('/prefix');
-        $coll->addCollection($subColl);
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a'], $matcher->match('/p/a'));
-        $this->assertEquals(['_route' => 'baz', 'baz' => 'p'], $matcher->match('/p'));
-        $this->assertEquals(['_route' => 'buz'], $matcher->match('/prefix/buz'));
-    }
-
-    public function testSchemeAndMethodMismatch()
-    {
-        $this->expectException('Symfony\Component\Routing\Exception\ResourceNotFoundException');
-        $this->expectExceptionMessage('No routes found for "/".');
-        $coll = new RouteCollection();
-        $coll->add('foo', new Route('/', [], [], [], null, ['https'], ['POST']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $matcher->match('/');
-    }
-
-    public function testSiblingRoutes()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', (new Route('/a{a}'))->setMethods('POST'));
-        $coll->add('b', (new Route('/a{a}'))->setMethods('PUT'));
-        $coll->add('c', new Route('/a{a}'));
-        $coll->add('d', (new Route('/b{a}'))->setCondition('false'));
-        $coll->add('e', (new Route('/{b}{a}'))->setCondition('false'));
-        $coll->add('f', (new Route('/{b}{a}'))->setRequirements(['b' => 'b']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'c', 'a' => 'a'], $matcher->match('/aa'));
-        $this->assertEquals(['_route' => 'f', 'b' => 'b', 'a' => 'a'], $matcher->match('/ba'));
-    }
-
-    public function testUnicodeRoute()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '.'], ['utf8' => false]));
-        $coll->add('b', new Route('/{a}', [], ['a' => '.'], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'b', 'a' => 'é'], $matcher->match('/é'));
-    }
-
-    public function testRequirementWithCapturingGroup()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}/{b}', [], ['a' => '(a|b)']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'a' => 'a', 'b' => 'b'], $matcher->match('/a/b'));
-    }
-
-    public function testDotAllWithCatchAll()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{id}.html', [], ['id' => '.+']));
-        $coll->add('b', new Route('/{all}', [], ['all' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'id' => 'foo/bar'], $matcher->match('/foo/bar.html'));
-    }
-
-    public function testHostPattern()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{app}/{action}/{unused}', [], [], [], '{host}'));
-
-        $expected = [
-            '_route' => 'a',
-            'app' => 'an_app',
-            'action' => 'an_action',
-            'unused' => 'unused',
-            'host' => 'foo',
-        ];
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'GET', 'foo'));
-        $this->assertEquals($expected, $matcher->match('/an_app/an_action/unused'));
-    }
-
-    public function testUtf8Prefix()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/é{foo}', [], [], ['utf8' => true]));
-        $coll->add('b', new Route('/è{bar}', [], [], ['utf8' => true]));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('a', $matcher->match('/éo')['_route']);
-    }
-
-    public function testUtf8AndMethodMatching()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/admin/api/list/{shortClassName}/{id}.{_format}', [], [], ['utf8' => true], '', [], ['PUT']));
-        $coll->add('b', new Route('/admin/api/package.{_format}', [], [], [], '', [], ['POST']));
-        $coll->add('c', new Route('/admin/api/package.{_format}', ['_format' => 'json'], [], [], '', [], ['GET']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('c', $matcher->match('/admin/api/package.json')['_route']);
-    }
-
-    public function testHostWithDot()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo', [], [], [], 'foo.example.com'));
-        $coll->add('b', new Route('/bar/{baz}'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('b', $matcher->match('/bar/abc.123')['_route']);
-    }
-
-    public function testSlashVariant()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo/{bar}', [], ['bar' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals('a', $matcher->match('/foo/')['_route']);
-    }
-
-    public function testSlashVariant2()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/foo/{bar}/', [], ['bar' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertEquals(['_route' => 'a', 'bar' => 'bar'], $matcher->match('/foo/bar/'));
-    }
-
-    public function testSlashWithVerb()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{foo}', [], [], [], '', [], ['put', 'delete']));
-        $coll->add('b', new Route('/bar/'));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $this->assertSame(['_route' => 'b'], $matcher->match('/bar/'));
-
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/dav/{foo}', [], ['foo' => '.*'], [], '', [], ['GET', 'OPTIONS']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'OPTIONS'));
-        $expected = [
-            '_route' => 'a',
-            'foo' => 'files/bar/',
-        ];
-        $this->assertEquals($expected, $matcher->match('/dav/files/bar/'));
-    }
-
-    public function testSlashAndVerbPrecedence()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['post']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['get']));
-
-        $matcher = $this->getUrlMatcher($coll);
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['get']));
-        $coll->add('b', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['post']));
-
-        $matcher = $this->getUrlMatcher($coll, new RequestContext('', 'POST'));
-        $expected = [
-            '_route' => 'b',
-            'customerId' => '123',
-        ];
-        $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons'));
-    }
-
-    public function testGreedyTrailingRequirement()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/{a}', [], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'foo'], $matcher->match('/foo'));
-        $this->assertEquals(['_route' => 'a', 'a' => 'foo/'], $matcher->match('/foo/'));
-    }
-
-    public function testTrailingRequirementWithDefault()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-        $coll->add('b', new Route('/en-en/{b}', ['b' => 'bbb'], ['b' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', 'a' => 'aaa'], $matcher->match('/fr-fr'));
-        $this->assertEquals(['_route' => 'a', 'a' => 'AAA'], $matcher->match('/fr-fr/AAA'));
-        $this->assertEquals(['_route' => 'b', 'b' => 'bbb'], $matcher->match('/en-en'));
-        $this->assertEquals(['_route' => 'b', 'b' => 'BBB'], $matcher->match('/en-en/BBB'));
-    }
-
-    public function testTrailingRequirementWithDefault_A()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->expectException(ResourceNotFoundException::class);
-        $matcher->match('/fr-fr/');
-    }
-
-    public function testTrailingRequirementWithDefault_B()
-    {
-        $coll = new RouteCollection();
-        $coll->add('b', new Route('/en-en/{b}', ['b' => 'bbb'], ['b' => '.*']));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'b', 'b' => ''], $matcher->match('/en-en/'));
-    }
-
-    public function testRestrictiveTrailingRequirementWithStaticRouteAfter()
-    {
-        $coll = new RouteCollection();
-        $coll->add('a', new Route('/hello{_}', [], ['_' => '/(?!/)']));
-        $coll->add('b', new Route('/hello'));
-
-        $matcher = $this->getUrlMatcher($coll);
-
-        $this->assertEquals(['_route' => 'a', '_' => '/'], $matcher->match('/hello/'));
-    }
-
-    protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null)
-    {
-        return new UrlMatcher($routes, $context ?: new RequestContext());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RequestContextTest.php b/vendor/symfony/routing/Tests/RequestContextTest.php
deleted file mode 100644
index 3d23b0e8..00000000
--- a/vendor/symfony/routing/Tests/RequestContextTest.php
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RequestContext;
-
-class RequestContextTest extends TestCase
-{
-    public function testConstruct()
-    {
-        $requestContext = new RequestContext(
-            'foo',
-            'post',
-            'foo.bar',
-            'HTTPS',
-            8080,
-            444,
-            '/baz',
-            'bar=foobar'
-        );
-
-        $this->assertEquals('foo', $requestContext->getBaseUrl());
-        $this->assertEquals('POST', $requestContext->getMethod());
-        $this->assertEquals('foo.bar', $requestContext->getHost());
-        $this->assertEquals('https', $requestContext->getScheme());
-        $this->assertSame(8080, $requestContext->getHttpPort());
-        $this->assertSame(444, $requestContext->getHttpsPort());
-        $this->assertEquals('/baz', $requestContext->getPathInfo());
-        $this->assertEquals('bar=foobar', $requestContext->getQueryString());
-    }
-
-    public function testFromRequest()
-    {
-        $request = Request::create('https://test.com:444/foo?bar=baz');
-        $requestContext = new RequestContext();
-        $requestContext->setHttpPort(123);
-        $requestContext->fromRequest($request);
-
-        $this->assertEquals('', $requestContext->getBaseUrl());
-        $this->assertEquals('GET', $requestContext->getMethod());
-        $this->assertEquals('test.com', $requestContext->getHost());
-        $this->assertEquals('https', $requestContext->getScheme());
-        $this->assertEquals('/foo', $requestContext->getPathInfo());
-        $this->assertEquals('bar=baz', $requestContext->getQueryString());
-        $this->assertSame(123, $requestContext->getHttpPort());
-        $this->assertSame(444, $requestContext->getHttpsPort());
-
-        $request = Request::create('http://test.com:8080/foo?bar=baz');
-        $requestContext = new RequestContext();
-        $requestContext->setHttpsPort(567);
-        $requestContext->fromRequest($request);
-
-        $this->assertSame(8080, $requestContext->getHttpPort());
-        $this->assertSame(567, $requestContext->getHttpsPort());
-    }
-
-    public function testGetParameters()
-    {
-        $requestContext = new RequestContext();
-        $this->assertEquals([], $requestContext->getParameters());
-
-        $requestContext->setParameters(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $requestContext->getParameters());
-    }
-
-    public function testHasParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameters(['foo' => 'bar']);
-
-        $this->assertTrue($requestContext->hasParameter('foo'));
-        $this->assertFalse($requestContext->hasParameter('baz'));
-    }
-
-    public function testGetParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameters(['foo' => 'bar']);
-
-        $this->assertEquals('bar', $requestContext->getParameter('foo'));
-        $this->assertNull($requestContext->getParameter('baz'));
-    }
-
-    public function testSetParameter()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setParameter('foo', 'bar');
-
-        $this->assertEquals('bar', $requestContext->getParameter('foo'));
-    }
-
-    public function testMethod()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setMethod('post');
-
-        $this->assertSame('POST', $requestContext->getMethod());
-    }
-
-    public function testScheme()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setScheme('HTTPS');
-
-        $this->assertSame('https', $requestContext->getScheme());
-    }
-
-    public function testHost()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setHost('eXampLe.com');
-
-        $this->assertSame('example.com', $requestContext->getHost());
-    }
-
-    public function testQueryString()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setQueryString(null);
-
-        $this->assertSame('', $requestContext->getQueryString());
-    }
-
-    public function testPort()
-    {
-        $requestContext = new RequestContext();
-        $requestContext->setHttpPort('123');
-        $requestContext->setHttpsPort('456');
-
-        $this->assertSame(123, $requestContext->getHttpPort());
-        $this->assertSame(456, $requestContext->getHttpsPort());
-    }
-
-    public function testFluentInterface()
-    {
-        $requestContext = new RequestContext();
-
-        $this->assertSame($requestContext, $requestContext->setBaseUrl('/app.php'));
-        $this->assertSame($requestContext, $requestContext->setPathInfo('/index'));
-        $this->assertSame($requestContext, $requestContext->setMethod('POST'));
-        $this->assertSame($requestContext, $requestContext->setScheme('https'));
-        $this->assertSame($requestContext, $requestContext->setHost('example.com'));
-        $this->assertSame($requestContext, $requestContext->setQueryString('foo=bar'));
-        $this->assertSame($requestContext, $requestContext->setHttpPort(80));
-        $this->assertSame($requestContext, $requestContext->setHttpsPort(443));
-        $this->assertSame($requestContext, $requestContext->setParameters([]));
-        $this->assertSame($requestContext, $requestContext->setParameter('foo', 'bar'));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php b/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php
deleted file mode 100644
index f5042749..00000000
--- a/vendor/symfony/routing/Tests/RouteCollectionBuilderTest.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Loader\YamlFileLoader;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\RouteCollectionBuilder;
-
-class RouteCollectionBuilderTest extends TestCase
-{
-    public function testImport()
-    {
-        $resolvedLoader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $resolver = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderResolverInterface')->getMock();
-        $resolver->expects($this->once())
-            ->method('resolve')
-            ->with('admin_routing.yml', 'yaml')
-            ->willReturn($resolvedLoader);
-
-        $originalRoute = new Route('/foo/path');
-        $expectedCollection = new RouteCollection();
-        $expectedCollection->add('one_test_route', $originalRoute);
-        $expectedCollection->addResource(new FileResource(__DIR__.'/Fixtures/file_resource.yml'));
-
-        $resolvedLoader
-            ->expects($this->once())
-            ->method('load')
-            ->with('admin_routing.yml', 'yaml')
-            ->willReturn($expectedCollection);
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $loader->expects($this->any())
-            ->method('getResolver')
-            ->willReturn($resolver);
-
-        // import the file!
-        $routes = new RouteCollectionBuilder($loader);
-        $importedRoutes = $routes->import('admin_routing.yml', '/', 'yaml');
-
-        // we should get back a RouteCollectionBuilder
-        $this->assertInstanceOf('Symfony\Component\Routing\RouteCollectionBuilder', $importedRoutes);
-
-        // get the collection back so we can look at it
-        $addedCollection = $importedRoutes->build();
-        $route = $addedCollection->get('one_test_route');
-        $this->assertSame($originalRoute, $route);
-        // should return file_resource.yml, which is in the original collection
-        $this->assertCount(1, $addedCollection->getResources());
-
-        // make sure the routes were imported into the top-level builder
-        $routeCollection = $routes->build();
-        $this->assertCount(1, $routes->build());
-        $this->assertCount(1, $routeCollection->getResources());
-    }
-
-    public function testImportAddResources()
-    {
-        $routeCollectionBuilder = new RouteCollectionBuilder(new YamlFileLoader(new FileLocator([__DIR__.'/Fixtures/'])));
-        $routeCollectionBuilder->import('file_resource.yml');
-        $routeCollection = $routeCollectionBuilder->build();
-
-        $this->assertCount(1, $routeCollection->getResources());
-    }
-
-    public function testImportWithoutLoaderThrowsException()
-    {
-        $this->expectException('BadMethodCallException');
-        $collectionBuilder = new RouteCollectionBuilder();
-        $collectionBuilder->import('routing.yml');
-    }
-
-    public function testAdd()
-    {
-        $collectionBuilder = new RouteCollectionBuilder();
-
-        $addedRoute = $collectionBuilder->add('/checkout', 'AppBundle:Order:checkout');
-        $addedRoute2 = $collectionBuilder->add('/blogs', 'AppBundle:Blog:list', 'blog_list');
-        $this->assertInstanceOf('Symfony\Component\Routing\Route', $addedRoute);
-        $this->assertEquals('AppBundle:Order:checkout', $addedRoute->getDefault('_controller'));
-
-        $finalCollection = $collectionBuilder->build();
-        $this->assertSame($addedRoute2, $finalCollection->get('blog_list'));
-    }
-
-    public function testFlushOrdering()
-    {
-        $importedCollection = new RouteCollection();
-        $importedCollection->add('imported_route1', new Route('/imported/foo1'));
-        $importedCollection->add('imported_route2', new Route('/imported/foo2'));
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        // make this loader able to do the import - keeps mocking simple
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->once())
-            ->method('load')
-            ->willReturn($importedCollection);
-
-        $routes = new RouteCollectionBuilder($loader);
-
-        // 1) Add a route
-        $routes->add('/checkout', 'AppBundle:Order:checkout', 'checkout_route');
-        // 2) Import from a file
-        $routes->mount('/', $routes->import('admin_routing.yml'));
-        // 3) Add another route
-        $routes->add('/', 'AppBundle:Default:homepage', 'homepage');
-        // 4) Add another route
-        $routes->add('/admin', 'AppBundle:Admin:dashboard', 'admin_dashboard');
-
-        // set a default value
-        $routes->setDefault('_locale', 'fr');
-
-        $actualCollection = $routes->build();
-
-        $this->assertCount(5, $actualCollection);
-        $actualRouteNames = array_keys($actualCollection->all());
-        $this->assertEquals([
-            'checkout_route',
-            'imported_route1',
-            'imported_route2',
-            'homepage',
-            'admin_dashboard',
-        ], $actualRouteNames);
-
-        // make sure the defaults were set
-        $checkoutRoute = $actualCollection->get('checkout_route');
-        $defaults = $checkoutRoute->getDefaults();
-        $this->assertArrayHasKey('_locale', $defaults);
-        $this->assertEquals('fr', $defaults['_locale']);
-    }
-
-    public function testFlushSetsRouteNames()
-    {
-        $collectionBuilder = new RouteCollectionBuilder();
-
-        // add a "named" route
-        $collectionBuilder->add('/admin', 'AppBundle:Admin:dashboard', 'admin_dashboard');
-        // add an unnamed route
-        $collectionBuilder->add('/blogs', 'AppBundle:Blog:list')
-            ->setMethods(['GET']);
-
-        // integer route names are allowed - they don't confuse things
-        $collectionBuilder->add('/products', 'AppBundle:Product:list', 100);
-
-        $actualCollection = $collectionBuilder->build();
-        $actualRouteNames = array_keys($actualCollection->all());
-        $this->assertEquals([
-            'admin_dashboard',
-            'GET_blogs',
-            '100',
-        ], $actualRouteNames);
-    }
-
-    public function testFlushSetsDetailsOnChildrenRoutes()
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $routes->add('/blogs/{page}', 'listAction', 'blog_list')
-            // unique things for the route
-            ->setDefault('page', 1)
-            ->setRequirement('id', '\d+')
-            ->setOption('expose', true)
-            // things that the collection will try to override (but won't)
-            ->setDefault('_format', 'html')
-            ->setRequirement('_format', 'json|xml')
-            ->setOption('fooBar', true)
-            ->setHost('example.com')
-            ->setCondition('request.isSecure()')
-            ->setSchemes(['https'])
-            ->setMethods(['POST']);
-
-        // a simple route, nothing added to it
-        $routes->add('/blogs/{id}', 'editAction', 'blog_edit');
-
-        // configure the collection itself
-        $routes
-            // things that will not override the child route
-            ->setDefault('_format', 'json')
-            ->setRequirement('_format', 'xml')
-            ->setOption('fooBar', false)
-            ->setHost('symfony.com')
-            ->setCondition('request.query.get("page")==1')
-            // some unique things that should be set on the child
-            ->setDefault('_locale', 'fr')
-            ->setRequirement('_locale', 'fr|en')
-            ->setOption('niceRoute', true)
-            ->setSchemes(['http'])
-            ->setMethods(['GET', 'POST']);
-
-        $collection = $routes->build();
-        $actualListRoute = $collection->get('blog_list');
-
-        $this->assertEquals(1, $actualListRoute->getDefault('page'));
-        $this->assertEquals('\d+', $actualListRoute->getRequirement('id'));
-        $this->assertTrue($actualListRoute->getOption('expose'));
-        // none of these should be overridden
-        $this->assertEquals('html', $actualListRoute->getDefault('_format'));
-        $this->assertEquals('json|xml', $actualListRoute->getRequirement('_format'));
-        $this->assertTrue($actualListRoute->getOption('fooBar'));
-        $this->assertEquals('example.com', $actualListRoute->getHost());
-        $this->assertEquals('request.isSecure()', $actualListRoute->getCondition());
-        $this->assertEquals(['https'], $actualListRoute->getSchemes());
-        $this->assertEquals(['POST'], $actualListRoute->getMethods());
-        // inherited from the main collection
-        $this->assertEquals('fr', $actualListRoute->getDefault('_locale'));
-        $this->assertEquals('fr|en', $actualListRoute->getRequirement('_locale'));
-        $this->assertTrue($actualListRoute->getOption('niceRoute'));
-
-        $actualEditRoute = $collection->get('blog_edit');
-        // inherited from the collection
-        $this->assertEquals('symfony.com', $actualEditRoute->getHost());
-        $this->assertEquals('request.query.get("page")==1', $actualEditRoute->getCondition());
-        $this->assertEquals(['http'], $actualEditRoute->getSchemes());
-        $this->assertEquals(['GET', 'POST'], $actualEditRoute->getMethods());
-    }
-
-    /**
-     * @dataProvider providePrefixTests
-     */
-    public function testFlushPrefixesPaths($collectionPrefix, $routePath, $expectedPath)
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $routes->add($routePath, 'someController', 'test_route');
-
-        $outerRoutes = new RouteCollectionBuilder();
-        $outerRoutes->mount($collectionPrefix, $routes);
-
-        $collection = $outerRoutes->build();
-
-        $this->assertEquals($expectedPath, $collection->get('test_route')->getPath());
-    }
-
-    public function providePrefixTests()
-    {
-        $tests = [];
-        // empty prefix is of course ok
-        $tests[] = ['', '/foo', '/foo'];
-        // normal prefix - does not matter if it's a wildcard
-        $tests[] = ['/{admin}', '/foo', '/{admin}/foo'];
-        // shows that a prefix will always be given the starting slash
-        $tests[] = ['0', '/foo', '/0/foo'];
-
-        // spaces are ok, and double slahses at the end are cleaned
-        $tests[] = ['/ /', '/foo', '/ /foo'];
-
-        return $tests;
-    }
-
-    public function testFlushSetsPrefixedWithMultipleLevels()
-    {
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $routes = new RouteCollectionBuilder($loader);
-
-        $routes->add('homepage', 'MainController::homepageAction', 'homepage');
-
-        $adminRoutes = $routes->createBuilder();
-        $adminRoutes->add('/dashboard', 'AdminController::dashboardAction', 'admin_dashboard');
-
-        // embedded collection under /admin
-        $adminBlogRoutes = $routes->createBuilder();
-        $adminBlogRoutes->add('/new', 'BlogController::newAction', 'admin_blog_new');
-        // mount into admin, but before the parent collection has been mounted
-        $adminRoutes->mount('/blog', $adminBlogRoutes);
-
-        // now mount the /admin routes, above should all still be /blog/admin
-        $routes->mount('/admin', $adminRoutes);
-        // add a route after mounting
-        $adminRoutes->add('/users', 'AdminController::userAction', 'admin_users');
-
-        // add another sub-collection after the mount
-        $otherAdminRoutes = $routes->createBuilder();
-        $otherAdminRoutes->add('/sales', 'StatsController::indexAction', 'admin_stats_sales');
-        $adminRoutes->mount('/stats', $otherAdminRoutes);
-
-        // add a normal collection and see that it is also prefixed
-        $importedCollection = new RouteCollection();
-        $importedCollection->add('imported_route', new Route('/foo'));
-        // make this loader able to do the import - keeps mocking simple
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->any())
-            ->method('load')
-            ->willReturn($importedCollection);
-        // import this from the /admin route builder
-        $adminRoutes->import('admin.yml', '/imported');
-
-        $collection = $routes->build();
-        $this->assertEquals('/admin/dashboard', $collection->get('admin_dashboard')->getPath(), 'Routes before mounting have the prefix');
-        $this->assertEquals('/admin/users', $collection->get('admin_users')->getPath(), 'Routes after mounting have the prefix');
-        $this->assertEquals('/admin/blog/new', $collection->get('admin_blog_new')->getPath(), 'Sub-collections receive prefix even if mounted before parent prefix');
-        $this->assertEquals('/admin/stats/sales', $collection->get('admin_stats_sales')->getPath(), 'Sub-collections receive prefix if mounted after parent prefix');
-        $this->assertEquals('/admin/imported/foo', $collection->get('imported_route')->getPath(), 'Normal RouteCollections are also prefixed properly');
-    }
-
-    public function testAutomaticRouteNamesDoNotConflict()
-    {
-        $routes = new RouteCollectionBuilder();
-
-        $adminRoutes = $routes->createBuilder();
-        // route 1
-        $adminRoutes->add('/dashboard', '');
-
-        $accountRoutes = $routes->createBuilder();
-        // route 2
-        $accountRoutes->add('/dashboard', '')
-            ->setMethods(['GET']);
-        // route 3
-        $accountRoutes->add('/dashboard', '')
-            ->setMethods(['POST']);
-
-        $routes->mount('/admin', $adminRoutes);
-        $routes->mount('/account', $accountRoutes);
-
-        $collection = $routes->build();
-        // there are 2 routes (i.e. with non-conflicting names)
-        $this->assertCount(3, $collection->all());
-    }
-
-    public function testAddsThePrefixOnlyOnceWhenLoadingMultipleCollections()
-    {
-        $firstCollection = new RouteCollection();
-        $firstCollection->add('a', new Route('/a'));
-
-        $secondCollection = new RouteCollection();
-        $secondCollection->add('b', new Route('/b'));
-
-        $loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $loader->expects($this->any())
-            ->method('supports')
-            ->willReturn(true);
-        $loader
-            ->expects($this->any())
-            ->method('load')
-            ->willReturn([$firstCollection, $secondCollection]);
-
-        $routeCollectionBuilder = new RouteCollectionBuilder($loader);
-        $routeCollectionBuilder->import('/directory/recurse/*', '/other/', 'glob');
-        $routes = $routeCollectionBuilder->build()->all();
-
-        $this->assertCount(2, $routes);
-        $this->assertEquals('/other/a', $routes['a']->getPath());
-        $this->assertEquals('/other/b', $routes['b']->getPath());
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCollectionTest.php b/vendor/symfony/routing/Tests/RouteCollectionTest.php
deleted file mode 100644
index f310d4e5..00000000
--- a/vendor/symfony/routing/Tests/RouteCollectionTest.php
+++ /dev/null
@@ -1,333 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Config\Resource\FileResource;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-
-class RouteCollectionTest extends TestCase
-{
-    public function testRoute()
-    {
-        $collection = new RouteCollection();
-        $route = new Route('/foo');
-        $collection->add('foo', $route);
-        $this->assertEquals(['foo' => $route], $collection->all(), '->add() adds a route');
-        $this->assertEquals($route, $collection->get('foo'), '->get() returns a route by name');
-        $this->assertNull($collection->get('bar'), '->get() returns null if a route does not exist');
-    }
-
-    public function testOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-        $collection->add('foo', new Route('/foo1'));
-
-        $this->assertEquals('/foo1', $collection->get('foo')->getPath());
-    }
-
-    public function testDeepOverriddenRoute()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/foo1'));
-
-        $collection2 = new RouteCollection();
-        $collection2->add('foo', new Route('/foo2'));
-
-        $collection1->addCollection($collection2);
-        $collection->addCollection($collection1);
-
-        $this->assertEquals('/foo2', $collection1->get('foo')->getPath());
-        $this->assertEquals('/foo2', $collection->get('foo')->getPath());
-    }
-
-    public function testIterator()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection1->add('foo', $foo = new Route('/foo-new'));
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $this->assertInstanceOf('\ArrayIterator', $collection->getIterator());
-        $this->assertSame(['bar' => $bar, 'foo' => $foo, 'last' => $last], $collection->getIterator()->getArrayCopy());
-    }
-
-    public function testCount()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', new Route('/bar'));
-        $collection->addCollection($collection1);
-
-        $this->assertCount(2, $collection);
-    }
-
-    public function testAddCollection()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection1->add('foo', $foo = new Route('/foo-new'));
-
-        $collection2 = new RouteCollection();
-        $collection2->add('grandchild', $grandchild = new Route('/grandchild'));
-
-        $collection1->addCollection($collection2);
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $this->assertSame(['bar' => $bar, 'foo' => $foo, 'grandchild' => $grandchild, 'last' => $last], $collection->all(),
-            '->addCollection() imports routes of another collection, overrides if necessary and adds them at the end');
-    }
-
-    public function testAddCollectionWithResources()
-    {
-        $collection = new RouteCollection();
-        $collection->addResource($foo = new FileResource(__DIR__.'/Fixtures/foo.xml'));
-        $collection1 = new RouteCollection();
-        $collection1->addResource($foo1 = new FileResource(__DIR__.'/Fixtures/foo1.xml'));
-        $collection->addCollection($collection1);
-        $this->assertEquals([$foo, $foo1], $collection->getResources(), '->addCollection() merges resources');
-    }
-
-    public function testAddDefaultsAndRequirementsAndOptions()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/{placeholder}'));
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', new Route('/{placeholder}',
-            ['_controller' => 'fixed', 'placeholder' => 'default'], ['placeholder' => '.+'], ['option' => 'value'])
-        );
-        $collection->addCollection($collection1);
-
-        $collection->addDefaults(['placeholder' => 'new-default']);
-        $this->assertEquals(['placeholder' => 'new-default'], $collection->get('foo')->getDefaults(), '->addDefaults() adds defaults to all routes');
-        $this->assertEquals(['_controller' => 'fixed', 'placeholder' => 'new-default'], $collection->get('bar')->getDefaults(),
-            '->addDefaults() adds defaults to all routes and overwrites existing ones');
-
-        $collection->addRequirements(['placeholder' => '\d+']);
-        $this->assertEquals(['placeholder' => '\d+'], $collection->get('foo')->getRequirements(), '->addRequirements() adds requirements to all routes');
-        $this->assertEquals(['placeholder' => '\d+'], $collection->get('bar')->getRequirements(),
-            '->addRequirements() adds requirements to all routes and overwrites existing ones');
-
-        $collection->addOptions(['option' => 'new-value']);
-        $this->assertEquals(
-            ['option' => 'new-value', 'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'],
-            $collection->get('bar')->getOptions(), '->addOptions() adds options to all routes and overwrites existing ones'
-        );
-    }
-
-    public function testAddPrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-        $collection2 = new RouteCollection();
-        $collection2->add('bar', $bar = new Route('/bar'));
-        $collection->addCollection($collection2);
-        $collection->addPrefix(' / ');
-        $this->assertSame('/foo', $collection->get('foo')->getPath(), '->addPrefix() trims the prefix and a single slash has no effect');
-        $collection->addPrefix('/{admin}', ['admin' => 'admin'], ['admin' => '\d+']);
-        $this->assertEquals('/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() adds a prefix to all routes');
-        $this->assertEquals('/{admin}/bar', $collection->get('bar')->getPath(), '->addPrefix() adds a prefix to all routes');
-        $this->assertEquals(['admin' => 'admin'], $collection->get('foo')->getDefaults(), '->addPrefix() adds defaults to all routes');
-        $this->assertEquals(['admin' => 'admin'], $collection->get('bar')->getDefaults(), '->addPrefix() adds defaults to all routes');
-        $this->assertEquals(['admin' => '\d+'], $collection->get('foo')->getRequirements(), '->addPrefix() adds requirements to all routes');
-        $this->assertEquals(['admin' => '\d+'], $collection->get('bar')->getRequirements(), '->addPrefix() adds requirements to all routes');
-        $collection->addPrefix('0');
-        $this->assertEquals('/0/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() ensures a prefix must start with a slash and must not end with a slash');
-        $collection->addPrefix('/ /');
-        $this->assertSame('/ /0/{admin}/foo', $collection->get('foo')->getPath(), '->addPrefix() can handle spaces if desired');
-        $this->assertSame('/ /0/{admin}/bar', $collection->get('bar')->getPath(), 'the route pattern of an added collection is in synch with the added prefix');
-    }
-
-    public function testAddPrefixOverridesDefaultsAndRequirements()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo.{_format}'));
-        $collection->add('bar', $bar = new Route('/bar.{_format}', [], ['_format' => 'json']));
-        $collection->addPrefix('/admin', [], ['_format' => 'html']);
-
-        $this->assertEquals('html', $collection->get('foo')->getRequirement('_format'), '->addPrefix() overrides existing requirements');
-        $this->assertEquals('html', $collection->get('bar')->getRequirement('_format'), '->addPrefix() overrides existing requirements');
-    }
-
-    public function testResource()
-    {
-        $collection = new RouteCollection();
-        $collection->addResource($foo = new FileResource(__DIR__.'/Fixtures/foo.xml'));
-        $collection->addResource($bar = new FileResource(__DIR__.'/Fixtures/bar.xml'));
-        $collection->addResource(new FileResource(__DIR__.'/Fixtures/foo.xml'));
-
-        $this->assertEquals([$foo, $bar], $collection->getResources(),
-            '->addResource() adds a resource and getResources() only returns unique ones by comparing the string representation');
-    }
-
-    public function testUniqueRouteWithGivenName()
-    {
-        $collection1 = new RouteCollection();
-        $collection1->add('foo', new Route('/old'));
-        $collection2 = new RouteCollection();
-        $collection3 = new RouteCollection();
-        $collection3->add('foo', $new = new Route('/new'));
-
-        $collection2->addCollection($collection3);
-        $collection1->addCollection($collection2);
-
-        $this->assertSame($new, $collection1->get('foo'), '->get() returns new route that overrode previous one');
-        // size of 1 because collection1 contains /new but not /old anymore
-        $this->assertCount(1, $collection1->getIterator(), '->addCollection() removes previous routes when adding new routes with the same name');
-    }
-
-    public function testGet()
-    {
-        $collection1 = new RouteCollection();
-        $collection1->add('a', $a = new Route('/a'));
-        $collection2 = new RouteCollection();
-        $collection2->add('b', $b = new Route('/b'));
-        $collection1->addCollection($collection2);
-        $collection1->add('$péß^a|', $c = new Route('/special'));
-
-        $this->assertSame($b, $collection1->get('b'), '->get() returns correct route in child collection');
-        $this->assertSame($c, $collection1->get('$péß^a|'), '->get() can handle special characters');
-        $this->assertNull($collection2->get('a'), '->get() does not return the route defined in parent collection');
-        $this->assertNull($collection1->get('non-existent'), '->get() returns null when route does not exist');
-        $this->assertNull($collection1->get(0), '->get() does not disclose internal child RouteCollection');
-    }
-
-    public function testRemove()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-
-        $collection1 = new RouteCollection();
-        $collection1->add('bar', $bar = new Route('/bar'));
-        $collection->addCollection($collection1);
-        $collection->add('last', $last = new Route('/last'));
-
-        $collection->remove('foo');
-        $this->assertSame(['bar' => $bar, 'last' => $last], $collection->all(), '->remove() can remove a single route');
-        $collection->remove(['bar', 'last']);
-        $this->assertSame([], $collection->all(), '->remove() accepts an array and can remove multiple routes at once');
-    }
-
-    public function testSetHost()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a');
-        $routeb = new Route('/b', [], [], [], '{locale}.example.net');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setHost('{locale}.example.com');
-
-        $this->assertEquals('{locale}.example.com', $routea->getHost());
-        $this->assertEquals('{locale}.example.com', $routeb->getHost());
-    }
-
-    public function testSetCondition()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a');
-        $routeb = new Route('/b', [], [], [], '{locale}.example.net', [], [], 'context.getMethod() == "GET"');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setCondition('context.getMethod() == "POST"');
-
-        $this->assertEquals('context.getMethod() == "POST"', $routea->getCondition());
-        $this->assertEquals('context.getMethod() == "POST"', $routeb->getCondition());
-    }
-
-    public function testClone()
-    {
-        $collection = new RouteCollection();
-        $collection->add('a', new Route('/a'));
-        $collection->add('b', new Route('/b', ['placeholder' => 'default'], ['placeholder' => '.+']));
-
-        $clonedCollection = clone $collection;
-
-        $this->assertCount(2, $clonedCollection);
-        $this->assertEquals($collection->get('a'), $clonedCollection->get('a'));
-        $this->assertNotSame($collection->get('a'), $clonedCollection->get('a'));
-        $this->assertEquals($collection->get('b'), $clonedCollection->get('b'));
-        $this->assertNotSame($collection->get('b'), $clonedCollection->get('b'));
-    }
-
-    public function testSetSchemes()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a', [], [], [], '', 'http');
-        $routeb = new Route('/b');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setSchemes(['http', 'https']);
-
-        $this->assertEquals(['http', 'https'], $routea->getSchemes());
-        $this->assertEquals(['http', 'https'], $routeb->getSchemes());
-    }
-
-    public function testSetMethods()
-    {
-        $collection = new RouteCollection();
-        $routea = new Route('/a', [], [], [], '', [], ['GET', 'POST']);
-        $routeb = new Route('/b');
-        $collection->add('a', $routea);
-        $collection->add('b', $routeb);
-
-        $collection->setMethods('PUT');
-
-        $this->assertEquals(['PUT'], $routea->getMethods());
-        $this->assertEquals(['PUT'], $routeb->getMethods());
-    }
-
-    public function testAddNamePrefix()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', $foo = new Route('/foo'));
-        $collection->add('bar', $bar = new Route('/bar'));
-        $collection->add('api_foo', $apiFoo = new Route('/api/foo'));
-        $collection->addNamePrefix('api_');
-
-        $this->assertEquals($foo, $collection->get('api_foo'));
-        $this->assertEquals($bar, $collection->get('api_bar'));
-        $this->assertEquals($apiFoo, $collection->get('api_api_foo'));
-        $this->assertNull($collection->get('foo'));
-        $this->assertNull($collection->get('bar'));
-    }
-
-    public function testAddNamePrefixCanonicalRouteName()
-    {
-        $collection = new RouteCollection();
-        $collection->add('foo', new Route('/foo', ['_canonical_route' => 'foo']));
-        $collection->add('bar', new Route('/bar', ['_canonical_route' => 'bar']));
-        $collection->add('api_foo', new Route('/api/foo', ['_canonical_route' => 'api_foo']));
-        $collection->addNamePrefix('api_');
-
-        $this->assertEquals('api_foo', $collection->get('api_foo')->getDefault('_canonical_route'));
-        $this->assertEquals('api_bar', $collection->get('api_bar')->getDefault('_canonical_route'));
-        $this->assertEquals('api_api_foo', $collection->get('api_api_foo')->getDefault('_canonical_route'));
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouteCompilerTest.php b/vendor/symfony/routing/Tests/RouteCompilerTest.php
deleted file mode 100644
index a54e18b5..00000000
--- a/vendor/symfony/routing/Tests/RouteCompilerTest.php
+++ /dev/null
@@ -1,398 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCompiler;
-
-class RouteCompilerTest extends TestCase
-{
-    /**
-     * @dataProvider provideCompileData
-     */
-    public function testCompile($name, $arguments, $prefix, $regex, $variables, $tokens)
-    {
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, $compiled->getRegex(), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-    }
-
-    public function provideCompileData()
-    {
-        return [
-            [
-                'Static route',
-                ['/foo'],
-                '/foo', '#^/foo$#sD', [], [
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable',
-                ['/foo/{bar}'],
-                '/foo', '#^/foo/(?P<bar>[^/]++)$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable that has a default value',
-                ['/foo/{bar}', ['bar' => 'bar']],
-                '/foo', '#^/foo(?:/(?P<bar>[^/]++))?$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables',
-                ['/foo/{bar}/{foobar}'],
-                '/foo', '#^/foo/(?P<bar>[^/]++)/(?P<foobar>[^/]++)$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables that have default values',
-                ['/foo/{bar}/{foobar}', ['bar' => 'bar', 'foobar' => '']],
-                '/foo', '#^/foo(?:/(?P<bar>[^/]++)(?:/(?P<foobar>[^/]++))?)?$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with several variables but some of them have no default values',
-                ['/foo/{bar}/{foobar}', ['bar' => 'bar']],
-                '/foo', '#^/foo/(?P<bar>[^/]++)/(?P<foobar>[^/]++)$#sD', ['bar', 'foobar'], [
-                    ['variable', '/', '[^/]++', 'foobar'],
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with an optional variable as the first segment',
-                ['/{bar}', ['bar' => 'bar']],
-                '', '#^/(?P<bar>[^/]++)?$#sD', ['bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with a requirement of 0',
-                ['/{bar}', ['bar' => null], ['bar' => '0']],
-                '', '#^/(?P<bar>0)?$#sD', ['bar'], [
-                    ['variable', '/', '0', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with an optional variable as the first segment with requirements',
-                ['/{bar}', ['bar' => 'bar'], ['bar' => '(foo|bar)']],
-                '', '#^/(?P<bar>(?:foo|bar))?$#sD', ['bar'], [
-                    ['variable', '/', '(?:foo|bar)', 'bar'],
-                ],
-            ],
-
-            [
-                'Route with only optional variables',
-                ['/{foo}/{bar}', ['foo' => 'foo', 'bar' => 'bar']],
-                '', '#^/(?P<foo>[^/]++)?(?:/(?P<bar>[^/]++))?$#sD', ['foo', 'bar'], [
-                    ['variable', '/', '[^/]++', 'bar'],
-                    ['variable', '/', '[^/]++', 'foo'],
-                ],
-            ],
-
-            [
-                'Route with a variable in last position',
-                ['/foo-{bar}'],
-                '/foo-', '#^/foo\-(?P<bar>[^/]++)$#sD', ['bar'], [
-                    ['variable', '-', '[^/]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Route with nested placeholders',
-                ['/{static{var}static}'],
-                '/{static', '#^/\{static(?P<var>[^/]+)static\}$#sD', ['var'], [
-                    ['text', 'static}'],
-                    ['variable', '', '[^/]+', 'var'],
-                    ['text', '/{static'],
-                ],
-            ],
-
-            [
-                'Route without separator between variables',
-                ['/{w}{x}{y}{z}.{_format}', ['z' => 'default-z', '_format' => 'html'], ['y' => '(y|Y)']],
-                '', '#^/(?P<w>[^/\.]+)(?P<x>[^/\.]+)(?P<y>(?:y|Y))(?:(?P<z>[^/\.]++)(?:\.(?P<_format>[^/]++))?)?$#sD', ['w', 'x', 'y', 'z', '_format'], [
-                    ['variable', '.', '[^/]++', '_format'],
-                    ['variable', '', '[^/\.]++', 'z'],
-                    ['variable', '', '(?:y|Y)', 'y'],
-                    ['variable', '', '[^/\.]+', 'x'],
-                    ['variable', '/', '[^/\.]+', 'w'],
-                ],
-            ],
-
-            [
-                'Route with a format',
-                ['/foo/{bar}.{_format}'],
-                '/foo', '#^/foo/(?P<bar>[^/\.]++)\.(?P<_format>[^/]++)$#sD', ['bar', '_format'], [
-                    ['variable', '.', '[^/]++', '_format'],
-                    ['variable', '/', '[^/\.]++', 'bar'],
-                    ['text', '/foo'],
-                ],
-            ],
-
-            [
-                'Static non UTF-8 route',
-                ["/fo\xE9"],
-                "/fo\xE9", "#^/fo\xE9$#sD", [], [
-                    ['text', "/fo\xE9"],
-                ],
-            ],
-
-            [
-                'Route with an explicit UTF-8 requirement',
-                ['/{bar}', ['bar' => null], ['bar' => '.'], ['utf8' => true]],
-                '', '#^/(?P<bar>.)?$#sDu', ['bar'], [
-                    ['variable', '/', '.', 'bar', true],
-                ],
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider provideCompileImplicitUtf8Data
-     */
-    public function testCompileImplicitUtf8Data($name, $arguments, $prefix, $regex, $variables, $tokens, $deprecationType)
-    {
-        $this->expectException('LogicException');
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, $compiled->getRegex(), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-    }
-
-    public function provideCompileImplicitUtf8Data()
-    {
-        return [
-            [
-                'Static UTF-8 route',
-                ['/foé'],
-                '/foé', '#^/foé$#sDu', [], [
-                    ['text', '/foé'],
-                ],
-                'patterns',
-            ],
-
-            [
-                'Route with an implicit UTF-8 requirement',
-                ['/{bar}', ['bar' => null], ['bar' => 'é']],
-                '', '#^/(?P<bar>é)?$#sDu', ['bar'], [
-                    ['variable', '/', 'é', 'bar', true],
-                ],
-                'requirements',
-            ],
-
-            [
-                'Route with a UTF-8 class requirement',
-                ['/{bar}', ['bar' => null], ['bar' => '\pM']],
-                '', '#^/(?P<bar>\pM)?$#sDu', ['bar'], [
-                    ['variable', '/', '\pM', 'bar', true],
-                ],
-                'requirements',
-            ],
-
-            [
-                'Route with a UTF-8 separator',
-                ['/foo/{bar}§{_format}', [], [], ['compiler_class' => Utf8RouteCompiler::class]],
-                '/foo', '#^/foo/(?P<bar>[^/§]++)§(?P<_format>[^/]++)$#sDu', ['bar', '_format'], [
-                    ['variable', '§', '[^/]++', '_format', true],
-                    ['variable', '/', '[^/§]++', 'bar', true],
-                    ['text', '/foo'],
-                ],
-                'patterns',
-            ],
-        ];
-    }
-
-    public function testRouteWithSameVariableTwice()
-    {
-        $this->expectException('LogicException');
-        $route = new Route('/{name}/{name}');
-
-        $compiled = $route->compile();
-    }
-
-    public function testRouteCharsetMismatch()
-    {
-        $this->expectException('LogicException');
-        $route = new Route("/\xE9/{bar}", [], ['bar' => '.'], ['utf8' => true]);
-
-        $compiled = $route->compile();
-    }
-
-    public function testRequirementCharsetMismatch()
-    {
-        $this->expectException('LogicException');
-        $route = new Route('/foo/{bar}', [], ['bar' => "\xE9"], ['utf8' => true]);
-
-        $compiled = $route->compile();
-    }
-
-    public function testRouteWithFragmentAsPathParameter()
-    {
-        $this->expectException('InvalidArgumentException');
-        $route = new Route('/{_fragment}');
-
-        $compiled = $route->compile();
-    }
-
-    /**
-     * @dataProvider getVariableNamesStartingWithADigit
-     */
-    public function testRouteWithVariableNameStartingWithADigit($name)
-    {
-        $this->expectException('DomainException');
-        $route = new Route('/{'.$name.'}');
-        $route->compile();
-    }
-
-    public function getVariableNamesStartingWithADigit()
-    {
-        return [
-           ['09'],
-           ['123'],
-           ['1e2'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideCompileWithHostData
-     */
-    public function testCompileWithHost($name, $arguments, $prefix, $regex, $variables, $pathVariables, $tokens, $hostRegex, $hostVariables, $hostTokens)
-    {
-        $r = new \ReflectionClass('Symfony\\Component\\Routing\\Route');
-        $route = $r->newInstanceArgs($arguments);
-
-        $compiled = $route->compile();
-        $this->assertEquals($prefix, $compiled->getStaticPrefix(), $name.' (static prefix)');
-        $this->assertEquals($regex, str_replace(["\n", ' '], '', $compiled->getRegex()), $name.' (regex)');
-        $this->assertEquals($variables, $compiled->getVariables(), $name.' (variables)');
-        $this->assertEquals($pathVariables, $compiled->getPathVariables(), $name.' (path variables)');
-        $this->assertEquals($tokens, $compiled->getTokens(), $name.' (tokens)');
-        $this->assertEquals($hostRegex, str_replace(["\n", ' '], '', $compiled->getHostRegex()), $name.' (host regex)');
-        $this->assertEquals($hostVariables, $compiled->getHostVariables(), $name.' (host variables)');
-        $this->assertEquals($hostTokens, $compiled->getHostTokens(), $name.' (host tokens)');
-    }
-
-    public function provideCompileWithHostData()
-    {
-        return [
-            [
-                'Route with host pattern',
-                ['/hello', [], [], [], 'www.example.com'],
-                '/hello', '#^/hello$#sD', [], [], [
-                    ['text', '/hello'],
-                ],
-                '#^www\.example\.com$#sDi', [], [
-                    ['text', 'www.example.com'],
-                ],
-            ],
-            [
-                'Route with host pattern and some variables',
-                ['/hello/{name}', [], [], [], 'www.example.{tld}'],
-                '/hello', '#^/hello/(?P<name>[^/]++)$#sD', ['tld', 'name'], ['name'], [
-                    ['variable', '/', '[^/]++', 'name'],
-                    ['text', '/hello'],
-                ],
-                '#^www\.example\.(?P<tld>[^\.]++)$#sDi', ['tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', 'www.example'],
-                ],
-            ],
-            [
-                'Route with variable at beginning of host',
-                ['/hello', [], [], [], '{locale}.example.{tld}'],
-                '/hello', '#^/hello$#sD', ['locale', 'tld'], [], [
-                    ['text', '/hello'],
-                ],
-                '#^(?P<locale>[^\.]++)\.example\.(?P<tld>[^\.]++)$#sDi', ['locale', 'tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', '.example'],
-                    ['variable', '', '[^\.]++', 'locale'],
-                ],
-            ],
-            [
-                'Route with host variables that has a default value',
-                ['/hello', ['locale' => 'a', 'tld' => 'b'], [], [], '{locale}.example.{tld}'],
-                '/hello', '#^/hello$#sD', ['locale', 'tld'], [], [
-                    ['text', '/hello'],
-                ],
-                '#^(?P<locale>[^\.]++)\.example\.(?P<tld>[^\.]++)$#sDi', ['locale', 'tld'], [
-                    ['variable', '.', '[^\.]++', 'tld'],
-                    ['text', '.example'],
-                    ['variable', '', '[^\.]++', 'locale'],
-                ],
-            ],
-        ];
-    }
-
-    public function testRouteWithTooLongVariableName()
-    {
-        $this->expectException('DomainException');
-        $route = new Route(sprintf('/{%s}', str_repeat('a', RouteCompiler::VARIABLE_MAXIMUM_LENGTH + 1)));
-        $route->compile();
-    }
-
-    /**
-     * @dataProvider provideRemoveCapturingGroup
-     */
-    public function testRemoveCapturingGroup($regex, $requirement)
-    {
-        $route = new Route('/{foo}', [], ['foo' => $requirement]);
-
-        $this->assertSame($regex, $route->compile()->getRegex());
-    }
-
-    public function provideRemoveCapturingGroup()
-    {
-        yield ['#^/(?P<foo>a(?:b|c)(?:d|e)f)$#sD', 'a(b|c)(d|e)f'];
-        yield ['#^/(?P<foo>a\(b\)c)$#sD', 'a\(b\)c'];
-        yield ['#^/(?P<foo>(?:b))$#sD', '(?:b)'];
-        yield ['#^/(?P<foo>(?(b)b))$#sD', '(?(b)b)'];
-        yield ['#^/(?P<foo>(*F))$#sD', '(*F)'];
-        yield ['#^/(?P<foo>(?:(?:foo)))$#sD', '((foo))'];
-    }
-}
-
-class Utf8RouteCompiler extends RouteCompiler
-{
-    const SEPARATORS = '/§';
-}
diff --git a/vendor/symfony/routing/Tests/RouteTest.php b/vendor/symfony/routing/Tests/RouteTest.php
deleted file mode 100644
index 6add1337..00000000
--- a/vendor/symfony/routing/Tests/RouteTest.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\Routing\Route;
-
-class RouteTest extends TestCase
-{
-    public function testConstructor()
-    {
-        $route = new Route('/{foo}', ['foo' => 'bar'], ['foo' => '\d+'], ['foo' => 'bar'], '{locale}.example.com');
-        $this->assertEquals('/{foo}', $route->getPath(), '__construct() takes a path as its first argument');
-        $this->assertEquals(['foo' => 'bar'], $route->getDefaults(), '__construct() takes defaults as its second argument');
-        $this->assertEquals(['foo' => '\d+'], $route->getRequirements(), '__construct() takes requirements as its third argument');
-        $this->assertEquals('bar', $route->getOption('foo'), '__construct() takes options as its fourth argument');
-        $this->assertEquals('{locale}.example.com', $route->getHost(), '__construct() takes a host pattern as its fifth argument');
-
-        $route = new Route('/', [], [], [], '', ['Https'], ['POST', 'put'], 'context.getMethod() == "GET"');
-        $this->assertEquals(['https'], $route->getSchemes(), '__construct() takes schemes as its sixth argument and lowercases it');
-        $this->assertEquals(['POST', 'PUT'], $route->getMethods(), '__construct() takes methods as its seventh argument and uppercases it');
-        $this->assertEquals('context.getMethod() == "GET"', $route->getCondition(), '__construct() takes a condition as its eight argument');
-
-        $route = new Route('/', [], [], [], '', 'Https', 'Post');
-        $this->assertEquals(['https'], $route->getSchemes(), '__construct() takes a single scheme as its sixth argument');
-        $this->assertEquals(['POST'], $route->getMethods(), '__construct() takes a single method as its seventh argument');
-    }
-
-    public function testPath()
-    {
-        $route = new Route('/{foo}');
-        $route->setPath('/{bar}');
-        $this->assertEquals('/{bar}', $route->getPath(), '->setPath() sets the path');
-        $route->setPath('');
-        $this->assertEquals('/', $route->getPath(), '->setPath() adds a / at the beginning of the path if needed');
-        $route->setPath('bar');
-        $this->assertEquals('/bar', $route->getPath(), '->setPath() adds a / at the beginning of the path if needed');
-        $this->assertEquals($route, $route->setPath(''), '->setPath() implements a fluent interface');
-        $route->setPath('//path');
-        $this->assertEquals('/path', $route->getPath(), '->setPath() does not allow two slashes "//" at the beginning of the path as it would be confused with a network path when generating the path from the route');
-    }
-
-    public function testOptions()
-    {
-        $route = new Route('/{foo}');
-        $route->setOptions(['foo' => 'bar']);
-        $this->assertEquals(array_merge([
-        'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler',
-        ], ['foo' => 'bar']), $route->getOptions(), '->setOptions() sets the options');
-        $this->assertEquals($route, $route->setOptions([]), '->setOptions() implements a fluent interface');
-
-        $route->setOptions(['foo' => 'foo']);
-        $route->addOptions(['bar' => 'bar']);
-        $this->assertEquals($route, $route->addOptions([]), '->addOptions() implements a fluent interface');
-        $this->assertEquals(['foo' => 'foo', 'bar' => 'bar', 'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler'], $route->getOptions(), '->addDefaults() keep previous defaults');
-    }
-
-    public function testOption()
-    {
-        $route = new Route('/{foo}');
-        $this->assertFalse($route->hasOption('foo'), '->hasOption() return false if option is not set');
-        $this->assertEquals($route, $route->setOption('foo', 'bar'), '->setOption() implements a fluent interface');
-        $this->assertEquals('bar', $route->getOption('foo'), '->setOption() sets the option');
-        $this->assertTrue($route->hasOption('foo'), '->hasOption() return true if option is set');
-    }
-
-    public function testDefaults()
-    {
-        $route = new Route('/{foo}');
-        $route->setDefaults(['foo' => 'bar']);
-        $this->assertEquals(['foo' => 'bar'], $route->getDefaults(), '->setDefaults() sets the defaults');
-        $this->assertEquals($route, $route->setDefaults([]), '->setDefaults() implements a fluent interface');
-
-        $route->setDefault('foo', 'bar');
-        $this->assertEquals('bar', $route->getDefault('foo'), '->setDefault() sets a default value');
-
-        $route->setDefault('foo2', 'bar2');
-        $this->assertEquals('bar2', $route->getDefault('foo2'), '->getDefault() return the default value');
-        $this->assertNull($route->getDefault('not_defined'), '->getDefault() return null if default value is not set');
-
-        $route->setDefault('_controller', $closure = function () { return 'Hello'; });
-        $this->assertEquals($closure, $route->getDefault('_controller'), '->setDefault() sets a default value');
-
-        $route->setDefaults(['foo' => 'foo']);
-        $route->addDefaults(['bar' => 'bar']);
-        $this->assertEquals($route, $route->addDefaults([]), '->addDefaults() implements a fluent interface');
-        $this->assertEquals(['foo' => 'foo', 'bar' => 'bar'], $route->getDefaults(), '->addDefaults() keep previous defaults');
-    }
-
-    public function testRequirements()
-    {
-        $route = new Route('/{foo}');
-        $route->setRequirements(['foo' => '\d+']);
-        $this->assertEquals(['foo' => '\d+'], $route->getRequirements(), '->setRequirements() sets the requirements');
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->getRequirement() returns a requirement');
-        $this->assertNull($route->getRequirement('bar'), '->getRequirement() returns null if a requirement is not defined');
-        $route->setRequirements(['foo' => '^\d+$']);
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->getRequirement() removes ^ and $ from the path');
-        $this->assertEquals($route, $route->setRequirements([]), '->setRequirements() implements a fluent interface');
-
-        $route->setRequirements(['foo' => '\d+']);
-        $route->addRequirements(['bar' => '\d+']);
-        $this->assertEquals($route, $route->addRequirements([]), '->addRequirements() implements a fluent interface');
-        $this->assertEquals(['foo' => '\d+', 'bar' => '\d+'], $route->getRequirements(), '->addRequirement() keep previous requirements');
-    }
-
-    public function testRequirement()
-    {
-        $route = new Route('/{foo}');
-        $this->assertFalse($route->hasRequirement('foo'), '->hasRequirement() return false if requirement is not set');
-        $route->setRequirement('foo', '^\d+$');
-        $this->assertEquals('\d+', $route->getRequirement('foo'), '->setRequirement() removes ^ and $ from the path');
-        $this->assertTrue($route->hasRequirement('foo'), '->hasRequirement() return true if requirement is set');
-    }
-
-    /**
-     * @dataProvider getInvalidRequirements
-     */
-    public function testSetInvalidRequirement($req)
-    {
-        $this->expectException('InvalidArgumentException');
-        $route = new Route('/{foo}');
-        $route->setRequirement('foo', $req);
-    }
-
-    public function getInvalidRequirements()
-    {
-        return [
-           [''],
-           [[]],
-           ['^$'],
-           ['^'],
-           ['$'],
-        ];
-    }
-
-    public function testHost()
-    {
-        $route = new Route('/');
-        $route->setHost('{locale}.example.net');
-        $this->assertEquals('{locale}.example.net', $route->getHost(), '->setHost() sets the host pattern');
-    }
-
-    public function testScheme()
-    {
-        $route = new Route('/');
-        $this->assertEquals([], $route->getSchemes(), 'schemes is initialized with []');
-        $this->assertFalse($route->hasScheme('http'));
-        $route->setSchemes('hTTp');
-        $this->assertEquals(['http'], $route->getSchemes(), '->setSchemes() accepts a single scheme string and lowercases it');
-        $this->assertTrue($route->hasScheme('htTp'));
-        $this->assertFalse($route->hasScheme('httpS'));
-        $route->setSchemes(['HttpS', 'hTTp']);
-        $this->assertEquals(['https', 'http'], $route->getSchemes(), '->setSchemes() accepts an array of schemes and lowercases them');
-        $this->assertTrue($route->hasScheme('htTp'));
-        $this->assertTrue($route->hasScheme('httpS'));
-    }
-
-    public function testMethod()
-    {
-        $route = new Route('/');
-        $this->assertEquals([], $route->getMethods(), 'methods is initialized with []');
-        $route->setMethods('gEt');
-        $this->assertEquals(['GET'], $route->getMethods(), '->setMethods() accepts a single method string and uppercases it');
-        $route->setMethods(['gEt', 'PosT']);
-        $this->assertEquals(['GET', 'POST'], $route->getMethods(), '->setMethods() accepts an array of methods and uppercases them');
-    }
-
-    public function testCondition()
-    {
-        $route = new Route('/');
-        $this->assertSame('', $route->getCondition());
-        $route->setCondition('context.getMethod() == "GET"');
-        $this->assertSame('context.getMethod() == "GET"', $route->getCondition());
-    }
-
-    public function testCompile()
-    {
-        $route = new Route('/{foo}');
-        $this->assertInstanceOf('Symfony\Component\Routing\CompiledRoute', $compiled = $route->compile(), '->compile() returns a compiled route');
-        $this->assertSame($compiled, $route->compile(), '->compile() only compiled the route once if unchanged');
-        $route->setRequirement('foo', '.*');
-        $this->assertNotSame($compiled, $route->compile(), '->compile() recompiles if the route was modified');
-    }
-
-    public function testSerialize()
-    {
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-
-        $serialized = serialize($route);
-        $unserialized = unserialize($serialized);
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-
-    public function testInlineDefaultAndRequirement()
-    {
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', null), new Route('/foo/{bar?}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz'), new Route('/foo/{bar?baz}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz<buz>'), new Route('/foo/{bar?baz<buz>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', 'baz'), new Route('/foo/{bar?}', ['bar' => 'baz']));
-
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '.*'), new Route('/foo/{bar<.*>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '>'), new Route('/foo/{bar<>>}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '\d+'), new Route('/foo/{bar<.*>}', [], ['bar' => '\d+']));
-        $this->assertEquals((new Route('/foo/{bar}'))->setRequirement('bar', '[a-z]{2}'), new Route('/foo/{bar<[a-z]{2}>}'));
-
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', null)->setRequirement('bar', '.*'), new Route('/foo/{bar<.*>?}'));
-        $this->assertEquals((new Route('/foo/{bar}'))->setDefault('bar', '<>')->setRequirement('bar', '>'), new Route('/foo/{bar<>>?<>}'));
-    }
-
-    /**
-     * Tests that the compiled version is also serialized to prevent the overhead
-     * of compiling it again after unserialize.
-     */
-    public function testSerializeWhenCompiled()
-    {
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-        $route->setHost('{locale}.example.net');
-        $route->compile();
-
-        $serialized = serialize($route);
-        $unserialized = unserialize($serialized);
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-
-    /**
-     * Tests that unserialization does not fail when the compiled Route is of a
-     * class other than CompiledRoute, such as a subclass of it.
-     */
-    public function testSerializeWhenCompiledWithClass()
-    {
-        $route = new Route('/', [], [], ['compiler_class' => '\Symfony\Component\Routing\Tests\Fixtures\CustomRouteCompiler']);
-        $this->assertInstanceOf('\Symfony\Component\Routing\Tests\Fixtures\CustomCompiledRoute', $route->compile(), '->compile() returned a proper route');
-
-        $serialized = serialize($route);
-        try {
-            $unserialized = unserialize($serialized);
-            $this->assertInstanceOf('\Symfony\Component\Routing\Tests\Fixtures\CustomCompiledRoute', $unserialized->compile(), 'the unserialized route compiled successfully');
-        } catch (\Exception $e) {
-            $this->fail('unserializing a route which uses a custom compiled route class');
-        }
-    }
-
-    /**
-     * Tests that the serialized representation of a route in one symfony version
-     * also works in later symfony versions, i.e. the unserialized route is in the
-     * same state as another, semantically equivalent, route.
-     */
-    public function testSerializedRepresentationKeepsWorking()
-    {
-        $serialized = 'C:31:"Symfony\Component\Routing\Route":936:{a:8:{s:4:"path";s:13:"/prefix/{foo}";s:4:"host";s:20:"{locale}.example.net";s:8:"defaults";a:1:{s:3:"foo";s:7:"default";}s:12:"requirements";a:1:{s:3:"foo";s:3:"\d+";}s:7:"options";a:1:{s:14:"compiler_class";s:39:"Symfony\Component\Routing\RouteCompiler";}s:7:"schemes";a:0:{}s:7:"methods";a:0:{}s:8:"compiled";C:39:"Symfony\Component\Routing\CompiledRoute":571:{a:8:{s:4:"vars";a:2:{i:0;s:6:"locale";i:1;s:3:"foo";}s:11:"path_prefix";s:7:"/prefix";s:10:"path_regex";s:31:"#^/prefix(?:/(?P<foo>\d+))?$#sD";s:11:"path_tokens";a:2:{i:0;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:3:"\d+";i:3;s:3:"foo";}i:1;a:2:{i:0;s:4:"text";i:1;s:7:"/prefix";}}s:9:"path_vars";a:1:{i:0;s:3:"foo";}s:10:"host_regex";s:40:"#^(?P<locale>[^\.]++)\.example\.net$#sDi";s:11:"host_tokens";a:2:{i:0;a:2:{i:0;s:4:"text";i:1;s:12:".example.net";}i:1;a:4:{i:0;s:8:"variable";i:1;s:0:"";i:2;s:7:"[^\.]++";i:3;s:6:"locale";}}s:9:"host_vars";a:1:{i:0;s:6:"locale";}}}}}';
-        $unserialized = unserialize($serialized);
-
-        $route = new Route('/prefix/{foo}', ['foo' => 'default'], ['foo' => '\d+']);
-        $route->setHost('{locale}.example.net');
-        $route->compile();
-
-        $this->assertEquals($route, $unserialized);
-        $this->assertNotSame($route, $unserialized);
-    }
-}
diff --git a/vendor/symfony/routing/Tests/RouterTest.php b/vendor/symfony/routing/Tests/RouterTest.php
deleted file mode 100644
index fa0a2f53..00000000
--- a/vendor/symfony/routing/Tests/RouterTest.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Tests;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Router;
-
-class RouterTest extends TestCase
-{
-    private $router = null;
-
-    private $loader = null;
-
-    protected function setUp(): void
-    {
-        $this->loader = $this->getMockBuilder('Symfony\Component\Config\Loader\LoaderInterface')->getMock();
-        $this->router = new Router($this->loader, 'routing.yml');
-    }
-
-    public function testSetOptionsWithSupportedOptions()
-    {
-        $this->router->setOptions([
-            'cache_dir' => './cache',
-            'debug' => true,
-            'resource_type' => 'ResourceType',
-        ]);
-
-        $this->assertSame('./cache', $this->router->getOption('cache_dir'));
-        $this->assertTrue($this->router->getOption('debug'));
-        $this->assertSame('ResourceType', $this->router->getOption('resource_type'));
-    }
-
-    public function testSetOptionsWithUnsupportedOptions()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the following options: "option_foo", "option_bar"');
-        $this->router->setOptions([
-            'cache_dir' => './cache',
-            'option_foo' => true,
-            'option_bar' => 'baz',
-            'resource_type' => 'ResourceType',
-        ]);
-    }
-
-    public function testSetOptionWithSupportedOption()
-    {
-        $this->router->setOption('cache_dir', './cache');
-
-        $this->assertSame('./cache', $this->router->getOption('cache_dir'));
-    }
-
-    public function testSetOptionWithUnsupportedOption()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the "option_foo" option');
-        $this->router->setOption('option_foo', true);
-    }
-
-    public function testGetOptionWithUnsupportedOption()
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage('The Router does not support the "option_foo" option');
-        $this->router->getOption('option_foo', true);
-    }
-
-    public function testThatRouteCollectionIsLoaded()
-    {
-        $this->router->setOption('resource_type', 'ResourceType');
-
-        $routeCollection = new RouteCollection();
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', 'ResourceType')
-            ->willReturn($routeCollection);
-
-        $this->assertSame($routeCollection, $this->router->getRouteCollection());
-    }
-
-    public function testMatcherIsCreatedIfCacheIsNotConfigured()
-    {
-        $this->router->setOption('cache_dir', null);
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', null)
-            ->willReturn(new RouteCollection());
-
-        $this->assertInstanceOf('Symfony\\Component\\Routing\\Matcher\\UrlMatcher', $this->router->getMatcher());
-    }
-
-    public function testGeneratorIsCreatedIfCacheIsNotConfigured()
-    {
-        $this->router->setOption('cache_dir', null);
-
-        $this->loader->expects($this->once())
-            ->method('load')->with('routing.yml', null)
-            ->willReturn(new RouteCollection());
-
-        $this->assertInstanceOf('Symfony\\Component\\Routing\\Generator\\UrlGenerator', $this->router->getGenerator());
-    }
-
-    public function testMatchRequestWithUrlMatcherInterface()
-    {
-        $matcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\UrlMatcherInterface')->getMock();
-        $matcher->expects($this->once())->method('match');
-
-        $p = new \ReflectionProperty($this->router, 'matcher');
-        $p->setAccessible(true);
-        $p->setValue($this->router, $matcher);
-
-        $this->router->matchRequest(Request::create('/'));
-    }
-
-    public function testMatchRequestWithRequestMatcherInterface()
-    {
-        $matcher = $this->getMockBuilder('Symfony\Component\Routing\Matcher\RequestMatcherInterface')->getMock();
-        $matcher->expects($this->once())->method('matchRequest');
-
-        $p = new \ReflectionProperty($this->router, 'matcher');
-        $p->setAccessible(true);
-        $p->setValue($this->router, $matcher);
-
-        $this->router->matchRequest(Request::create('/'));
-    }
-}
diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json
index 77d7ce98..79173b09 100644
--- a/vendor/symfony/routing/composer.json
+++ b/vendor/symfony/routing/composer.json
@@ -16,14 +16,14 @@
         }
     ],
     "require": {
-        "php": "^7.1.3"
+        "php": ">=7.1.3"
     },
     "require-dev": {
-        "symfony/config": "~4.2",
-        "symfony/http-foundation": "~3.4|~4.0",
-        "symfony/yaml": "~3.4|~4.0",
-        "symfony/expression-language": "~3.4|~4.0",
-        "symfony/dependency-injection": "~3.4|~4.0",
+        "symfony/config": "^4.2|^5.0",
+        "symfony/http-foundation": "^3.4|^4.0|^5.0",
+        "symfony/yaml": "^3.4|^4.0|^5.0",
+        "symfony/expression-language": "^3.4|^4.0|^5.0",
+        "symfony/dependency-injection": "^3.4|^4.0|^5.0",
         "doctrine/annotations": "~1.2",
         "psr/log": "~1.0"
     },
@@ -45,10 +45,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "4.3-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/routing/phpunit.xml.dist b/vendor/symfony/routing/phpunit.xml.dist
deleted file mode 100644
index df742eab..00000000
--- a/vendor/symfony/routing/phpunit.xml.dist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
-         failOnRisky="true"
-         failOnWarning="true"
->
-    <php>
-        <ini name="error_reporting" value="-1" />
-    </php>
-
-    <testsuites>
-        <testsuite name="Symfony Routing Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./Tests</directory>
-                <directory>./vendor</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/symfony/twig-bridge/Command/DebugCommand.php b/vendor/symfony/twig-bridge/Command/DebugCommand.php
index b45b580e..e196f1b8 100644
--- a/vendor/symfony/twig-bridge/Command/DebugCommand.php
+++ b/vendor/symfony/twig-bridge/Command/DebugCommand.php
@@ -40,7 +40,7 @@ class DebugCommand extends Command
     public function __construct($twig = null, $projectDir = null)
     {
         if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
 
             parent::__construct($twig);
 
@@ -55,7 +55,7 @@ class DebugCommand extends Command
 
     public function setTwigEnvironment(Environment $twig)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->twig = $twig;
     }
@@ -65,7 +65,7 @@ class DebugCommand extends Command
      */
     protected function getTwigEnvironment()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->twig;
     }
@@ -104,10 +104,10 @@ EOF
         $decorated = $io->isDecorated();
 
         // BC to be removed in 4.0
-        if (__CLASS__ !== \get_class($this)) {
+        if (__CLASS__ !== static::class) {
             $r = new \ReflectionMethod($this, 'getTwigEnvironment');
             if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', \get_class($this).'::getTwigEnvironment'), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
 
                 $this->twig = $this->getTwigEnvironment();
             }
@@ -134,7 +134,7 @@ EOF
             }
 
             $data['loader_paths'] = $this->getLoaderPaths();
-            $data = json_encode($data, JSON_PRETTY_PRINT);
+            $data = json_encode($data, \JSON_PRETTY_PRINT);
             $io->writeln($decorated ? OutputFormatter::escape($data) : $data);
 
             return 0;
@@ -239,7 +239,7 @@ EOF
             } elseif (\is_string($cb) && preg_match('{^(.+)::(.+)$}', $cb, $m) && method_exists($m[1], $m[2])) {
                 $refl = new \ReflectionMethod($m[1], $m[2]);
             } else {
-                throw new \UnexpectedValueException('Unsupported callback type');
+                throw new \UnexpectedValueException('Unsupported callback type.');
             }
 
             $args = $refl->getParameters();
diff --git a/vendor/symfony/twig-bridge/Command/LintCommand.php b/vendor/symfony/twig-bridge/Command/LintCommand.php
index c8b5bb5b..c23c27b3 100644
--- a/vendor/symfony/twig-bridge/Command/LintCommand.php
+++ b/vendor/symfony/twig-bridge/Command/LintCommand.php
@@ -43,7 +43,7 @@ class LintCommand extends Command
     public function __construct($twig = null)
     {
         if (!$twig instanceof Environment) {
-            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a command name as the first argument of "%s()" is deprecated since Symfony 3.4 and support for it will be removed in 4.0. If the command was registered by convention, make it a service instead.', __METHOD__), \E_USER_DEPRECATED);
 
             parent::__construct($twig);
 
@@ -57,7 +57,7 @@ class LintCommand extends Command
 
     public function setTwigEnvironment(Environment $twig)
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         $this->twig = $twig;
     }
@@ -67,7 +67,7 @@ class LintCommand extends Command
      */
     protected function getTwigEnvironment()
     {
-        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+        @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
 
         return $this->twig;
     }
@@ -105,10 +105,10 @@ EOF
         $io = new SymfonyStyle($input, $output);
 
         // BC to be removed in 4.0
-        if (__CLASS__ !== \get_class($this)) {
+        if (__CLASS__ !== static::class) {
             $r = new \ReflectionMethod($this, 'getTwigEnvironment');
             if (__CLASS__ !== $r->getDeclaringClass()->getName()) {
-                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', \get_class($this).'::getTwigEnvironment'), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Usage of method "%s" is deprecated since Symfony 3.4 and will no longer be supported in 4.0. Construct the command with its required arguments instead.', static::class.'::getTwigEnvironment'), \E_USER_DEPRECATED);
 
                 $this->twig = $this->getTwigEnvironment();
             }
@@ -120,13 +120,13 @@ EOF
         $filenames = $input->getArgument('filename');
 
         if (0 === \count($filenames)) {
-            if (0 !== ftell(STDIN)) {
+            if (0 !== ftell(\STDIN)) {
                 throw new RuntimeException('Please provide a filename or pipe template content to STDIN.');
             }
 
             $template = '';
-            while (!feof(STDIN)) {
-                $template .= fread(STDIN, 1024);
+            while (!feof(\STDIN)) {
+                $template .= fread(\STDIN, 1024);
             }
 
             return $this->display($input, $output, $io, [$this->validate($template, uniqid('sf_', true))]);
@@ -157,7 +157,7 @@ EOF
             return Finder::create()->files()->in($filename)->name('*.twig');
         }
 
-        throw new RuntimeException(sprintf('File or directory "%s" is not readable', $filename));
+        throw new RuntimeException(sprintf('File or directory "%s" is not readable.', $filename));
     }
 
     private function validate($template, $file)
@@ -226,7 +226,7 @@ EOF
             }
         });
 
-        $output->writeln(json_encode($filesInfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
+        $output->writeln(json_encode($filesInfo, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES));
 
         return min($errors, 1);
     }
diff --git a/vendor/symfony/twig-bridge/Extension/CodeExtension.php b/vendor/symfony/twig-bridge/Extension/CodeExtension.php
index 717d4de6..dec4b612 100644
--- a/vendor/symfony/twig-bridge/Extension/CodeExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/CodeExtension.php
@@ -102,7 +102,7 @@ class CodeExtension extends AbstractExtension
             } elseif ('resource' === $item[0]) {
                 $formattedValue = '<em>resource</em>';
             } else {
-                $formattedValue = str_replace("\n", '', htmlspecialchars(var_export($item[1], true), ENT_COMPAT | ENT_SUBSTITUTE, $this->charset));
+                $formattedValue = str_replace("\n", '', htmlspecialchars(var_export($item[1], true), \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset));
             }
 
             $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
@@ -188,7 +188,7 @@ class CodeExtension extends AbstractExtension
         }
 
         if (false !== $link = $this->getFileLink($file, $line)) {
-            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', htmlspecialchars($link, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset), $text);
+            return sprintf('<a href="%s" title="Click to open this file" class="file_link">%s</a>', htmlspecialchars($link, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset), $text);
         }
 
         return $text;
@@ -236,7 +236,7 @@ class CodeExtension extends AbstractExtension
             }
         }
 
-        return htmlspecialchars($message, ENT_COMPAT | ENT_SUBSTITUTE, $this->charset);
+        return htmlspecialchars($message, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset);
     }
 
     /**
diff --git a/vendor/symfony/twig-bridge/Extension/FormExtension.php b/vendor/symfony/twig-bridge/Extension/FormExtension.php
index 1314e654..84626c22 100644
--- a/vendor/symfony/twig-bridge/Extension/FormExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/FormExtension.php
@@ -38,9 +38,9 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __construct($renderer = null)
     {
         if ($renderer instanceof TwigRendererInterface) {
-            @trigger_error(sprintf('Passing a Twig Form Renderer to the "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0. Pass the Twig\Environment to the TwigRendererEngine constructor instead.', static::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a Twig Form Renderer to the "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0. Pass the Twig\Environment to the TwigRendererEngine constructor instead.', static::class), \E_USER_DEPRECATED);
         } elseif (null !== $renderer && !(\is_array($renderer) && isset($renderer[0], $renderer[1]) && $renderer[0] instanceof ContainerInterface)) {
-            throw new \InvalidArgumentException(sprintf('Passing any arguments to the constructor of %s is reserved for internal use.', __CLASS__));
+            throw new \InvalidArgumentException(sprintf('Passing any arguments to the constructor of "%s" is reserved for internal use.', __CLASS__));
         }
         $this->renderer = $renderer;
     }
@@ -116,7 +116,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __get($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
 
             if (\is_array($this->renderer)) {
                 $renderer = $this->renderer[0]->get($this->renderer[1]);
@@ -136,7 +136,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __set($name, $value)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         $this->$name = $value;
@@ -148,7 +148,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __isset($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         return isset($this->$name);
@@ -160,7 +160,7 @@ class FormExtension extends AbstractExtension implements InitRuntimeInterface
     public function __unset($name)
     {
         if ('renderer' === $name) {
-            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using the "%s::$renderer" property is deprecated since Symfony 3.2 as it will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED);
         }
 
         unset($this->$name);
diff --git a/vendor/symfony/twig-bridge/Extension/YamlExtension.php b/vendor/symfony/twig-bridge/Extension/YamlExtension.php
index bb8d5a12..fb364346 100644
--- a/vendor/symfony/twig-bridge/Extension/YamlExtension.php
+++ b/vendor/symfony/twig-bridge/Extension/YamlExtension.php
@@ -44,7 +44,7 @@ class YamlExtension extends AbstractExtension
 
         if (\defined('Symfony\Component\Yaml\Yaml::DUMP_OBJECT')) {
             if (\is_bool($dumpObjects)) {
-                @trigger_error('Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::DUMP_OBJECT flag instead.', E_USER_DEPRECATED);
+                @trigger_error('Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::DUMP_OBJECT flag instead.', \E_USER_DEPRECATED);
 
                 $flags = $dumpObjects ? Yaml::DUMP_OBJECT : 0;
             } else {
diff --git a/vendor/symfony/twig-bridge/Form/TwigRenderer.php b/vendor/symfony/twig-bridge/Form/TwigRenderer.php
index b4cb7faa..34407d08 100644
--- a/vendor/symfony/twig-bridge/Form/TwigRenderer.php
+++ b/vendor/symfony/twig-bridge/Form/TwigRenderer.php
@@ -15,7 +15,7 @@ use Symfony\Component\Form\FormRenderer;
 use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
 use Twig\Environment;
 
-@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s instead.', TwigRenderer::class, FormRenderer::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s instead.', TwigRenderer::class, FormRenderer::class), \E_USER_DEPRECATED);
 
 /**
  * @author Bernhard Schussek <bschussek@gmail.com>
diff --git a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php b/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
index 73e7bc4c..f5097be4 100644
--- a/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
+++ b/vendor/symfony/twig-bridge/Form/TwigRendererEngine.php
@@ -34,7 +34,7 @@ class TwigRendererEngine extends AbstractRendererEngine implements TwigRendererE
     public function __construct(array $defaultThemes = [], Environment $environment = null)
     {
         if (null === $environment) {
-            @trigger_error(sprintf('Not passing a Twig Environment as the second argument for "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0.', static::class), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Not passing a Twig Environment as the second argument for "%s" constructor is deprecated since Symfony 3.2 and won\'t be possible in 4.0.', static::class), \E_USER_DEPRECATED);
         }
 
         parent::__construct($defaultThemes);
@@ -49,7 +49,7 @@ class TwigRendererEngine extends AbstractRendererEngine implements TwigRendererE
     public function setEnvironment(Environment $environment)
     {
         if ($this->environment) {
-            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Pass the Twig Environment as second argument of the constructor instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.3 and will be removed in 4.0. Pass the Twig Environment as second argument of the constructor instead.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         $this->environment = $environment;
diff --git a/vendor/symfony/twig-bridge/LICENSE b/vendor/symfony/twig-bridge/LICENSE
index a677f437..9e936ec0 100644
--- a/vendor/symfony/twig-bridge/LICENSE
+++ b/vendor/symfony/twig-bridge/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 Fabien Potencier
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php b/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
index 612bec14..8925d588 100644
--- a/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
+++ b/vendor/symfony/twig-bridge/Node/SearchAndRenderBlockNode.php
@@ -28,7 +28,6 @@ class SearchAndRenderBlockNode extends FunctionExpression
 
         preg_match('/_([^_]+)$/', $this->getAttribute('name'), $matches);
 
-        $label = null;
         $arguments = iterator_to_array($this->getNode('arguments'));
         $blockNameSuffix = $matches[1];
 
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
index e23e6f8a..5673cf21 100644
--- a/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
+++ b/vendor/symfony/twig-bridge/Resources/views/Form/bootstrap_4_horizontal_layout.html.twig
@@ -71,7 +71,6 @@ col-sm-10
         <div class="{{ block('form_label_class') }}"></div>{#--#}
         <div class="{{ block('form_group_class') }}">
             {{- form_widget(form) -}}
-            {{- form_errors(form) -}}
         </div>{#--#}
     </div>
 {%- endblock checkbox_row %}
diff --git a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig b/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
index ad4477cb..362e27ce 100644
--- a/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
+++ b/vendor/symfony/twig-bridge/Resources/views/Form/form_div_layout.html.twig
@@ -222,13 +222,11 @@
                 '%name%': name,
                 '%id%': id,
             }) %}
-        {%- elseif label is same as(false) -%}
-            {% set translation_domain = false %}
-        {%- else -%}
+        {%- elseif label is not same as(false) -%}
             {% set label = name|humanize %}
         {%- endif -%}
     {%- endif -%}
-    <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</button>
+    <button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) or label is same as(false) ? label : label|trans({}, translation_domain) }}</button>
 {%- endblock button_widget -%}
 
 {%- block submit_widget -%}
@@ -401,7 +399,7 @@
     {%- for attrname, attrvalue in attr -%}
         {{- " " -}}
         {%- if attrname in ['placeholder', 'title'] -%}
-            {{- attrname }}="{{ translation_domain is same as(false) ? attrvalue : attrvalue|trans({}, translation_domain) }}"
+            {{- attrname }}="{{ translation_domain is same as(false) or attrvalue is null ? attrvalue : attrvalue|trans({}, translation_domain) }}"
         {%- elseif attrvalue is same as(true) -%}
             {{- attrname }}="{{ attrname }}"
         {%- elseif attrvalue is not same as(false) -%}
diff --git a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php b/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
index 4a3f04fd..eb132e72 100644
--- a/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
+++ b/vendor/symfony/twig-bridge/Tests/AppVariableTest.php
@@ -180,10 +180,10 @@ class AppVariableTest extends TestCase
         $flashMessages = $this->setFlashMessages();
         $this->assertEquals($flashMessages, $this->appVariable->getFlashes([]));
 
-        $flashMessages = $this->setFlashMessages();
+        $this->setFlashMessages();
         $this->assertEquals([], $this->appVariable->getFlashes('this-does-not-exist'));
 
-        $flashMessages = $this->setFlashMessages();
+        $this->setFlashMessages();
         $this->assertEquals(
             ['this-does-not-exist' => []],
             $this->appVariable->getFlashes(['this-does-not-exist'])
diff --git a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php b/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
index db10ccb6..f03e87a4 100644
--- a/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Command/LintCommandTest.php
@@ -42,7 +42,7 @@ class LintCommandTest extends TestCase
         $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
 
         $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertRegExp('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
+        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
     }
 
     public function testLintFileNotReadable()
@@ -52,7 +52,7 @@ class LintCommandTest extends TestCase
         $filename = $this->createFile('');
         unlink($filename);
 
-        $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
+        $tester->execute(['filename' => [$filename]], ['decorated' => false]);
     }
 
     public function testLintFileCompileTimeException()
@@ -63,7 +63,7 @@ class LintCommandTest extends TestCase
         $ret = $tester->execute(['filename' => [$filename]], ['decorated' => false]);
 
         $this->assertEquals(1, $ret, 'Returns 1 in case of error');
-        $this->assertRegExp('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
+        $this->assertMatchesRegularExpression('/ERROR  in \S+ \(line /', trim($tester->getDisplay()));
     }
 
     /**
@@ -120,7 +120,7 @@ class LintCommandTest extends TestCase
     {
         foreach ($this->files as $file) {
             if (file_exists($file)) {
-                unlink($file);
+                @unlink($file);
             }
         }
     }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
index 273ca922..3125b88a 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/DumpExtensionTest.php
@@ -82,6 +82,7 @@ class DumpExtensionTest extends TestCase
             $this->assertStringStartsWith('<script>', $dump);
             $dump = preg_replace('/^.*?<pre/', '<pre', $dump);
             $dump = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump);
+            $dump = preg_replace('/<samp [^>]++>/', '<samp>', $dump);
         }
         $this->assertEquals($expectedOutput, $dump);
     }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
index 2b38122e..8e100dea 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/StopwatchExtensionTest.php
@@ -34,7 +34,7 @@ class StopwatchExtensionTest extends TestCase
         $twig->addExtension(new StopwatchExtension($this->getStopwatch($events)));
 
         try {
-            $nodes = $twig->render('template');
+            $twig->render('template');
         } catch (RuntimeError $e) {
             throw $e->getPrevious();
         }
@@ -57,18 +57,22 @@ class StopwatchExtensionTest extends TestCase
         $events = \is_array($events) ? $events : [$events];
         $stopwatch = $this->getMockBuilder('Symfony\Component\Stopwatch\Stopwatch')->getMock();
 
-        $i = -1;
+        $expectedCalls = 0;
+        $expectedStartCalls = [];
+        $expectedStopCalls = [];
         foreach ($events as $eventName) {
-            $stopwatch->expects($this->at(++$i))
-                ->method('start')
-                ->with($this->equalTo($eventName), 'template')
-            ;
-            $stopwatch->expects($this->at(++$i))
-                ->method('stop')
-                ->with($this->equalTo($eventName))
-            ;
+            ++$expectedCalls;
+            $expectedStartCalls[] = [$this->equalTo($eventName), 'template'];
+            $expectedStopCalls[] = [$this->equalTo($eventName)];
         }
 
+        $startInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
+            ->method('start');
+        \call_user_func_array([$startInvocationMocker, 'withConsecutive'], $expectedStartCalls);
+        $stopInvocationMocker = $stopwatch->expects($this->exactly($expectedCalls))
+            ->method('stop');
+        \call_user_func_array([$stopInvocationMocker, 'withConsecutive'], $expectedStopCalls);
+
         return $stopwatch;
     }
 }
diff --git a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php b/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
index aeb109fd..206cda67 100644
--- a/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Extension/TranslationExtensionTest.php
@@ -49,21 +49,21 @@ class TranslationExtensionTest extends TestCase
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('Unexpected token. Twig was looking for the "with", "from", or "into" keyword in "index" at line 3.');
-        $output = $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
+        $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
     }
 
     public function testTransComplexBody()
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('A message inside a trans tag must be a simple text in "index" at line 2.');
-        $output = $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
+        $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
     }
 
     public function testTransChoiceComplexBody()
     {
         $this->expectException('Twig\Error\SyntaxError');
         $this->expectExceptionMessage('A message inside a transchoice tag must be a simple text in "index" at line 2.');
-        $output = $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
+        $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
     }
 
     public function getTransTests()
diff --git a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php b/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
index 82d72983..28932d94 100644
--- a/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
+++ b/vendor/symfony/twig-bridge/Tests/Translation/TwigExtractorTest.php
@@ -16,7 +16,6 @@ use Symfony\Bridge\Twig\Extension\TranslationExtension;
 use Symfony\Bridge\Twig\Translation\TwigExtractor;
 use Symfony\Component\Translation\MessageCatalogue;
 use Twig\Environment;
-use Twig\Error\Error;
 use Twig\Loader\ArrayLoader;
 
 class TwigExtractorTest extends TestCase
@@ -78,23 +77,15 @@ class TwigExtractorTest extends TestCase
     /**
      * @dataProvider resourcesWithSyntaxErrorsProvider
      */
-    public function testExtractSyntaxError($resources)
+    public function testExtractSyntaxError($resources, array $messages)
     {
-        $this->expectException('Twig\Error\Error');
         $twig = new Environment($this->getMockBuilder('Twig\Loader\LoaderInterface')->getMock());
         $twig->addExtension(new TranslationExtension($this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')->getMock()));
 
         $extractor = new TwigExtractor($twig);
-
-        try {
-            $extractor->extract($resources, new MessageCatalogue('en'));
-        } catch (Error $e) {
-            $this->assertSame(\dirname(__DIR__).strtr('/Fixtures/extractor/syntax_error.twig', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-            $this->assertSame(1, $e->getLine());
-            $this->assertSame('Unclosed "block".', $e->getMessage());
-
-            throw $e;
-        }
+        $catalogue = new MessageCatalogue('en');
+        $extractor->extract($resources, $catalogue);
+        $this->assertSame($messages, $catalogue->all());
     }
 
     /**
@@ -103,9 +94,9 @@ class TwigExtractorTest extends TestCase
     public function resourcesWithSyntaxErrorsProvider()
     {
         return [
-            [__DIR__.'/../Fixtures'],
-            [__DIR__.'/../Fixtures/extractor/syntax_error.twig'],
-            [new \SplFileInfo(__DIR__.'/../Fixtures/extractor/syntax_error.twig')],
+            [__DIR__.'/../Fixtures', ['messages' => ['Hi!' => 'Hi!']]],
+            [__DIR__.'/../Fixtures/extractor/syntax_error.twig', []],
+            [new \SplFileInfo(__DIR__.'/../Fixtures/extractor/syntax_error.twig'), []],
         ];
     }
 
diff --git a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php b/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
index b7c78722..3d01ca57 100644
--- a/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
+++ b/vendor/symfony/twig-bridge/Translation/TwigExtractor.php
@@ -12,7 +12,6 @@
 namespace Symfony\Bridge\Twig\Translation;
 
 use Symfony\Component\Finder\Finder;
-use Symfony\Component\Finder\SplFileInfo;
 use Symfony\Component\Translation\Extractor\AbstractFileExtractor;
 use Symfony\Component\Translation\Extractor\ExtractorInterface;
 use Symfony\Component\Translation\MessageCatalogue;
@@ -58,13 +57,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
             try {
                 $this->extractTemplate(file_get_contents($file->getPathname()), $catalogue);
             } catch (Error $e) {
-                if ($file instanceof \SplFileInfo) {
-                    $path = $file->getRealPath() ?: $file->getPathname();
-                    $name = $file instanceof SplFileInfo ? $file->getRelativePathname() : $path;
-                    $e->setSourceContext(new Source('', $name, $path));
-                }
-
-                throw $e;
+                // ignore errors, these should be fixed by using the linter
             }
         }
     }
@@ -98,7 +91,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
      */
     protected function canBeExtracted($file)
     {
-        return $this->isFile($file) && 'twig' === pathinfo($file, PATHINFO_EXTENSION);
+        return $this->isFile($file) && 'twig' === pathinfo($file, \PATHINFO_EXTENSION);
     }
 
     /**
diff --git a/vendor/symfony/twig-bridge/composer.json b/vendor/symfony/twig-bridge/composer.json
index f4fb1c98..f61e4018 100644
--- a/vendor/symfony/twig-bridge/composer.json
+++ b/vendor/symfony/twig-bridge/composer.json
@@ -66,10 +66,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.4-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/twig/twig/.travis.yml b/vendor/twig/twig/.travis.yml
index ff6132b3..8a57df8c 100644
--- a/vendor/twig/twig/.travis.yml
+++ b/vendor/twig/twig/.travis.yml
@@ -1,46 +1,35 @@
 language: php
 
-dist: trusty
-
-sudo: false
+dist: xenial
 
 cache:
     directories:
         - vendor
         - $HOME/.composer/cache/files
 
-
 env:
     global:
-        - TWIG_EXT=no
-        - SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1
+        - SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE=1
 
 before_install:
     - phpenv config-rm xdebug.ini || return 0
+    - echo memory_limit = -1 >> ~/.phpenv/versions/$TRAVIS_PHP_VERSION/etc/conf.d/travis.ini
 
 install:
     - travis_retry composer install
+    - export PHPUNIT=$(readlink -f ./vendor/bin/simple-phpunit)
+    - $PHPUNIT install
 
-before_script:
-    - if [ "$TWIG_EXT" == "yes" ]; then sh -c "cd ext/twig && phpize && ./configure --enable-twig && make && make install"; fi
-    - if [ "$TWIG_EXT" == "yes" ]; then echo "extension=twig.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
-
-script: ./vendor/bin/simple-phpunit
+script:
+    - $PHPUNIT
 
 jobs:
     fast_finish: true
     include:
-        - php: 5.5
-        - php: 5.5
-          env: TWIG_EXT=yes
-        - php: 5.6
-        - php: 5.6
-          env: TWIG_EXT=yes
-        - php: 7.0
-        - php: 7.1
         - php: 7.2
         - php: 7.3
-        - php: 7.4snapshot
+        - php: 7.4
+        - php: nightly
         - stage: integration tests
           php: 7.3
           script: ./drupal_test.sh
diff --git a/vendor/twig/twig/CHANGELOG b/vendor/twig/twig/CHANGELOG
index 6ca3d45a..862dd3f4 100644
--- a/vendor/twig/twig/CHANGELOG
+++ b/vendor/twig/twig/CHANGELOG
@@ -1,4 +1,42 @@
-* 1.42.3 (2019-08-24)
+# 1.44.1 (2020-10-27)
+
+ * Fix "include(template_from_string())"
+
+# 1.44.0 (2020-10-21)
+
+ * Remove implicit dependency on ext/iconv in JS escaper
+ * Fix sandbox support when using "include(template_from_string())"
+ * Make round brackets optional for one argument tests like "same as" or "divisible by"
+ * Add support for ES2015 style object initialisation shortcut { a } is the same as { 'a': a }
+ * Fix filter(), map(), and reduce() to throw a RuntimeError instead of a PHP TypeError
+ * Drop PHP 7.1 support
+
+# 1.43.1 (2020-08-05)
+
+ * Fix sandbox not disabled if syntax error occurs within {% sandbox %} tag
+ * Fix a regression when not using a space before an operator
+ * Restrict callables to closures in filters
+ * Allow trailing commas in argument lists (in calls as well as definitions)
+
+# 1.43.0 (2020-07-05)
+
+ * Throw exception in case non-Traversable data is passed to "filter"
+ * Fix context optimization on PHP 7.4
+ * Fix PHP 8 compatibility
+ * Drop PHP 5.5 5.6, and 7.0 support
+ * Fix ambiguous syntax parsing
+ * In sandbox, the `filter`, `map` and `reduce` filters require Closures in `arrow` parameter
+
+# 1.42.5 (2020-02-11)
+
+ * Fix implementation of case-insensitivity for method names
+
+# 1.42.4 (2019-11-11)
+
+ * optimized "block('foo') ?? 'bar"
+ * added supported for exponential numbers
+
+# 1.42.3 (2019-08-24)
 
  * fixed the "split" filter when the delimiter is "0"
  * fixed the "empty" test on Traversable instances
@@ -6,34 +44,34 @@
  * fixed PHP 7.4 compatibility
  * bumped the minimal PHP version to 5.5
 
-* 1.42.2 (2019-06-18)
+# 1.42.2 (2019-06-18)
 
  * Display partial output (PHP buffer) when an error occurs in debug mode
 
-* 1.42.1 (2019-06-04)
+# 1.42.1 (2019-06-04)
 
  * added support for "Twig\Markup" instances in the "in" test (again)
  * allowed string operators as variables names in assignments
 
-* 1.42.0 (2019-05-31)
+# 1.42.0 (2019-05-31)
 
  * fixed the "filter" filter when the argument is \Traversable but does not implement \Iterator (\SimpleXmlElement for instance)
  * fixed a PHP fatal error when calling a macro imported in a block in a nested block
  * fixed a PHP fatal error when calling a macro imported in the template in another macro
  * fixed wrong error message on "import" and "from"
 
-* 1.41.0 (2019-05-14)
+# 1.41.0 (2019-05-14)
 
  * fixed support for PHP 7.4
  * added "filter", "map", and "reduce" filters (and support for arrow functions)
  * fixed partial output leak when a PHP fatal error occurs
  * optimized context access on PHP 7.4
 
-* 1.40.1 (2019-04-29)
+# 1.40.1 (2019-04-29)
 
-* fixed regression in NodeTraverser
+# fixed regression in NodeTraverser
 
-* 1.40.0 (2019-04-28)
+# 1.40.0 (2019-04-28)
 
  * allowed Twig\NodeVisitor\NodeVisitorInterface::leaveNode() to return "null" instead of "false" (same meaning)
  * added the "apply" tag as a replacement for the "filter" tag
@@ -42,11 +80,11 @@
  * fixed Lexer when using custom options containing the # char
  * fixed "import" when macros are stored in a template string
 
-* 1.39.1 (2019-04-16)
+# 1.39.1 (2019-04-16)
 
  * fixed EscaperNodeVisitor
 
-* 1.39.0 (2019-04-16)
+# 1.39.0 (2019-04-16)
 
  * added Traversable support for the length filter
  * fixed some wrong location in error messages
@@ -57,11 +95,11 @@
  * fixed "include" with "ignore missing" when an error loading occurs in the included template
  * added support for a new whitespace trimming option ({%~ ~%}, {{~ ~}}, {#~ ~#})
 
-* 1.38.4 (2019-03-23)
+# 1.38.4 (2019-03-23)
 
  * fixed CheckToStringNode implementation (broken when a function/filter is variadic)
 
-* 1.38.3 (2019-03-21)
+# 1.38.3 (2019-03-21)
 
  * fixed the spaceless filter so that it behaves like the spaceless tag
  * fixed BC break on Environment::resolveTemplate()
@@ -69,15 +107,15 @@
  * allowed Traversable objects to be used in the "with" tag
  * allowed Traversable objects to be used in the "with" argument of the "include" and "embed" tags
 
-* 1.38.2 (2019-03-12)
+# 1.38.2 (2019-03-12)
 
  * added TemplateWrapper::getTemplateName()
 
-* 1.38.1 (2019-03-12)
+# 1.38.1 (2019-03-12)
 
  * fixed class aliases
 
-* 1.38.0 (2019-03-12)
+# 1.38.0 (2019-03-12)
 
  * fixed sandbox security issue (under some circumstances, calling the
    __toString() method on an object was possible even if not allowed by the
@@ -94,12 +132,12 @@
  * added Twig\Loader\ChainLoader::getLoaders()
  * changed internal code to use the namespaced classes as much as possible
 
-* 1.37.1 (2019-01-14)
+# 1.37.1 (2019-01-14)
 
  * fixed regression (key exists check for non ArrayObject objects)
  * fixed logic in TemplateWrapper
 
-* 1.37.0 (2019-01-14)
+# 1.37.0 (2019-01-14)
 
  * fixed ArrayObject access with a null value
  * fixed embedded templates starting with a BOM
@@ -109,7 +147,7 @@
  * fixed float representation in compiled templates
  * added a second argument to the join filter (last separator configuration)
 
-* 1.36.0 (2018-12-16)
+# 1.36.0 (2018-12-16)
 
  * made sure twig_include returns a string
  * fixed multi-byte UFT-8 in escape('html_attr')
@@ -118,24 +156,24 @@
  * fixed GlobalsInterface extended class
  * fixed filesystem loader throwing an exception instead of returning false
 
-* 1.35.4 (2018-07-13)
+# 1.35.4 (2018-07-13)
 
  * ensured that syntax errors are triggered with the right line
  * added the Symfony ctype polyfill as a dependency
  * "js" filter now produces valid JSON
 
-* 1.35.3 (2018-03-20)
+# 1.35.3 (2018-03-20)
 
  * fixed block names unicity
  * fixed counting children of SimpleXMLElement objects
  * added missing else clause to avoid infinite loops
  * fixed .. (range operator) in sandbox policy
 
-* 1.35.2 (2018-03-03)
+# 1.35.2 (2018-03-03)
 
  * fixed a regression in the way the profiler is registered in templates
 
-* 1.35.1 (2018-03-02)
+# 1.35.1 (2018-03-02)
 
  * added an exception when using "===" instead of "same as"
  * fixed possible array to string conversion concealing actual error
@@ -143,31 +181,31 @@
  * fixed length filter when passing an instance of IteratorAggregate
  * fixed Environment::resolveTemplate to accept instances of TemplateWrapper
 
-* 1.35.0 (2017-09-27)
+# 1.35.0 (2017-09-27)
 
  * added Twig_Profiler_Profile::reset()
  * fixed use TokenParser to return an empty Node
  * added RuntimeExtensionInterface
  * added circular reference detection when loading templates
 
-* 1.34.4 (2017-07-04)
+# 1.34.4 (2017-07-04)
 
  * added support for runtime loaders in IntegrationTestCase
  * fixed deprecation when using Twig_Profiler_Dumper_Html
 
-* 1.34.3 (2017-06-07)
+# 1.34.3 (2017-06-07)
 
  * fixed namespaces introduction
 
-* 1.34.2 (2017-06-05)
+# 1.34.2 (2017-06-05)
 
  * fixed namespaces introduction
 
-* 1.34.1 (2017-06-05)
+# 1.34.1 (2017-06-05)
 
  * fixed namespaces introduction
 
-* 1.34.0 (2017-06-05)
+# 1.34.0 (2017-06-05)
 
  * added support for PHPUnit 6 when testing extensions
  * fixed PHP 7.2 compatibility
@@ -177,15 +215,15 @@
  * dropped HHVM support
  * dropped PHP 5.2 support
 
-* 1.33.2 (2017-04-20)
+# 1.33.2 (2017-04-20)
 
  * fixed edge case in the method cache for Twig attributes
 
-* 1.33.1 (2017-04-18)
+# 1.33.1 (2017-04-18)
 
  * fixed the empty() test
 
-* 1.33.0 (2017-03-22)
+# 1.33.0 (2017-03-22)
 
  * fixed a race condition handling when writing cache files
  * "length" filter now returns string length when applied to an object that does
@@ -194,13 +232,13 @@
    objects implement __toString() but not \Countable
  * fixed JS escaping for unicode characters with higher code points
 
-* 1.32.0 (2017-02-26)
+# 1.32.0 (2017-02-26)
 
  * fixed deprecation notice in Twig_Util_DeprecationCollector
  * added a PSR-11 compatible runtime loader
  * added `side` argument to `trim` to allow left or right trimming only.
 
-* 1.31.0 (2017-01-11)
+# 1.31.0 (2017-01-11)
 
  * added Twig_NodeCaptureInterface for nodes that capture all output
  * fixed marking the environment as initialized too early
@@ -208,13 +246,13 @@
  * turned fatal error into exception when a previously generated cache is corrupted
  * fixed offline cache warm-ups for embedded templates
 
-* 1.30.0 (2016-12-23)
+# 1.30.0 (2016-12-23)
 
  * added Twig_FactoryRuntimeLoader
  * deprecated function/test/filter/tag overriding
  * deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr
 
-* 1.29.0 (2016-12-13)
+# 1.29.0 (2016-12-13)
 
  * fixed sandbox being left enabled if an exception is thrown while rendering
  * marked some classes as being final (via @final)
@@ -223,16 +261,16 @@
  * deprecated silent display of undefined blocks
  * deprecated support for mbstring.func_overload != 0
 
-* 1.28.2 (2016-11-23)
+# 1.28.2 (2016-11-23)
 
  * fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute()
  * improved a deprecation message
 
-* 1.28.1 (2016-11-18)
+# 1.28.1 (2016-11-18)
 
  * fixed block() function when used with a template argument
 
-* 1.28.0 (2016-11-17)
+# 1.28.0 (2016-11-17)
 
  * added support for the PHP 7 null coalescing operator for the ?? Twig implementation
  * exposed a way to access template data and methods in a portable way
@@ -242,7 +280,7 @@
  * added "is defined" support for block() and constant()
  * optimized the way attributes are fetched
 
-* 1.27.0 (2016-10-25)
+# 1.27.0 (2016-10-25)
 
  * deprecated Twig_Parser::getEnvironment()
  * deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor()
@@ -260,13 +298,13 @@
  * fixed template paths when a template name contains a protocol like vfs://
  * improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties
 
-* 1.26.1 (2016-10-05)
+# 1.26.1 (2016-10-05)
 
  * removed template source code from generated template classes when debug is disabled
  * fixed default implementation of Twig_Template::getDebugInfo() for better BC
  * fixed regression on static calls for functions/filters/tests
 
-* 1.26.0 (2016-10-02)
+# 1.26.0 (2016-10-02)
 
  * added template cache invalidation based on more environment options
  * added a missing deprecation notice
@@ -274,7 +312,7 @@
  * allowed filters/functions/tests implementation to use a different class than the extension they belong to
  * deprecated Twig_ExtensionInterface::getName()
 
-* 1.25.0 (2016-09-21)
+# 1.25.0 (2016-09-21)
 
  * changed the way we store template source in template classes
  * removed usage of realpath in cache keys
@@ -284,13 +322,13 @@
  * deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler()
  * deprecated Twig_Compiler::getFilename()
 
-* 1.24.2 (2016-09-01)
+# 1.24.2 (2016-09-01)
 
  * fixed static callables
  * fixed a potential PHP warning when loading the cache
  * fixed a case where the autoescaping does not work as expected
 
-* 1.24.1 (2016-05-30)
+# 1.24.1 (2016-05-30)
 
  * fixed reserved keywords (forbids true, false, null and none keywords for variables names)
  * fixed support for PHP7 (Throwable support)
@@ -299,36 +337,36 @@
    getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(),
    getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension()
 
-* 1.24.0 (2016-01-25)
+# 1.24.0 (2016-01-25)
 
  * adding support for the ?? operator
  * fixed the defined test when used on a constant, a map, or a sequence
  * undeprecated _self (should only be used to get the template name, not the template instance)
  * fixed parsing on PHP7
 
-* 1.23.3 (2016-01-11)
+# 1.23.3 (2016-01-11)
 
  * fixed typo
 
-* 1.23.2 (2015-01-11)
+# 1.23.2 (2015-01-11)
 
  * added versions in deprecated messages
  * made file cache tolerant for trailing (back)slashes on directory configuration
  * deprecated unused Twig_Node_Expression_ExtensionReference class
 
-* 1.23.1 (2015-11-05)
+# 1.23.1 (2015-11-05)
 
  * fixed some exception messages which triggered PHP warnings
  * fixed BC on Twig_Test_NodeTestCase
 
-* 1.23.0 (2015-10-29)
+# 1.23.0 (2015-10-29)
 
  * deprecated the possibility to override an extension by registering another one with the same name
  * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC)
  * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC)
  * deprecated Twig_Environment::computeAlternatives()
 
-* 1.22.3 (2015-10-13)
+# 1.22.3 (2015-10-13)
 
  * fixed regression when using null as a cache strategy
  * improved performance when checking template freshness
@@ -337,15 +375,15 @@
  * fixed logic for custom escapers to call them even on integers and null values
  * changed template cache names to take into account the Twig C extension
 
-* 1.22.2 (2015-09-22)
+# 1.22.2 (2015-09-22)
 
  * fixed a race condition in template loading
 
-* 1.22.1 (2015-09-15)
+# 1.22.1 (2015-09-15)
 
  * fixed regression in template_from_string
 
-* 1.22.0 (2015-09-13)
+# 1.22.0 (2015-09-13)
 
  * made Twig_Test_IntegrationTestCase more flexible
  * added an option to force PHP bytecode invalidation when writing a compiled template into the cache
@@ -356,23 +394,23 @@
  * added a way to override the filesystem template cache system
  * added a way to get the original template source from Twig_Template
 
-* 1.21.2 (2015-09-09)
+# 1.21.2 (2015-09-09)
 
  * fixed variable names for the deprecation triggering code
  * fixed escaping strategy detection based on filename
  * added Traversable support for replace, merge, and sort
  * deprecated support for character by character replacement for the "replace" filter
 
-* 1.21.1 (2015-08-26)
+# 1.21.1 (2015-08-26)
 
  * fixed regression when using the deprecated Twig_Test_* classes
 
-* 1.21.0 (2015-08-24)
+# 1.21.0 (2015-08-24)
 
  * added deprecation notices for deprecated features
  * added a deprecation "framework" for filters/functions/tests and test fixtures
 
-* 1.20.0 (2015-08-12)
+# 1.20.0 (2015-08-12)
 
  * forbid access to the Twig environment from templates and internal parts of Twig_Template
  * fixed limited RCEs when in sandbox mode
@@ -381,7 +419,7 @@
  * added Twig_BaseNodeVisitor to ease the compatibility of node visitors
    between 1.x and 2.x
 
-* 1.19.0 (2015-07-31)
+# 1.19.0 (2015-07-31)
 
  * fixed wrong error message when including an undefined template in a child template
  * added support for variadic filters, functions, and tests
@@ -391,19 +429,19 @@
  * deprecated Twig_Environment::clearTemplateCache()
  * fixed sandbox disabling when using the include function
 
-* 1.18.2 (2015-06-06)
+# 1.18.2 (2015-06-06)
 
  * fixed template/line guessing in exceptions for nested templates
  * optimized the number of inodes and the size of realpath cache when using the cache
 
-* 1.18.1 (2015-04-19)
+# 1.18.1 (2015-04-19)
 
  * fixed memory leaks in the C extension
  * deprecated Twig_Loader_String
  * fixed the slice filter when used with a SimpleXMLElement object
  * fixed filesystem loader when trying to load non-files (like directories)
 
-* 1.18.0 (2015-01-25)
+# 1.18.0 (2015-01-25)
 
  * fixed some error messages where the line was wrong (unknown variables or argument names)
  * added a new way to customize the main Module node (via empty nodes)
@@ -411,18 +449,18 @@
  * added a profiler
  * fixed filesystem loader cache when different file paths are used for the same template
 
-* 1.17.0 (2015-01-14)
+# 1.17.0 (2015-01-14)
 
  * added a 'filename' autoescaping strategy, which dynamically chooses the
    autoescaping strategy for a template based on template file extension.
 
-* 1.16.3 (2014-12-25)
+# 1.16.3 (2014-12-25)
 
  * fixed regression for dynamic parent templates
  * fixed cache management with statcache
  * fixed a regression in the slice filter
 
-* 1.16.2 (2014-10-17)
+# 1.16.2 (2014-10-17)
 
  * fixed timezone on dates as strings
  * fixed 2-words test names when a custom node class is not used
@@ -433,7 +471,7 @@
  * fixed a regression in the in operator
  * fixed a regression in the slice filter
 
-* 1.16.1 (2014-10-10)
+# 1.16.1 (2014-10-10)
 
  * improved error reporting in a sandboxed template
  * fixed missing error file/line information under certain circumstances
@@ -443,20 +481,20 @@
  * fixed for mb function overload mb_substr acting different
  * fixed the attribute() function when passing a variable for the arguments
 
-* 1.16.0 (2014-07-05)
+# 1.16.0 (2014-07-05)
 
  * changed url_encode to always encode according to RFC 3986
  * fixed inheritance in a 'use'-hierarchy
  * removed the __toString policy check when the sandbox is disabled
  * fixed recursively calling blocks in templates with inheritance
 
-* 1.15.1 (2014-02-13)
+# 1.15.1 (2014-02-13)
 
  * fixed the conversion of the special '0000-00-00 00:00' date
  * added an error message when trying to import an undefined block from a trait
  * fixed a C extension crash when accessing defined but uninitialized property.
 
-* 1.15.0 (2013-12-06)
+# 1.15.0 (2013-12-06)
 
  * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException
  * added min and max functions
@@ -466,19 +504,19 @@
  * added a source function to include the content of a template without rendering it
  * fixed the C extension sandbox behavior when get or set is prepend to method name
 
-* 1.14.2 (2013-10-30)
+# 1.14.2 (2013-10-30)
 
  * fixed error filename/line when an error occurs in an included file
  * allowed operators that contain whitespaces to have more than one whitespace
  * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by")
 
-* 1.14.1 (2013-10-15)
+# 1.14.1 (2013-10-15)
 
  * made it possible to use named operators as variables
  * fixed the possibility to have a variable named 'matches'
  * added support for PHP 5.5 DateTimeInterface
 
-* 1.14.0 (2013-10-03)
+# 1.14.0 (2013-10-03)
 
  * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy
  * added new operators: ends with, starts with, and matches
@@ -490,12 +528,12 @@
  * fixed template_from_string when the template includes or extends other ones
  * fixed a crash of the C extension on an edge case
 
-* 1.13.2 (2013-08-03)
+# 1.13.2 (2013-08-03)
 
  * fixed the error line number for an error occurs in and embedded template
  * fixed crashes of the C extension on some edge cases
 
-* 1.13.1 (2013-06-06)
+# 1.13.1 (2013-06-06)
 
  * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem
  * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface
@@ -503,7 +541,7 @@
  * added support for object instances as the second argument of the constant test
  * fixed the include function when used in an assignment
 
-* 1.13.0 (2013-05-10)
+# 1.13.0 (2013-05-10)
 
  * fixed getting a numeric-like item on a variable ('09' for instance)
  * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access:
@@ -512,7 +550,7 @@
  * changed ☃ to § in tests
  * enforced usage of named arguments after positional ones
 
-* 1.12.3 (2013-04-08)
+# 1.12.3 (2013-04-08)
 
  * fixed a security issue in the filesystem loader where it was possible to include a template one
    level above the configured path
@@ -520,25 +558,25 @@
  * added a batch filter
  * added support for encoding an array as query string in the url_encode filter
 
-* 1.12.2 (2013-02-09)
+# 1.12.2 (2013-02-09)
 
  * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00)
  * fixed globals when getGlobals is called early on
  * added the first and last filter
 
-* 1.12.1 (2013-01-15)
+# 1.12.1 (2013-01-15)
 
  * added support for object instances as the second argument of the constant function
  * relaxed globals management to avoid a BC break
  * added support for {{ some_string[:2] }}
 
-* 1.12.0 (2013-01-08)
+# 1.12.0 (2013-01-08)
 
  * added verbatim as an alias for the raw tag to avoid confusion with the raw filter
  * fixed registration of tests and functions as anonymous functions
  * fixed globals management
 
-* 1.12.0-RC1 (2012-12-29)
+# 1.12.0-RC1 (2012-12-29)
 
  * added an include function (does the same as the include tag but in a more flexible way)
  * added the ability to use any PHP callable to define filters, functions, and tests
@@ -548,14 +586,14 @@
  * moved filters/functions/tests syntax errors to the parser
  * added support for extended ternary operator syntaxes
 
-* 1.11.1 (2012-11-11)
+# 1.11.1 (2012-11-11)
 
  * fixed debug info line numbering (was off by 2)
  * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1)
  * optimized variable access on PHP 5.4
  * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX)
 
-* 1.11.0 (2012-11-07)
+# 1.11.0 (2012-11-07)
 
  * fixed macro compilation when a variable name is a PHP reserved keyword
  * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone
@@ -565,41 +603,41 @@
  * optimized the way Twig exceptions are managed (to make them faster)
  * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster)
 
-* 1.10.3 (2012-10-19)
+# 1.10.3 (2012-10-19)
 
  * fixed wrong template location in some error messages
  * reverted a BC break introduced in 1.10.2
  * added a split filter
 
-* 1.10.2 (2012-10-15)
+# 1.10.2 (2012-10-15)
 
  * fixed macro calls on PHP 5.4
 
-* 1.10.1 (2012-10-15)
+# 1.10.1 (2012-10-15)
 
  * made a speed optimization to macro calls when imported via the "import" tag
  * fixed C extension compilation on Windows
  * fixed a segfault in the C extension when using DateTime objects
 
-* 1.10.0 (2012-09-28)
+# 1.10.0 (2012-09-28)
 
  * extracted functional tests framework to make it reusable for third-party extensions
  * added namespaced templates support in Twig_Loader_Filesystem
  * added Twig_Loader_Filesystem::prependPath()
  * fixed an error when a token parser pass a closure as a test to the subparse() method
 
-* 1.9.2 (2012-08-25)
+# 1.9.2 (2012-08-25)
 
  * fixed the in operator for objects that contain circular references
  * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
 
-* 1.9.1 (2012-07-22)
+# 1.9.1 (2012-07-22)
 
  * optimized macro calls when auto-escaping is on
  * fixed wrong parent class for Twig_Function_Node
  * made Twig_Loader_Chain more explicit about problems
 
-* 1.9.0 (2012-07-13)
+# 1.9.0 (2012-07-13)
 
  * made the parsing independent of the template loaders
  * fixed exception trace when an error occurs when rendering a child template
@@ -607,26 +645,26 @@
  * fixed nested embed tag calls
  * added the date_modify filter
 
-* 1.8.3 (2012-06-17)
+# 1.8.3 (2012-06-17)
 
  * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
  * fixed escaping when a project defines a function named html or js
  * fixed chmod mode to apply the umask correctly
 
-* 1.8.2 (2012-05-30)
+# 1.8.2 (2012-05-30)
 
  * added the abs filter
  * fixed a regression when using a number in template attributes
  * fixed compiler when mbstring.func_overload is set to 2
  * fixed DateTimeZone support in date filter
 
-* 1.8.1 (2012-05-17)
+# 1.8.1 (2012-05-17)
 
  * fixed a regression when dealing with SimpleXMLElement instances in templates
  * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
  * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
 
-* 1.8.0 (2012-05-08)
+# 1.8.0 (2012-05-08)
 
  * enforced interface when adding tests, filters, functions, and node visitors from extensions
  * fixed a side-effect of the date filter where the timezone might be changed
@@ -635,7 +673,7 @@
  * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
  * added an embed tag
 
-* 1.7.0 (2012-04-24)
+# 1.7.0 (2012-04-24)
 
  * fixed a PHP warning when using CIFS
  * fixed template line number in some exceptions
@@ -649,30 +687,30 @@
  * fixed filesystem loader freshness logic for high traffic websites
  * fixed random function when charset is null
 
-* 1.6.5 (2012-04-11)
+# 1.6.5 (2012-04-11)
 
  * fixed a regression when a template only extends another one without defining any blocks
 
-* 1.6.4 (2012-04-02)
+# 1.6.4 (2012-04-02)
 
  * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
  * fixed performance when compiling large files
  * optimized parent template creation when the template does not use dynamic inheritance
 
-* 1.6.3 (2012-03-22)
+# 1.6.3 (2012-03-22)
 
  * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
  * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
  * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
 
-* 1.6.2 (2012-03-18)
+# 1.6.2 (2012-03-18)
 
  * fixed sandbox mode when used with inheritance
  * added preserveKeys support for the slice filter
  * fixed the date filter when a DateTime instance is passed with a specific timezone
  * added a trim filter
 
-* 1.6.1 (2012-02-29)
+# 1.6.1 (2012-02-29)
 
  * fixed Twig C extension
  * removed the creation of Twig_Markup instances when not needed
@@ -680,7 +718,7 @@
  * fixed the slice filter on strings when the length is not specified
  * fixed the creation of the cache directory in case of a race condition
 
-* 1.6.0 (2012-02-04)
+# 1.6.0 (2012-02-04)
 
  * fixed raw blocks when used with the whitespace trim option
  * made a speed optimization to macro calls when imported via the "from" tag
@@ -695,22 +733,22 @@
  * added recursive parsing support in the parser
  * added string and integer handling for the random function
 
-* 1.5.1 (2012-01-05)
+# 1.5.1 (2012-01-05)
 
  * fixed a regression when parsing strings
 
-* 1.5.0 (2012-01-04)
+# 1.5.0 (2012-01-04)
 
  * added Traversable objects support for the join filter
 
-* 1.5.0-RC2 (2011-12-30)
+# 1.5.0-RC2 (2011-12-30)
 
  * added a way to set the default global date interval format
  * fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
  * refactored Twig_Template::display() to ease its extension
  * added a number_format filter
 
-* 1.5.0-RC1 (2011-12-26)
+# 1.5.0-RC1 (2011-12-26)
 
  * removed the need to quote hash keys
  * allowed hash keys to be any expression
@@ -725,19 +763,19 @@
  * added string interpolation support
  * enhanced exceptions for unknown filters, functions, tests, and tags
 
-* 1.4.0 (2011-12-07)
+# 1.4.0 (2011-12-07)
 
  * fixed lexer when using big numbers (> PHP_INT_MAX)
  * added missing preserveKeys argument to the reverse filter
  * fixed macros containing filter tag calls
 
-* 1.4.0-RC2 (2011-11-27)
+# 1.4.0-RC2 (2011-11-27)
 
  * removed usage of Reflection in Twig_Template::getAttribute()
  * added a C extension that can optionally replace Twig_Template::getAttribute()
  * added negative timestamp support to the date filter
 
-* 1.4.0-RC1 (2011-11-20)
+# 1.4.0-RC1 (2011-11-20)
 
  * optimized variable access when using PHP 5.4
  * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
@@ -755,11 +793,11 @@
  * moved all node manipulations outside the compile() Node method
  * made several speed optimizations
 
-* 1.3.0 (2011-10-08)
+# 1.3.0 (2011-10-08)
 
 no changes
 
-* 1.3.0-RC1 (2011-10-04)
+# 1.3.0-RC1 (2011-10-04)
 
  * added an optimization for the parent() function
  * added cache reloading when auto_reload is true and an extension has been modified
@@ -767,11 +805,11 @@ no changes
  * allowed empty templates to be used as traits
  * added traits support for the "parent" function
 
-* 1.2.0 (2011-09-13)
+# 1.2.0 (2011-09-13)
 
 no changes
 
-* 1.2.0-RC1 (2011-09-10)
+# 1.2.0-RC1 (2011-09-10)
 
  * enhanced the exception when a tag remains unclosed
  * added support for empty Countable objects for the "empty" test
@@ -788,7 +826,7 @@ no changes
  * removed the possibility to use the "extends" tag from a block
  * added "if" modifier support to "for" loops
 
-* 1.1.2 (2011-07-30)
+# 1.1.2 (2011-07-30)
 
  * fixed json_encode filter on PHP 5.2
  * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
@@ -798,28 +836,28 @@ no changes
  * fixed a parsing problem when a large chunk of text is enclosed in a comment tag
  * added PHPDoc for all Token parsers and Core extension functions
 
-* 1.1.1 (2011-07-17)
+# 1.1.1 (2011-07-17)
 
  * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
  * made some performance improvement for some edge cases
 
-* 1.1.0 (2011-06-28)
+# 1.1.0 (2011-06-28)
 
  * fixed json_encode filter
 
-* 1.1.0-RC3 (2011-06-24)
+# 1.1.0-RC3 (2011-06-24)
 
  * fixed method case-sensitivity when using the sandbox mode
  * added timezone support for the date filter
  * fixed possible security problems with NUL bytes
 
-* 1.1.0-RC2 (2011-06-16)
+# 1.1.0-RC2 (2011-06-16)
 
  * added an exception when the template passed to "use" is not a string
  * made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
  * added {% line \d+ %} directive
 
-* 1.1.0-RC1 (2011-05-28)
+# 1.1.0-RC1 (2011-05-28)
 
 Flush your cache after upgrading.
 
@@ -833,13 +871,13 @@ Flush your cache after upgrading.
  * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
  * moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
 
-* 1.0.0 (2011-03-27)
+# 1.0.0 (2011-03-27)
 
  * fixed output when using mbstring
  * fixed duplicate call of methods when using the sandbox
  * made the charset configurable for the escape filter
 
-* 1.0.0-RC2 (2011-02-21)
+# 1.0.0-RC2 (2011-02-21)
 
  * changed the way {% set %} works when capturing (the content is now marked as safe)
  * added support for macro name in the endmacro tag
@@ -850,7 +888,7 @@ Flush your cache after upgrading.
  * removed coupling between Twig_Node and Twig_Template
  * fixed the ternary operator precedence rule
 
-* 1.0.0-RC1 (2011-01-09)
+# 1.0.0-RC1 (2011-01-09)
 
 Backward incompatibilities:
 
@@ -876,7 +914,7 @@ Changes:
  * the "default" filter now uses the "empty" test instead of just checking for null
  * added the "empty" test
 
-* 0.9.10 (2010-12-16)
+# 0.9.10 (2010-12-16)
 
 Backward incompatibilities:
 
@@ -911,7 +949,7 @@ Changes:
  * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
  * added priority to node visitors
 
-* 0.9.9 (2010-11-28)
+# 0.9.9 (2010-11-28)
 
 Backward incompatibilities:
  * the self special variable has been renamed to _self
@@ -960,7 +998,7 @@ Changes:
  * renamed self to _self (to avoid conflict)
  * fixed Twig_Template::getAttribute() for protected properties
 
-* 0.9.8 (2010-06-28)
+# 0.9.8 (2010-06-28)
 
 Backward incompatibilities:
  * the trans tag plural count is now attached to the plural tag:
@@ -975,7 +1013,7 @@ Backward incompatibilities:
  * fixed set tag when used with a capture
  * fixed type hinting for Twig_Environment::addFilter() method
 
-* 0.9.7 (2010-06-12)
+# 0.9.7 (2010-06-12)
 
 Backward incompatibilities:
  * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
@@ -1002,7 +1040,7 @@ Backward incompatibilities:
  * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
  * added an exception when a child template has a non-empty body (as it is always ignored when rendering)
 
-* 0.9.6 (2010-05-12)
+# 0.9.6 (2010-05-12)
 
  * fixed variables defined outside a loop and for which the value changes in a for loop
  * fixed the test suite for PHP 5.2 and older versions of PHPUnit
@@ -1019,7 +1057,7 @@ Backward incompatibilities:
  * added support for escaping strategy in the autoescape tag
  * fixed lexer when a template has a big chunk of text between/in a block
 
-* 0.9.5 (2010-01-20)
+# 0.9.5 (2010-01-20)
 
 As for any new release, don't forget to remove all cached templates after
 upgrading.
@@ -1056,7 +1094,7 @@ stable).
  * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
  * enhanced some error messages to provide better feedback in case of parsing errors
 
-* 0.9.4 (2009-12-02)
+# 0.9.4 (2009-12-02)
 
 If you have custom loaders, you MUST upgrade them for this release: The
 Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
@@ -1069,7 +1107,7 @@ been changed (see the source code for more information or the documentation).
  * fixed bug when the filename of a template contains */
  * refactored loaders
 
-* 0.9.3 (2009-11-11)
+# 0.9.3 (2009-11-11)
 
 This release is NOT backward compatible with the previous releases.
 
@@ -1098,7 +1136,7 @@ This release is NOT backward compatible with the previous releases.
  * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
  * fixed bug when \ was used in HTML
 
-* 0.9.2 (2009-10-29)
+# 0.9.2 (2009-10-29)
 
  * made some speed optimizations
  * changed the cache extension to .php
@@ -1116,7 +1154,7 @@ This release is NOT backward compatible with the previous releases.
  * enhanced some error messages to ease debugging
  * fixed empty cache files when the template contains an error
 
-* 0.9.1 (2009-10-14)
+# 0.9.1 (2009-10-14)
 
   * fixed a bug in PHP 5.2.6
   * fixed numbers with one than one decimal
@@ -1124,6 +1162,6 @@ This release is NOT backward compatible with the previous releases.
   * made small speed optimizations
   * made minor tweaks to allow better extensibility and flexibility
 
-* 0.9.0 (2009-10-12)
+# 0.9.0 (2009-10-12)
 
  * Initial release
diff --git a/vendor/twig/twig/LICENSE b/vendor/twig/twig/LICENSE
index d06ced2a..94255bb2 100644
--- a/vendor/twig/twig/LICENSE
+++ b/vendor/twig/twig/LICENSE
@@ -1,31 +1,27 @@
-Copyright (c) 2009-2019 by the Twig Team.
+Copyright (c) 2009-2020 by the Twig Team.
 
-Some rights reserved.
+All rights reserved.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
 
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-
-    * The names of the contributors may not be used to endorse or
-      promote products derived from this software without specific
-      prior written permission.
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of Twig nor the names of its contributors
+      may be used to endorse or promote products derived from this software
+      without specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/twig/twig/composer.json b/vendor/twig/twig/composer.json
index 9807aa77..46b0fc7a 100644
--- a/vendor/twig/twig/composer.json
+++ b/vendor/twig/twig/composer.json
@@ -5,6 +5,7 @@
     "keywords": ["templating"],
     "homepage": "https://twig.symfony.com",
     "license": "BSD-3-Clause",
+    "minimum-stability": "dev",
     "authors": [
         {
             "name": "Fabien Potencier",
@@ -14,7 +15,6 @@
         },
         {
             "name": "Twig Team",
-            "homepage": "https://twig.symfony.com/contributors",
             "role": "Contributors"
         },
         {
@@ -24,12 +24,11 @@
         }
     ],
     "require": {
-        "php": ">=5.5.0",
+        "php": ">=7.2.5",
         "symfony/polyfill-ctype": "^1.8"
     },
     "require-dev": {
-        "symfony/phpunit-bridge": "^4.4@dev|^5.0",
-        "symfony/debug": "^3.4|^4.2",
+        "symfony/phpunit-bridge": "^4.4.9|^5.0.9",
         "psr/container": "^1.0"
     },
     "autoload": {
@@ -47,7 +46,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.42-dev"
+            "dev-master": "1.44-dev"
         }
     }
 }
diff --git a/vendor/twig/twig/doc/advanced.rst b/vendor/twig/twig/doc/advanced.rst
index e2532941..f1ac102b 100644
--- a/vendor/twig/twig/doc/advanced.rst
+++ b/vendor/twig/twig/doc/advanced.rst
@@ -189,7 +189,7 @@ If you want to access the current environment instance in your filter, set the
 ``needs_environment`` option to ``true``; Twig will pass the current
 environment as the first argument to the filter call::
 
-    $filter = new \Twig\TwigFilter('rot13', function (Twig_Environment $env, $string) {
+    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $string) {
         // get the current charset for instance
         $charset = $env->getCharset();
 
@@ -208,7 +208,7 @@ the first argument to the filter call (or the second one if
         // ...
     }, ['needs_context' => true]);
 
-    $filter = new \Twig\TwigFilter('rot13', function (Twig_Environment $env, $context, $string) {
+    $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $context, $string) {
         // ...
     }, ['needs_context' => true, 'needs_environment' => true]);
 
@@ -339,14 +339,20 @@ When creating tests you can use the ``node_class`` option to provide custom test
 compilation. This is useful if your test can be compiled into PHP primitives.
 This is used by many of the tests built into Twig::
 
-    $twig = new \Twig\Environment($loader);
-    $test = new \Twig\TwigTest(
+    namespace App;
+    
+    use Twig\Environment;
+    use Twig\Node\Expression\TestExpression;
+    use Twig\TwigTest;
+    
+    $twig = new Environment($loader);
+    $test = new TwigTest(
         'odd',
         null,
-        ['node_class' => '\Twig\Node\Expression\Test\OddTest']);
+        ['node_class' => OddTestExpression::class]);
     $twig->addTest($test);
 
-    class Twig_Node_Expression_Test_Odd extends \Twig\Node\Expression\TestExpression
+    class OddTestExpression extends TestExpression
     {
         public function compile(\Twig\Compiler $compiler)
         {
@@ -584,11 +590,6 @@ to host all the specific tags and filters you want to add to Twig.
     recompile your templates whenever you make a change to it (when
     ``auto_reload`` is enabled).
 
-.. note::
-
-    Before writing your own extensions, have a look at the Twig official
-    extension repository: https://github.com/twigphp/Twig-extensions.
-
 An extension is a class that implements the following interface::
 
     interface Twig_ExtensionInterface
@@ -665,7 +666,7 @@ An extension is a class that implements the following interface::
 
 To keep your extension class clean and lean, inherit from the built-in
 ``\Twig\Extension\AbstractExtension`` class instead of implementing the interface as it provides
-empty implementations for all methods:
+empty implementations for all methods::
 
     class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
     {
diff --git a/vendor/twig/twig/doc/advanced_legacy.rst b/vendor/twig/twig/doc/advanced_legacy.rst
index cc87b9c9..409b9144 100644
--- a/vendor/twig/twig/doc/advanced_legacy.rst
+++ b/vendor/twig/twig/doc/advanced_legacy.rst
@@ -524,11 +524,6 @@ to host all the specific tags and filters you want to add to Twig.
     recompile your templates whenever you make a change to it (when the
     ``auto_reload`` is enabled).
 
-.. note::
-
-    Before writing your own extensions, have a look at the Twig official
-    extension repository: https://github.com/twigphp/Twig-extensions.
-
 An extension is a class that implements the following interface::
 
     interface Twig_ExtensionInterface
diff --git a/vendor/twig/twig/doc/api.rst b/vendor/twig/twig/doc/api.rst
index b96b0d4e..1fac0f75 100644
--- a/vendor/twig/twig/doc/api.rst
+++ b/vendor/twig/twig/doc/api.rst
@@ -19,8 +19,7 @@ to have multiple environments side by side, with different configurations.
 The typical way to configure Twig to load templates for an application looks
 roughly like this::
 
-    require_once '/path/to/lib/Twig/Autoloader.php';
-    Twig_Autoloader::register();
+    require_once '/path/to/vendor/autoload.php';
 
     $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
     $twig = new \Twig\Environment($loader, [
@@ -154,10 +153,7 @@ Compilation Cache
 ~~~~~~~~~~~~~~~~~
 
 All template loaders can cache the compiled templates on the filesystem for
-future reuse. It speeds up Twig a lot as templates are only compiled once; and
-the performance boost is even larger if you use a PHP accelerator such as
-OPCache. See the ``cache`` and ``auto_reload`` options of ``\Twig\Environment``
-above for more information.
+future reuse. It speeds up Twig a lot as templates are only compiled once.
 
 Built-in Loaders
 ~~~~~~~~~~~~~~~~
@@ -357,8 +353,8 @@ This section describes the features added by the built-in extensions.
 
 .. tip::
 
-    Read the chapter about extending Twig to learn how to create your own
-    extensions.
+    Read the chapter about :doc:`extending Twig <advanced>` to learn how to
+    create your own extensions.
 
 Core Extension
 ~~~~~~~~~~~~~~
@@ -417,7 +413,7 @@ The escaping rules are implemented as follows:
         {% set text = "Twig<br />" %}
         {{ text }} {# will be escaped #}
 
-* Expressions which the result is always a literal or a variable marked safe
+* Expressions which the result is a literal or a variable marked safe
   are never automatically escaped:
 
   .. code-block:: twig
@@ -425,14 +421,12 @@ The escaping rules are implemented as follows:
         {{ foo ? "Twig<br />" : "<br />Twig" }} {# won't be escaped #}
 
         {% set text = "Twig<br />" %}
-        {{ foo ? text : "<br />Twig" }} {# will be escaped #}
+        {{ true ? text : "<br />Twig" }} {# will be escaped #}
+        {{ false ? text : "<br />Twig" }} {# won't be escaped #}
 
         {% set text = "Twig<br />" %}
         {{ foo ? text|raw : "<br />Twig" }} {# won't be escaped #}
 
-        {% set text = "Twig<br />" %}
-        {{ foo ? text|escape : "<br />Twig" }} {# the result of the expression won't be escaped #}
-
 * Escaping is applied before printing, after any other filter is applied:
 
   .. code-block:: twig
diff --git a/vendor/twig/twig/doc/filters/batch.rst b/vendor/twig/twig/doc/filters/batch.rst
index cc50ec8e..c03c5747 100644
--- a/vendor/twig/twig/doc/filters/batch.rst
+++ b/vendor/twig/twig/doc/filters/batch.rst
@@ -10,7 +10,7 @@ missing items:
 
 .. code-block:: twig
 
-    {% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %}
+    {% set items = ['a', 'b', 'c', 'd'] %}
 
     <table>
     {% for row in items|batch(3, 'No item') %}
@@ -34,11 +34,6 @@ The above example will be rendered as:
         </tr>
         <tr>
             <td>d</td>
-            <td>e</td>
-            <td>f</td>
-        </tr>
-        <tr>
-            <td>g</td>
             <td>No item</td>
             <td>No item</td>
         </tr>
@@ -49,3 +44,4 @@ Arguments
 
 * ``size``: The size of the batch; fractional numbers will be rounded up
 * ``fill``: Used to fill in missing items
+* ``preserve_keys``: Whether to preserve keys or not
diff --git a/vendor/twig/twig/doc/filters/default.rst b/vendor/twig/twig/doc/filters/default.rst
index c4ccb56a..e616e590 100644
--- a/vendor/twig/twig/doc/filters/default.rst
+++ b/vendor/twig/twig/doc/filters/default.rst
@@ -21,6 +21,15 @@ undefined:
 .. code-block:: twig
 
     {{ var.method(foo|default('foo'))|default('foo') }}
+    
+Using the ``default`` filter on a boolean variable might trigger unexpected behaviour, as
+``false`` is treated as an empty value. Consider using ``??`` instead:
+
+.. code-block:: twig
+
+    {% set foo = false %}
+    {{ foo|default(true) }} {# true #}
+    {{ foo ?? true }} {# false #}
 
 .. note::
 
diff --git a/vendor/twig/twig/doc/filters/filter.rst b/vendor/twig/twig/doc/filters/filter.rst
index 310e63a7..e9f96829 100644
--- a/vendor/twig/twig/doc/filters/filter.rst
+++ b/vendor/twig/twig/doc/filters/filter.rst
@@ -1,5 +1,5 @@
 ``filter``
-=========
+==========
 
 .. versionadded:: 1.41
     The ``filter`` filter was added in Twig 1.41 and 2.10.
diff --git a/vendor/twig/twig/doc/filters/map.rst b/vendor/twig/twig/doc/filters/map.rst
index 9b1f5d73..e983e33b 100644
--- a/vendor/twig/twig/doc/filters/map.rst
+++ b/vendor/twig/twig/doc/filters/map.rst
@@ -34,5 +34,4 @@ Note that the arrow function has access to the current context.
 Arguments
 ---------
 
-* ``array``: The sequence or mapping
 * ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/reduce.rst b/vendor/twig/twig/doc/filters/reduce.rst
index 7d04d6c7..af6164a9 100644
--- a/vendor/twig/twig/doc/filters/reduce.rst
+++ b/vendor/twig/twig/doc/filters/reduce.rst
@@ -1,5 +1,5 @@
 ``reduce``
-=========
+==========
 
 .. versionadded:: 1.41
     The ``reduce`` filter was added in Twig 1.41 and 2.10.
@@ -28,6 +28,5 @@ Note that the arrow function has access to the current context.
 Arguments
 ---------
 
-* ``array``: The sequence or mapping
 * ``arrow``: The arrow function
 * ``initial``: The initial value
diff --git a/vendor/twig/twig/doc/functions/block.rst b/vendor/twig/twig/doc/functions/block.rst
index c6261482..927fc321 100644
--- a/vendor/twig/twig/doc/functions/block.rst
+++ b/vendor/twig/twig/doc/functions/block.rst
@@ -1,10 +1,10 @@
 ``block``
 =========
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Using ``block`` with the ``defined`` test was added in Twig 1.28.
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Support for the template argument was added in Twig 1.28.
 
 When a template uses inheritance and if you want to print a block multiple
diff --git a/vendor/twig/twig/doc/functions/constant.rst b/vendor/twig/twig/doc/functions/constant.rst
index f9d836cd..bb19858c 100644
--- a/vendor/twig/twig/doc/functions/constant.rst
+++ b/vendor/twig/twig/doc/functions/constant.rst
@@ -1,10 +1,10 @@
 ``constant``
 ============
 
-.. versionadded: 1.12.1
+.. versionadded:: 1.12.1
     constant now accepts object instances as the second argument.
 
-.. versionadded: 1.28
+.. versionadded:: 1.28
     Using ``constant`` with the ``defined`` test was added in Twig 1.28.
 
 ``constant`` returns the constant value for a given string:
diff --git a/vendor/twig/twig/doc/intro.rst b/vendor/twig/twig/doc/intro.rst
index 1f52c80a..4c8e73be 100644
--- a/vendor/twig/twig/doc/intro.rst
+++ b/vendor/twig/twig/doc/intro.rst
@@ -26,7 +26,7 @@ Slim, Yii, Laravel, and Codeigniter — just to name a few.
 Prerequisites
 -------------
 
-Twig needs at least **PHP 5.5.0** to run.
+Twig 1.x needs at least **PHP 7.2.5** to run.
 
 Installation
 ------------
diff --git a/vendor/twig/twig/doc/tags/block.rst b/vendor/twig/twig/doc/tags/block.rst
index e3804823..0fb60c63 100644
--- a/vendor/twig/twig/doc/tags/block.rst
+++ b/vendor/twig/twig/doc/tags/block.rst
@@ -5,7 +5,6 @@ Blocks are used for inheritance and act as placeholders and replacements at
 the same time. They are documented in detail in the documentation for the
 :doc:`extends<../tags/extends>` tag.
 
-Block names should consist of alphanumeric characters, and underscores. Dashes
-are not permitted.
+Block names must consist of alphanumeric characters, and underscores. The first char can't be a digit and dashes are not permitted.
 
 .. seealso:: :doc:`block<../functions/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`, :doc:`extends<../tags/extends>`
diff --git a/vendor/twig/twig/doc/tags/include.rst b/vendor/twig/twig/doc/tags/include.rst
index 661280f9..624e8654 100644
--- a/vendor/twig/twig/doc/tags/include.rst
+++ b/vendor/twig/twig/doc/tags/include.rst
@@ -1,7 +1,7 @@
 ``include``
 ===========
 
-The ``include`` statement includes a template and returns the rendered content
+The ``include`` statement includes a template and outputs the rendered content
 of that file:
 
 .. code-block:: twig
diff --git a/vendor/twig/twig/doc/templates.rst b/vendor/twig/twig/doc/templates.rst
index 168a8f70..872e0b56 100644
--- a/vendor/twig/twig/doc/templates.rst
+++ b/vendor/twig/twig/doc/templates.rst
@@ -568,6 +568,11 @@ exist:
     {# keys as integer #}
     { 2: 'foo', 4: 'bar' }
 
+    {# keys can be omitted if it is the same as the variable name #}
+    { foo }
+    {# is equivalent to the following #}
+    { 'foo': foo }
+
     {# keys as expressions (the expression must be enclosed into parentheses) -- as of Twig 1.5 #}
     {% set foo = 'foo' %}
     { (foo): 'foo', (1 + 1): 'bar', (foo ~ 'b'): 'baz' }
@@ -865,11 +870,8 @@ the modifiers on one side of a tag or on both sides:
 Extensions
 ----------
 
-Twig can be extended. If you are looking for new tags, filters, or functions,
-have a look at the Twig official `extension repository`_.
-
-If you want to create your own, read the :ref:`Creating an
-Extension<creating_extensions>` chapter.
+Twig can be extended. If you want to create your own extensions, read the
+:ref:`Creating an Extension <creating_extensions>` chapter.
 
 .. _`Twig bundle`:                https://github.com/Anomareh/PHP-Twig.tmbundle
 .. _`Jinja syntax plugin`:        http://jinja.pocoo.org/docs/integration/#vim
@@ -877,7 +879,6 @@ Extension<creating_extensions>` chapter.
 .. _`Twig syntax plugin`:         http://plugins.netbeans.org/plugin/37069/php-twig
 .. _`Twig plugin`:                https://github.com/pulse00/Twig-Eclipse-Plugin
 .. _`Twig language definition`:   https://github.com/gabrielcorpse/gedit-twig-template-language
-.. _`extension repository`:       https://github.com/twigphp/Twig-extensions
 .. _`Twig syntax mode`:           https://github.com/bobthecow/Twig-HTML.mode
 .. _`other Twig syntax mode`:     https://github.com/muxx/Twig-HTML.mode
 .. _`Notepad++ Twig Highlighter`: https://github.com/Banane9/notepadplusplus-twig
diff --git a/vendor/twig/twig/doc/tests/constant.rst b/vendor/twig/twig/doc/tests/constant.rst
index 98abf4d4..5dc87e3e 100644
--- a/vendor/twig/twig/doc/tests/constant.rst
+++ b/vendor/twig/twig/doc/tests/constant.rst
@@ -1,7 +1,7 @@
 ``constant``
 ============
 
-.. versionadded: 1.13.1
+.. versionadded:: 1.13.1
     constant now accepts object instances as the second argument.
 
 ``constant`` checks if a variable has the exact same value as a constant. You
diff --git a/vendor/twig/twig/doc/tests/sameas.rst b/vendor/twig/twig/doc/tests/sameas.rst
index 4fc267db..b400b89c 100644
--- a/vendor/twig/twig/doc/tests/sameas.rst
+++ b/vendor/twig/twig/doc/tests/sameas.rst
@@ -5,7 +5,7 @@
     The ``same as`` test was added in Twig 1.14.2 as an alias for ``sameas``.
 
 ``same as`` checks if a variable is the same as another variable.
-This is the equivalent to ``===`` in PHP:
+This is equivalent to ``===`` in PHP:
 
 .. code-block:: twig
 
diff --git a/vendor/twig/twig/drupal_test.sh b/vendor/twig/twig/drupal_test.sh
index 0374593c..ca493f9d 100644
--- a/vendor/twig/twig/drupal_test.sh
+++ b/vendor/twig/twig/drupal_test.sh
@@ -6,18 +6,17 @@ set -e
 REPO=`pwd`
 cd /tmp
 rm -rf drupal-twig-test
-composer create-project --no-interaction drupal-composer/drupal-project:8.x-dev drupal-twig-test
+composer create-project --no-interaction drupal/recommended-project:8.9.x-dev drupal-twig-test
 cd drupal-twig-test
 (cd vendor/twig && rm -rf twig && ln -sf $REPO twig)
-echo '$config["system.logging"]["error_level"] = "verbose";' >> web/sites/default/settings.php
 php ./web/core/scripts/drupal install --no-interaction demo_umami > output
 perl -p -i -e 's/^([A-Za-z]+)\: (.+)$/export DRUPAL_\1=\2/' output
 source output
+#echo '$config["system.logging"]["error_level"] = "verbose";' >> web/sites/default/settings.php
 
 wget https://get.symfony.com/cli/installer -O - | bash
 export PATH="$HOME/.symfony/bin:$PATH"
 symfony server:start -d --no-tls
-ENDPOINT=`symfony server:status -no-ansi | sed -E 's/^.+ http/http/'`
 
 curl -OLsS https://get.blackfire.io/blackfire-player.phar
 chmod +x blackfire-player.phar
@@ -47,5 +46,5 @@ scenario
     click link('Structure')
         expect status_code() == 200
 EOF
-./blackfire-player.phar run drupal-tests.bkf --endpoint=$ENDPOINT --variable name=$DRUPAL_Username --variable pass=$DRUPAL_Password
+./blackfire-player.phar run drupal-tests.bkf --endpoint=`symfony var:export SYMFONY_DEFAULT_ROUTE_URL` --variable name=$DRUPAL_Username --variable pass=$DRUPAL_Password
 symfony server:stop
diff --git a/vendor/twig/twig/ext/twig/php_twig.h b/vendor/twig/twig/ext/twig/php_twig.h
index 79ac938d..344539ab 100644
--- a/vendor/twig/twig/ext/twig/php_twig.h
+++ b/vendor/twig/twig/ext/twig/php_twig.h
@@ -15,7 +15,7 @@
 #ifndef PHP_TWIG_H
 #define PHP_TWIG_H
 
-#define PHP_TWIG_VERSION "1.42.3"
+#define PHP_TWIG_VERSION "1.42.5-DEV"
 
 #include "php.h"
 
diff --git a/vendor/twig/twig/lib/Twig/Loader/String.php b/vendor/twig/twig/lib/Twig/Loader/String.php
index 348af0c1..cb3b2a00 100644
--- a/vendor/twig/twig/lib/Twig/Loader/String.php
+++ b/vendor/twig/twig/lib/Twig/Loader/String.php
@@ -36,7 +36,7 @@ class Twig_Loader_String implements LoaderInterface, ExistsLoaderInterface, Sour
 {
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         return $name;
     }
diff --git a/vendor/twig/twig/lib/Twig/Test/Method.php b/vendor/twig/twig/lib/Twig/Test/Method.php
index 3559f34d..4f16142b 100644
--- a/vendor/twig/twig/lib/Twig/Test/Method.php
+++ b/vendor/twig/twig/lib/Twig/Test/Method.php
@@ -39,4 +39,9 @@ class Twig_Test_Method extends Twig_Test
     {
         return sprintf('$this->env->getExtension(\'%s\')->%s', \get_class($this->extension), $this->method);
     }
+
+    public function hasOneMandatoryArgument(): bool
+    {
+        return (bool) ($this->options['one_mandatory_argument'] ?? false);
+    }
 }
diff --git a/vendor/twig/twig/phpunit.xml.dist b/vendor/twig/twig/phpunit.xml.dist
deleted file mode 100644
index 391f244a..00000000
--- a/vendor/twig/twig/phpunit.xml.dist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         bootstrap="vendor/autoload.php"
->
-  <testsuites>
-    <testsuite name="Twig Test Suite">
-      <directory>./tests/</directory>
-    </testsuite>
-  </testsuites>
-
-  <php>
-    <ini name="error_reporting" value="-1" />
-    <ini name="xdebug.overload_var_dump" value="0" />
-  </php>
-
-  <listeners>
-    <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
-  </listeners>
-
-  <filter>
-    <whitelist>
-      <directory suffix=".php">./src/</directory>
-    </whitelist>
-  </filter>
-</phpunit>
diff --git a/vendor/twig/twig/src/Environment.php b/vendor/twig/twig/src/Environment.php
index acd8233a..1e5db570 100644
--- a/vendor/twig/twig/src/Environment.php
+++ b/vendor/twig/twig/src/Environment.php
@@ -35,17 +35,17 @@ use Twig\RuntimeLoader\RuntimeLoaderInterface;
 use Twig\TokenParser\TokenParserInterface;
 
 /**
- * Stores the Twig configuration.
+ * Stores the Twig configuration and renders templates.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
 class Environment
 {
-    const VERSION = '1.42.3';
-    const VERSION_ID = 14203;
+    const VERSION = '1.44.1';
+    const VERSION_ID = 14401;
     const MAJOR_VERSION = 1;
-    const MINOR_VERSION = 42;
-    const RELEASE_VERSION = 3;
+    const MINOR_VERSION = 44;
+    const RELEASE_VERSION = 1;
     const EXTRA_VERSION = '';
 
     protected $charset;
@@ -515,7 +515,7 @@ class Environment
      *
      * This method should not be used as a generic way to load templates.
      *
-     * @param string $template The template name
+     * @param string $template The template source
      * @param string $name     An optional name of the template to be used in error messages
      *
      * @return TemplateWrapper A template instance representing the given template name
diff --git a/vendor/twig/twig/src/ExpressionParser.php b/vendor/twig/twig/src/ExpressionParser.php
index 9066ade1..fa480a07 100644
--- a/vendor/twig/twig/src/ExpressionParser.php
+++ b/vendor/twig/twig/src/ExpressionParser.php
@@ -376,7 +376,16 @@ class ExpressionParser
             //  * a string -- 'a'
             //  * a name, which is equivalent to a string -- a
             //  * an expression, which must be enclosed in parentheses -- (1 + 2)
-            if (($token = $stream->nextIf(Token::STRING_TYPE)) || ($token = $stream->nextIf(Token::NAME_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) {
+            if ($token = $stream->nextIf(Token::NAME_TYPE)) {
+                $key = new ConstantExpression($token->getValue(), $token->getLine());
+
+                // {a} is a shortcut for {a:a}
+                if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) {
+                    $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine());
+                    $node->addElement($value, $key);
+                    continue;
+                }
+            } elseif (($token = $stream->nextIf(Token::STRING_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) {
                 $key = new ConstantExpression($token->getValue(), $token->getLine());
             } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
                 $key = $this->parseExpression();
@@ -598,6 +607,11 @@ class ExpressionParser
         while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
             if (!empty($args)) {
                 $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
+
+                // if the comma above was a trailing comma, early exit the argument parse loop
+                if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
+                    break;
+                }
             }
 
             if ($definition) {
@@ -657,7 +671,7 @@ class ExpressionParser
                 $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to');
             }
             $value = $token->getValue();
-            if (\in_array(strtolower($value), ['true', 'false', 'none', 'null'])) {
+            if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) {
                 throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext());
             }
             $targets[] = new AssignNameExpression($value, $token->getLine());
@@ -697,6 +711,8 @@ class ExpressionParser
         $arguments = null;
         if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
             $arguments = $this->parseArguments(true);
+        } elseif ($test->hasOneMandatoryArgument()) {
+            $arguments = new Node([0 => $this->parsePrimaryExpression()]);
         }
 
         return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine());
@@ -740,7 +756,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $test->getAlternative());
             }
             $src = $stream->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $stream->getCurrent()->getLine());
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine());
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
@@ -770,7 +786,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $function->getAlternative());
             }
             $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line);
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
@@ -800,7 +816,7 @@ class ExpressionParser
                 $message .= sprintf('. Use "%s" instead', $filter->getAlternative());
             }
             $src = $this->parser->getStream()->getSourceContext();
-            $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line);
+            $message .= sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
 
             @trigger_error($message, E_USER_DEPRECATED);
         }
diff --git a/vendor/twig/twig/src/Extension/AbstractExtension.php b/vendor/twig/twig/src/Extension/AbstractExtension.php
index fa3245b2..cabe7182 100644
--- a/vendor/twig/twig/src/Extension/AbstractExtension.php
+++ b/vendor/twig/twig/src/Extension/AbstractExtension.php
@@ -65,7 +65,7 @@ abstract class AbstractExtension implements ExtensionInterface
      */
     public function getName()
     {
-        return \get_class($this);
+        return static::class;
     }
 }
 
diff --git a/vendor/twig/twig/src/Extension/CoreExtension.php b/vendor/twig/twig/src/Extension/CoreExtension.php
index 5f3cc24a..b52cb29b 100644
--- a/vendor/twig/twig/src/Extension/CoreExtension.php
+++ b/vendor/twig/twig/src/Extension/CoreExtension.php
@@ -194,9 +194,9 @@ class CoreExtension extends AbstractExtension
             new TwigFilter('sort', 'twig_sort_filter'),
             new TwigFilter('merge', 'twig_array_merge'),
             new TwigFilter('batch', 'twig_array_batch'),
-            new TwigFilter('filter', 'twig_array_filter'),
-            new TwigFilter('map', 'twig_array_map'),
-            new TwigFilter('reduce', 'twig_array_reduce'),
+            new TwigFilter('filter', 'twig_array_filter', ['needs_environment' => true]),
+            new TwigFilter('map', 'twig_array_map', ['needs_environment' => true]),
+            new TwigFilter('reduce', 'twig_array_reduce', ['needs_environment' => true]),
 
             // string/array filters
             new TwigFilter('reverse', 'twig_reverse_filter', ['needs_environment' => true]),
@@ -244,11 +244,11 @@ class CoreExtension extends AbstractExtension
             new TwigTest('odd', null, ['node_class' => '\Twig\Node\Expression\Test\OddTest']),
             new TwigTest('defined', null, ['node_class' => '\Twig\Node\Expression\Test\DefinedTest']),
             new TwigTest('sameas', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'deprecated' => '1.21', 'alternative' => 'same as']),
-            new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest']),
+            new TwigTest('same as', null, ['node_class' => '\Twig\Node\Expression\Test\SameasTest', 'one_mandatory_argument' => true]),
             new TwigTest('none', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
             new TwigTest('null', null, ['node_class' => '\Twig\Node\Expression\Test\NullTest']),
             new TwigTest('divisibleby', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'deprecated' => '1.21', 'alternative' => 'divisible by']),
-            new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest']),
+            new TwigTest('divisible by', null, ['node_class' => '\Twig\Node\Expression\Test\DivisiblebyTest', 'one_mandatory_argument' => true]),
             new TwigTest('constant', null, ['node_class' => '\Twig\Node\Expression\Test\ConstantTest']),
             new TwigTest('empty', 'twig_test_empty'),
             new TwigTest('iterable', 'twig_test_iterable'),
@@ -313,6 +313,8 @@ use Twig\Loader\SourceContextLoaderInterface;
 use Twig\Markup;
 use Twig\Node\Expression\ConstantExpression;
 use Twig\Node\Node;
+use Twig\Template;
+use Twig\TemplateWrapper;
 
 /**
  * Cycles over a value.
@@ -459,7 +461,7 @@ function twig_date_modify_filter(Environment $env, $date, $modifier)
  * @param \DateTime|\DateTimeInterface|string|null $date     A date
  * @param \DateTimeZone|string|false|null          $timezone The target timezone, null to use the default, false to leave unchanged
  *
- * @return \DateTime
+ * @return \DateTimeInterface
  */
 function twig_date_converter(Environment $env, $date = null, $timezone = null)
 {
@@ -539,15 +541,15 @@ function twig_replace_filter($str, $from, $to = null)
  */
 function twig_round($value, $precision = 0, $method = 'common')
 {
-    if ('common' == $method) {
+    if ('common' === $method) {
         return round($value, $precision);
     }
 
-    if ('ceil' != $method && 'floor' != $method) {
+    if ('ceil' !== $method && 'floor' !== $method) {
         throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.');
     }
 
-    return $method($value * pow(10, $precision)) / pow(10, $precision);
+    return $method($value * 10 ** $precision) / 10 ** $precision;
 }
 
 /**
@@ -1214,7 +1216,7 @@ function _twig_escape_js_callback($matches)
 
     /*
      * A few characters have short escape sequences in JSON and JavaScript.
-     * Escape sequences supported only by JavaScript, not JSON, are ommitted.
+     * Escape sequences supported only by JavaScript, not JSON, are omitted.
      * \" is also supported but omitted, because the resulting string is not HTML safe.
      */
     static $shortMap = [
@@ -1231,15 +1233,18 @@ function _twig_escape_js_callback($matches)
         return $shortMap[$char];
     }
 
-    // \uHHHH
-    $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8');
-    $char = strtoupper(bin2hex($char));
-
-    if (4 >= \strlen($char)) {
-        return sprintf('\u%04s', $char);
+    $codepoint = mb_ord($char);
+    if (0x10000 > $codepoint) {
+        return sprintf('\u%04X', $codepoint);
     }
 
-    return sprintf('\u%04s\u%04s', substr($char, 0, -4), substr($char, -4));
+    // Split characters outside the BMP into surrogate pairs
+    // https://tools.ietf.org/html/rfc2781.html#section-2.1
+    $u = $codepoint - 0x10000;
+    $high = 0xD800 | ($u >> 10);
+    $low = 0xDC00 | ($u & 0x3FF);
+
+    return sprintf('\u%04X\u%04X', $high, $low);
 }
 
 function _twig_escape_css_callback($matches)
@@ -1504,7 +1509,7 @@ function twig_to_array($seq, $preserveKeys = true)
 function twig_test_empty($value)
 {
     if ($value instanceof \Countable) {
-        return 0 == \count($value);
+        return 0 === \count($value);
     }
 
     if ($value instanceof \Traversable) {
@@ -1560,6 +1565,13 @@ function twig_include(Environment $env, $context, $template, $variables = [], $w
         if (!$alreadySandboxed = $sandbox->isSandboxed()) {
             $sandbox->enableSandbox();
         }
+
+        foreach ((\is_array($template) ? $template : [$template]) as $name) {
+            // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security
+            if ($name instanceof TemplateWrapper || $name instanceof Template) {
+                $name->unwrap()->checkSecurity();
+            }
+        }
     }
 
     $loaded = null;
@@ -1693,8 +1705,16 @@ function twig_array_batch($items, $size, $fill = null, $preserveKeys = true)
     return $result;
 }
 
-function twig_array_filter($array, $arrow)
+function twig_array_filter(Environment $env, $array, $arrow)
 {
+    if (!twig_test_iterable($array)) {
+        throw new RuntimeError(sprintf('The "filter" filter expects an array or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array)));
+    }
+
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.');
+    }
+
     if (\is_array($array)) {
         if (\PHP_VERSION_ID >= 50600) {
             return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH);
@@ -1707,8 +1727,12 @@ function twig_array_filter($array, $arrow)
     return new \CallbackFilterIterator(new \IteratorIterator($array), $arrow);
 }
 
-function twig_array_map($array, $arrow)
+function twig_array_map(Environment $env, $array, $arrow)
 {
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.');
+    }
+
     $r = [];
     foreach ($array as $k => $v) {
         $r[$k] = $arrow($v, $k);
@@ -1717,9 +1741,17 @@ function twig_array_map($array, $arrow)
     return $r;
 }
 
-function twig_array_reduce($array, $arrow, $initial = null)
+function twig_array_reduce(Environment $env, $array, $arrow, $initial = null)
 {
+    if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) {
+        throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.');
+    }
+
     if (!\is_array($array)) {
+        if (!$array instanceof \Traversable) {
+            throw new RuntimeError(sprintf('The "reduce" filter only works with arrays or "Traversable", got "%s" as first argument.', \gettype($array)));
+        }
+
         $array = iterator_to_array($array);
     }
 
diff --git a/vendor/twig/twig/src/Extension/ProfilerExtension.php b/vendor/twig/twig/src/Extension/ProfilerExtension.php
index 7b21b9fa..ad494585 100644
--- a/vendor/twig/twig/src/Extension/ProfilerExtension.php
+++ b/vendor/twig/twig/src/Extension/ProfilerExtension.php
@@ -41,7 +41,7 @@ class ProfilerExtension extends AbstractExtension
 
     public function getNodeVisitors()
     {
-        return [new ProfilerNodeVisitor(\get_class($this))];
+        return [new ProfilerNodeVisitor(static::class)];
     }
 
     public function getName()
diff --git a/vendor/twig/twig/src/Lexer.php b/vendor/twig/twig/src/Lexer.php
index 8cae3597..67d94ab9 100644
--- a/vendor/twig/twig/src/Lexer.php
+++ b/vendor/twig/twig/src/Lexer.php
@@ -47,7 +47,7 @@ class Lexer implements \Twig_LexerInterface
     const STATE_INTERPOLATION = 4;
 
     const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
-    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A';
+    const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A';
     const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
     const REGEX_DQ_STRING_DELIM = '/"/A';
     const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
@@ -117,7 +117,7 @@ class Lexer implements \Twig_LexerInterface
             // #}
             'lex_comment' => '{
                 (?:'.
-                    preg_quote($this->options['whitespace_trim']).preg_quote($this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n?
+                    preg_quote($this->options['whitespace_trim'].$this->options['tag_comment'][1], '#').'\s*\n?'. // -#}\s*\n?
                     '|'.
                     preg_quote($this->options['whitespace_line_trim'].$this->options['tag_comment'][1], '#').'['.$this->options['whitespace_line_chars'].']*'. // ~#}[ \t\0\x0B]*
                     '|'.
@@ -499,11 +499,15 @@ class Lexer implements \Twig_LexerInterface
         $regex = [];
         foreach ($operators as $operator => $length) {
             // an operator that ends with a character must be followed by
-            // a whitespace or a parenthesis
+            // a whitespace, a parenthesis, an opening map [ or sequence {
+            $r = preg_quote($operator, '/');
             if (ctype_alpha($operator[$length - 1])) {
-                $r = preg_quote($operator, '/').'(?=[\s()])';
-            } else {
-                $r = preg_quote($operator, '/');
+                $r .= '(?=[\s()\[{])';
+            }
+
+            // an operator that begins with a character must not have a dot or pipe before
+            if (ctype_alpha($operator[0])) {
+                $r = '(?<![\.\|])'.$r;
             }
 
             // an operator with a space can be any amount of whitespaces
diff --git a/vendor/twig/twig/src/Loader/ArrayLoader.php b/vendor/twig/twig/src/Loader/ArrayLoader.php
index 6bc430f5..e2c7b33c 100644
--- a/vendor/twig/twig/src/Loader/ArrayLoader.php
+++ b/vendor/twig/twig/src/Loader/ArrayLoader.php
@@ -53,7 +53,7 @@ class ArrayLoader implements LoaderInterface, ExistsLoaderInterface, SourceConte
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         $name = (string) $name;
         if (!isset($this->templates[$name])) {
diff --git a/vendor/twig/twig/src/Loader/ChainLoader.php b/vendor/twig/twig/src/Loader/ChainLoader.php
index 25ac55a3..d1c08670 100644
--- a/vendor/twig/twig/src/Loader/ChainLoader.php
+++ b/vendor/twig/twig/src/Loader/ChainLoader.php
@@ -52,7 +52,7 @@ class ChainLoader implements LoaderInterface, ExistsLoaderInterface, SourceConte
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         $exceptions = [];
         foreach ($this->loaders as $loader) {
diff --git a/vendor/twig/twig/src/Loader/FilesystemLoader.php b/vendor/twig/twig/src/Loader/FilesystemLoader.php
index 19b43a29..54303ffd 100644
--- a/vendor/twig/twig/src/Loader/FilesystemLoader.php
+++ b/vendor/twig/twig/src/Loader/FilesystemLoader.php
@@ -138,7 +138,7 @@ class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, Source
 
     public function getSource($name)
     {
-        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', \get_class($this)), E_USER_DEPRECATED);
+        @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', static::class), E_USER_DEPRECATED);
 
         if (null === ($path = $this->findTemplate($name)) || false === $path) {
             return '';
@@ -180,7 +180,7 @@ class FilesystemLoader implements LoaderInterface, ExistsLoaderInterface, Source
         try {
             return null !== ($path = $this->findTemplate($name, false)) && false !== $path;
         } catch (LoaderError $e) {
-            @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', \get_class($this)), E_USER_DEPRECATED);
+            @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', static::class), E_USER_DEPRECATED);
 
             return false;
         }
diff --git a/vendor/twig/twig/src/Node/CheckSecurityNode.php b/vendor/twig/twig/src/Node/CheckSecurityNode.php
index cf0a7a13..5a5ae63d 100644
--- a/vendor/twig/twig/src/Node/CheckSecurityNode.php
+++ b/vendor/twig/twig/src/Node/CheckSecurityNode.php
@@ -45,10 +45,13 @@ class CheckSecurityNode extends Node
         }
 
         $compiler
-            ->write("\$this->sandbox = \$this->env->getExtension('\Twig\Extension\SandboxExtension');\n")
-            ->write('$tags = ')->repr(array_filter($tags))->raw(";\n")
-            ->write('$filters = ')->repr(array_filter($filters))->raw(";\n")
-            ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n")
+            ->write("\n")
+            ->write("public function checkSecurity()\n")
+            ->write("{\n")
+            ->indent()
+            ->write('static $tags = ')->repr(array_filter($tags))->raw(";\n")
+            ->write('static $filters = ')->repr(array_filter($filters))->raw(";\n")
+            ->write('static $functions = ')->repr(array_filter($functions))->raw(";\n\n")
             ->write("try {\n")
             ->indent()
             ->write("\$this->sandbox->checkSecurity(\n")
@@ -78,6 +81,8 @@ class CheckSecurityNode extends Node
             ->write("throw \$e;\n")
             ->outdent()
             ->write("}\n\n")
+            ->outdent()
+            ->write("}\n")
         ;
     }
 }
diff --git a/vendor/twig/twig/src/Node/EmbedNode.php b/vendor/twig/twig/src/Node/EmbedNode.php
index 05051ece..dde3db1b 100644
--- a/vendor/twig/twig/src/Node/EmbedNode.php
+++ b/vendor/twig/twig/src/Node/EmbedNode.php
@@ -23,7 +23,7 @@ use Twig\Node\Expression\ConstantExpression;
 class EmbedNode extends IncludeNode
 {
     // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
-    public function __construct($name, $index, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
+    public function __construct($name, $index, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
     {
         parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
 
diff --git a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
index 0a56849c..7e3c3e48 100644
--- a/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
@@ -25,7 +25,7 @@ class BlockReferenceExpression extends AbstractExpression
     /**
      * @param Node|null $template
      */
-    public function __construct(\Twig_NodeInterface $name, $template = null, $lineno, $tag = null)
+    public function __construct(\Twig_NodeInterface $name, $template, $lineno, $tag = null)
     {
         if (\is_bool($template)) {
             @trigger_error(sprintf('The %s method "$asString" argument is deprecated since version 1.28 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED);
diff --git a/vendor/twig/twig/src/Node/Expression/CallExpression.php b/vendor/twig/twig/src/Node/Expression/CallExpression.php
index d202a739..d0667379 100644
--- a/vendor/twig/twig/src/Node/Expression/CallExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/CallExpression.php
@@ -149,7 +149,16 @@ abstract class CallExpression extends AbstractExpression
         $optionalArguments = [];
         $pos = 0;
         foreach ($callableParameters as $callableParameter) {
-            $names[] = $name = $this->normalizeName($callableParameter->name);
+            $name = $this->normalizeName($callableParameter->name);
+            if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) {
+                if ('start' === $name) {
+                    $name = 'low';
+                } elseif ('end' === $name) {
+                    $name = 'high';
+                }
+            }
+
+            $names[] = $name;
 
             if (\array_key_exists($name, $parameters)) {
                 if (\array_key_exists($pos, $parameters)) {
@@ -254,7 +263,8 @@ abstract class CallExpression extends AbstractExpression
         }
         if ($isVariadic) {
             $argument = end($parameters);
-            if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
+            $isArray = $argument && $argument->hasType() && 'array' === $argument->getType()->getName();
+            if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
                 array_pop($parameters);
             } else {
                 $callableName = $r->name;
diff --git a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
index b790bf7a..06511c77 100644
--- a/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
@@ -17,7 +17,7 @@ use Twig\Template;
 
 class GetAttrExpression extends AbstractExpression
 {
-    public function __construct(AbstractExpression $node, AbstractExpression $attribute, AbstractExpression $arguments = null, $type, $lineno)
+    public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno)
     {
         $nodes = ['node' => $node, 'attribute' => $attribute];
         if (null !== $arguments) {
diff --git a/vendor/twig/twig/src/Node/Expression/NameExpression.php b/vendor/twig/twig/src/Node/Expression/NameExpression.php
index d3f7d107..e7be5ff5 100644
--- a/vendor/twig/twig/src/Node/Expression/NameExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/NameExpression.php
@@ -36,7 +36,7 @@ class NameExpression extends AbstractExpression
         if ($this->getAttribute('is_defined_test')) {
             if ($this->isSpecial()) {
                 $compiler->repr(true);
-            } elseif (\PHP_VERSION_ID >= 700400) {
+            } elseif (\PHP_VERSION_ID >= 70400) {
                 $compiler
                     ->raw('array_key_exists(')
                     ->string($name)
diff --git a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
index 49326d46..917d31a3 100644
--- a/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
@@ -22,11 +22,15 @@ class NullCoalesceExpression extends ConditionalExpression
 {
     public function __construct(\Twig_NodeInterface $left, \Twig_NodeInterface $right, $lineno)
     {
-        $test = new AndBinary(
-            new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine()),
-            new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
-            $left->getTemplateLine()
-        );
+        $test = new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine());
+        // for "block()", we don't need the null test as the return value is always a string
+        if (!$left instanceof BlockReferenceExpression) {
+            $test = new AndBinary(
+                $test,
+                new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
+                $left->getTemplateLine()
+            );
+        }
 
         parent::__construct($test, $left, $right, $lineno);
     }
diff --git a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
index 2222e11c..e2b3a0b8 100644
--- a/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
+++ b/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
@@ -33,7 +33,7 @@ use Twig\Node\Expression\TestExpression;
  */
 class DefinedTest extends TestExpression
 {
-    public function __construct(\Twig_NodeInterface $node, $name, \Twig_NodeInterface $arguments = null, $lineno)
+    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
     {
         if ($node instanceof NameExpression) {
             $node->setAttribute('is_defined_test', true);
diff --git a/vendor/twig/twig/src/Node/Expression/TestExpression.php b/vendor/twig/twig/src/Node/Expression/TestExpression.php
index 8fc31d3a..fa3c18fb 100644
--- a/vendor/twig/twig/src/Node/Expression/TestExpression.php
+++ b/vendor/twig/twig/src/Node/Expression/TestExpression.php
@@ -16,7 +16,7 @@ use Twig\TwigTest;
 
 class TestExpression extends CallExpression
 {
-    public function __construct(\Twig_NodeInterface $node, $name, \Twig_NodeInterface $arguments = null, $lineno)
+    public function __construct(\Twig_NodeInterface $node, $name, ?\Twig_NodeInterface $arguments, $lineno)
     {
         $nodes = ['node' => $node];
         if (null !== $arguments) {
diff --git a/vendor/twig/twig/src/Node/ForNode.php b/vendor/twig/twig/src/Node/ForNode.php
index 49409a39..111da37e 100644
--- a/vendor/twig/twig/src/Node/ForNode.php
+++ b/vendor/twig/twig/src/Node/ForNode.php
@@ -25,7 +25,7 @@ class ForNode extends Node
 {
     protected $loop;
 
-    public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, AbstractExpression $ifexpr = null, \Twig_NodeInterface $body, \Twig_NodeInterface $else = null, $lineno, $tag = null)
+    public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?AbstractExpression $ifexpr, \Twig_NodeInterface $body, ?\Twig_NodeInterface $else, $lineno, $tag = null)
     {
         $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]);
 
diff --git a/vendor/twig/twig/src/Node/IfNode.php b/vendor/twig/twig/src/Node/IfNode.php
index 4836d91f..da2ad344 100644
--- a/vendor/twig/twig/src/Node/IfNode.php
+++ b/vendor/twig/twig/src/Node/IfNode.php
@@ -21,7 +21,7 @@ use Twig\Compiler;
  */
 class IfNode extends Node
 {
-    public function __construct(\Twig_NodeInterface $tests, \Twig_NodeInterface $else = null, $lineno, $tag = null)
+    public function __construct(\Twig_NodeInterface $tests, ?\Twig_NodeInterface $else, $lineno, $tag = null)
     {
         $nodes = ['tests' => $tests];
         if (null !== $else) {
diff --git a/vendor/twig/twig/src/Node/IncludeNode.php b/vendor/twig/twig/src/Node/IncludeNode.php
index 544db81e..d0b6184c 100644
--- a/vendor/twig/twig/src/Node/IncludeNode.php
+++ b/vendor/twig/twig/src/Node/IncludeNode.php
@@ -22,7 +22,7 @@ use Twig\Node\Expression\AbstractExpression;
  */
 class IncludeNode extends Node implements NodeOutputInterface
 {
-    public function __construct(AbstractExpression $expr, AbstractExpression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
+    public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, $only, $ignoreMissing, $lineno, $tag = null)
     {
         $nodes = ['expr' => $expr];
         if (null !== $variables) {
diff --git a/vendor/twig/twig/src/Node/ModuleNode.php b/vendor/twig/twig/src/Node/ModuleNode.php
index aab2aa33..89d602b9 100644
--- a/vendor/twig/twig/src/Node/ModuleNode.php
+++ b/vendor/twig/twig/src/Node/ModuleNode.php
@@ -28,7 +28,7 @@ use Twig\Source;
  */
 class ModuleNode extends Node
 {
-    public function __construct(\Twig_NodeInterface $body, AbstractExpression $parent = null, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '')
+    public function __construct(\Twig_NodeInterface $body, ?AbstractExpression $parent, \Twig_NodeInterface $blocks, \Twig_NodeInterface $macros, \Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '')
     {
         if (!$name instanceof Source) {
             @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a \Twig\Source instance instead.', __METHOD__), E_USER_DEPRECATED);
diff --git a/vendor/twig/twig/src/Node/Node.php b/vendor/twig/twig/src/Node/Node.php
index c890feb7..5ec7a73f 100644
--- a/vendor/twig/twig/src/Node/Node.php
+++ b/vendor/twig/twig/src/Node/Node.php
@@ -40,7 +40,7 @@ class Node implements \Twig_NodeInterface
     {
         foreach ($nodes as $name => $node) {
             if (!$node instanceof \Twig_NodeInterface) {
-                @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED);
+                @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
             }
         }
         $this->nodes = $nodes;
@@ -56,7 +56,7 @@ class Node implements \Twig_NodeInterface
             $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
         }
 
-        $repr = [\get_class($this).'('.implode(', ', $attributes)];
+        $repr = [static::class.'('.implode(', ', $attributes)];
 
         if (\count($this->nodes)) {
             foreach ($this->nodes as $name => $node) {
@@ -89,7 +89,7 @@ class Node implements \Twig_NodeInterface
         $dom->appendChild($xml = $dom->createElement('twig'));
 
         $xml->appendChild($node = $dom->createElement('node'));
-        $node->setAttribute('class', \get_class($this));
+        $node->setAttribute('class', static::class);
 
         foreach ($this->attributes as $name => $value) {
             $node->appendChild($attribute = $dom->createElement('attribute'));
@@ -153,7 +153,7 @@ class Node implements \Twig_NodeInterface
     public function getAttribute($name)
     {
         if (!\array_key_exists($name, $this->attributes)) {
-            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, \get_class($this)));
+            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class));
         }
 
         return $this->attributes[$name];
@@ -187,7 +187,7 @@ class Node implements \Twig_NodeInterface
     public function getNode($name)
     {
         if (!\array_key_exists($name, $this->nodes)) {
-            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, \get_class($this)));
+            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class));
         }
 
         return $this->nodes[$name];
@@ -196,7 +196,7 @@ class Node implements \Twig_NodeInterface
     public function setNode($name, $node = null)
     {
         if (!$node instanceof \Twig_NodeInterface) {
-            @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, \get_class($this)), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class), E_USER_DEPRECATED);
         }
 
         $this->nodes[$name] = $node;
@@ -236,7 +236,7 @@ class Node implements \Twig_NodeInterface
     {
         $this->sourceContext = $source;
         foreach ($this->nodes as $node) {
-            if ($node instanceof Node) {
+            if ($node instanceof self) {
                 $node->setSourceContext($source);
             }
         }
diff --git a/vendor/twig/twig/src/Node/SandboxNode.php b/vendor/twig/twig/src/Node/SandboxNode.php
index 2d644c3a..3dcd4d8f 100644
--- a/vendor/twig/twig/src/Node/SandboxNode.php
+++ b/vendor/twig/twig/src/Node/SandboxNode.php
@@ -34,12 +34,19 @@ class SandboxNode extends Node
             ->write("\$this->sandbox->enableSandbox();\n")
             ->outdent()
             ->write("}\n")
+            ->write("try {\n")
+            ->indent()
             ->subcompile($this->getNode('body'))
+            ->outdent()
+            ->write("} finally {\n")
+            ->indent()
             ->write("if (!\$alreadySandboxed) {\n")
             ->indent()
             ->write("\$this->sandbox->disableSandbox();\n")
             ->outdent()
             ->write("}\n")
+            ->outdent()
+            ->write("}\n")
         ;
     }
 }
diff --git a/vendor/twig/twig/src/Node/WithNode.php b/vendor/twig/twig/src/Node/WithNode.php
index f5ae9246..d291dcf9 100644
--- a/vendor/twig/twig/src/Node/WithNode.php
+++ b/vendor/twig/twig/src/Node/WithNode.php
@@ -20,7 +20,7 @@ use Twig\Compiler;
  */
 class WithNode extends Node
 {
-    public function __construct(Node $body, Node $variables = null, $only = false, $lineno, $tag = null)
+    public function __construct(Node $body, ?Node $variables, $only, $lineno, $tag = null)
     {
         $nodes = ['body' => $body];
         if (null !== $variables) {
diff --git a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
index c9403398..9bee9f5c 100644
--- a/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
+++ b/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
@@ -12,6 +12,7 @@
 namespace Twig\NodeVisitor;
 
 use Twig\Environment;
+use Twig\Node\CheckSecurityCallNode;
 use Twig\Node\CheckSecurityNode;
 use Twig\Node\CheckToStringNode;
 use Twig\Node\Expression\Binary\ConcatBinary;
@@ -102,7 +103,8 @@ class SandboxNodeVisitor extends AbstractNodeVisitor
         if ($node instanceof ModuleNode) {
             $this->inAModule = false;
 
-            $node->getNode('constructor_end')->setNode('_security_check', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('display_start')]));
+            $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')]));
+            $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')]));
         } elseif ($this->inAModule) {
             if ($node instanceof PrintNode || $node instanceof SetNode) {
                 $this->needsToStringWrap = false;
diff --git a/vendor/twig/twig/src/Parser.php b/vendor/twig/twig/src/Parser.php
index 0ea102cc..9fb6a83a 100644
--- a/vendor/twig/twig/src/Parser.php
+++ b/vendor/twig/twig/src/Parser.php
@@ -299,7 +299,7 @@ class Parser implements \Twig_ParserInterface
             $this->reservedMacroNames = [];
             $r = new \ReflectionClass($this->env->getBaseTemplateClass());
             foreach ($r->getMethods() as $method) {
-                $methodName = strtolower($method->getName());
+                $methodName = strtr($method->getName(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
 
                 if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) {
                     $this->reservedMacroNames[] = substr($methodName, 3);
@@ -307,7 +307,7 @@ class Parser implements \Twig_ParserInterface
             }
         }
 
-        return \in_array(strtolower($name), $this->reservedMacroNames);
+        return \in_array(strtr($name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), $this->reservedMacroNames);
     }
 
     public function addTrait($trait)
diff --git a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
index 31b6c348..60384359 100644
--- a/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
+++ b/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
@@ -51,7 +51,7 @@ class SecurityPolicy implements SecurityPolicyInterface
     {
         $this->allowedMethods = [];
         foreach ($methods as $class => $m) {
-            $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]);
+            $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]);
         }
     }
 
@@ -93,7 +93,7 @@ class SecurityPolicy implements SecurityPolicyInterface
         }
 
         $allowed = false;
-        $method = strtolower($method);
+        $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
         foreach ($this->allowedMethods as $class => $methods) {
             if ($obj instanceof $class) {
                 $allowed = \in_array($method, $methods);
diff --git a/vendor/twig/twig/src/Template.php b/vendor/twig/twig/src/Template.php
index 3f7447c1..032efe32 100644
--- a/vendor/twig/twig/src/Template.php
+++ b/vendor/twig/twig/src/Template.php
@@ -111,8 +111,6 @@ abstract class Template implements \Twig_TemplateInterface
      * This method is for internal use only and should never be called
      * directly.
      *
-     * @param array $context
-     *
      * @return \Twig_TemplateInterface|TemplateWrapper|false The parent template or false if there is no parent
      *
      * @internal
@@ -366,7 +364,7 @@ abstract class Template implements \Twig_TemplateInterface
             }
 
             if ($template === $this->getTemplateName()) {
-                $class = \get_class($this);
+                $class = static::class;
                 if (false !== $pos = strrpos($class, '___', -1)) {
                     $class = substr($class, 0, $pos);
                 }
@@ -399,7 +397,7 @@ abstract class Template implements \Twig_TemplateInterface
      *
      * @return Template
      */
-    protected function unwrap()
+    public function unwrap()
     {
         return $this;
     }
@@ -628,7 +626,7 @@ abstract class Template implements \Twig_TemplateInterface
 
                 foreach ($ref->getMethods(\ReflectionMethod::IS_PUBLIC) as $refMethod) {
                     // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment
-                    if ('getenvironment' !== strtolower($refMethod->name)) {
+                    if ('getenvironment' !== strtr($refMethod->name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')) {
                         $methods[] = $refMethod->name;
                     }
                 }
@@ -642,7 +640,7 @@ abstract class Template implements \Twig_TemplateInterface
 
             foreach ($methods as $method) {
                 $cache[$method] = $method;
-                $cache[$lcName = strtolower($method)] = $method;
+                $cache[$lcName = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')] = $method;
 
                 if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) {
                     $name = substr($method, 3);
@@ -670,7 +668,7 @@ abstract class Template implements \Twig_TemplateInterface
         $call = false;
         if (isset(self::$cache[$class][$item])) {
             $method = self::$cache[$class][$item];
-        } elseif (isset(self::$cache[$class][$lcItem = strtolower($item)])) {
+        } elseif (isset(self::$cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) {
             $method = self::$cache[$class][$lcItem];
         } elseif (isset(self::$cache[$class]['__call'])) {
             $method = $item;
diff --git a/vendor/twig/twig/src/Test/IntegrationTestCase.php b/vendor/twig/twig/src/Test/IntegrationTestCase.php
index 36b36075..905f9725 100644
--- a/vendor/twig/twig/src/Test/IntegrationTestCase.php
+++ b/vendor/twig/twig/src/Test/IntegrationTestCase.php
@@ -247,7 +247,7 @@ abstract class IntegrationTestCase extends TestCase
         $templates = [];
         preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER);
         foreach ($matches as $match) {
-            $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
+            $templates[($match[1] ?: 'index.twig')] = $match[2];
         }
 
         return $templates;
diff --git a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
index 879879a2..c75e5ef8 100644
--- a/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
+++ b/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
@@ -22,7 +22,7 @@ use Twig\Token;
  *
  *   {% apply upper %}
  *      This text becomes uppercase
- *   {% endapplys %}
+ *   {% endapply %}
  */
 final class ApplyTokenParser extends AbstractTokenParser
 {
diff --git a/vendor/twig/twig/src/TwigTest.php b/vendor/twig/twig/src/TwigTest.php
index 5054965f..962872d0 100644
--- a/vendor/twig/twig/src/TwigTest.php
+++ b/vendor/twig/twig/src/TwigTest.php
@@ -35,6 +35,7 @@ class TwigTest
             'node_class' => '\Twig\Node\Expression\TestExpression',
             'deprecated' => false,
             'alternative' => null,
+            'one_mandatory_argument' => false,
         ], $options);
     }
 
@@ -82,6 +83,11 @@ class TwigTest
     {
         return $this->arguments;
     }
+
+    public function hasOneMandatoryArgument(): bool
+    {
+        return (bool) $this->options['one_mandatory_argument'];
+    }
 }
 
 class_alias('Twig\TwigTest', 'Twig_SimpleTest');
diff --git a/vendor/twig/twig/tests/AutoloaderTest.php b/vendor/twig/twig/tests/AutoloaderTest.php
deleted file mode 100644
index 9bf538ae..00000000
--- a/vendor/twig/twig/tests/AutoloaderTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class AutoloaderTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testAutoload()
-    {
-        $this->assertFalse(class_exists('FooBarFoo'), '->autoload() does not try to load classes that does not begin with Twig');
-
-        $autoloader = new \Twig_Autoloader();
-        $this->assertNull($autoloader->autoload('Foo'), '->autoload() returns false if it is not able to load a class');
-    }
-}
diff --git a/vendor/twig/twig/tests/Cache/FilesystemTest.php b/vendor/twig/twig/tests/Cache/FilesystemTest.php
deleted file mode 100644
index c810caed..00000000
--- a/vendor/twig/twig/tests/Cache/FilesystemTest.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?php
-
-namespace Twig\Tests\Cache;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Cache\FilesystemCache;
-use Twig\Tests\FilesystemHelper;
-
-class FilesystemTest extends \PHPUnit\Framework\TestCase
-{
-    private $classname;
-    private $directory;
-    private $cache;
-
-    protected function setUp()
-    {
-        $nonce = hash('sha256', uniqid(mt_rand(), true));
-        $this->classname = '__Twig_Tests_Cache_FilesystemTest_Template_'.$nonce;
-        $this->directory = sys_get_temp_dir().'/twig-test';
-        $this->cache = new FilesystemCache($this->directory);
-    }
-
-    protected function tearDown()
-    {
-        if (file_exists($this->directory)) {
-            FilesystemHelper::removeDir($this->directory);
-        }
-    }
-
-    public function testLoad()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $dir = \dirname($key);
-        @mkdir($dir, 0777, true);
-        $this->assertDirectoryExists($dir);
-        $this->assertFalse(class_exists($this->classname, false));
-
-        $content = $this->generateSource();
-        file_put_contents($key, $content);
-
-        $this->cache->load($key);
-
-        $this->assertTrue(class_exists($this->classname, false));
-    }
-
-    public function testLoadMissing()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $this->assertFalse(class_exists($this->classname, false));
-
-        $this->cache->load($key);
-
-        $this->assertFalse(class_exists($this->classname, false));
-    }
-
-    public function testWrite()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-        $this->assertFileNotExists($this->directory);
-
-        $this->cache->write($key, $content);
-
-        $this->assertFileExists($this->directory);
-        $this->assertFileExists($key);
-        $this->assertSame(file_get_contents($key), $content);
-    }
-
-    public function testWriteFailMkdir()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Unable to create the cache directory');
-
-        if (\defined('PHP_WINDOWS_VERSION_BUILD')) {
-            $this->markTestSkipped('Read-only directories not possible on Windows.');
-        }
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create read-only root directory.
-        @mkdir($this->directory, 0555, true);
-        $this->assertDirectoryExists($this->directory);
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testWriteFailDirWritable()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Unable to write in the cache directory');
-
-        if (\defined('PHP_WINDOWS_VERSION_BUILD')) {
-            $this->markTestSkipped('Read-only directories not possible on Windows.');
-        }
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create root directory.
-        @mkdir($this->directory, 0777, true);
-        // Create read-only subdirectory.
-        @mkdir($this->directory.'/cache', 0555);
-        $this->assertDirectoryExists($this->directory.'/cache');
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testWriteFailWriteFile()
-    {
-        $this->expectException('\RuntimeException');
-        $this->expectExceptionMessage('Failed to write cache file');
-
-        $key = $this->directory.'/cache/cachefile.php';
-        $content = $this->generateSource();
-
-        $this->assertFileNotExists($key);
-
-        // Create a directory in the place of the cache file.
-        @mkdir($key, 0777, true);
-        $this->assertDirectoryExists($key);
-
-        $this->cache->write($key, $content);
-    }
-
-    public function testGetTimestamp()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-
-        $dir = \dirname($key);
-        @mkdir($dir, 0777, true);
-        $this->assertDirectoryExists($dir);
-
-        // Create the file with a specific modification time.
-        touch($key, 1234567890);
-
-        $this->assertSame(1234567890, $this->cache->getTimestamp($key));
-    }
-
-    public function testGetTimestampMissingFile()
-    {
-        $key = $this->directory.'/cache/cachefile.php';
-        $this->assertSame(0, $this->cache->getTimestamp($key));
-    }
-
-    /**
-     * Test file cache is tolerant towards trailing (back)slashes on the configured cache directory.
-     *
-     * @dataProvider provideDirectories
-     */
-    public function testGenerateKey($expected, $input)
-    {
-        $cache = new FilesystemCache($input);
-        $this->assertRegExp($expected, $cache->generateKey('_test_', \get_class($this)));
-    }
-
-    public function provideDirectories()
-    {
-        $pattern = '#a/b/[a-zA-Z0-9]+/[a-zA-Z0-9]+.php$#';
-
-        return [
-            [$pattern, 'a/b'],
-            [$pattern, 'a/b/'],
-            [$pattern, 'a/b\\'],
-            [$pattern, 'a/b\\/'],
-            [$pattern, 'a/b\\//'],
-            ['#/'.substr($pattern, 1), '/a/b'],
-        ];
-    }
-
-    private function generateSource()
-    {
-        return strtr('<?php class {{classname}} {}', [
-            '{{classname}}' => $this->classname,
-        ]);
-    }
-}
diff --git a/vendor/twig/twig/tests/CompilerTest.php b/vendor/twig/twig/tests/CompilerTest.php
deleted file mode 100644
index cc462c25..00000000
--- a/vendor/twig/twig/tests/CompilerTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Compiler;
-use Twig\Environment;
-
-class CompilerTest extends \PHPUnit\Framework\TestCase
-{
-    public function testReprNumericValueWithLocale()
-    {
-        $compiler = new Compiler(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $locale = setlocale(LC_NUMERIC, 0);
-        if (false === $locale) {
-            $this->markTestSkipped('Your platform does not support locales.');
-        }
-
-        $required_locales = ['fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252'];
-        if (false === setlocale(LC_NUMERIC, $required_locales)) {
-            $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $required_locales));
-        }
-
-        $this->assertEquals('1.2', $compiler->repr(1.2)->getSource());
-        $this->assertStringContainsString('fr', strtolower(setlocale(LC_NUMERIC, 0)));
-
-        setlocale(LC_NUMERIC, $locale);
-    }
-}
diff --git a/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php b/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php
deleted file mode 100644
index c8564834..00000000
--- a/vendor/twig/twig/tests/ContainerRuntimeLoaderTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\RuntimeLoader\ContainerRuntimeLoader;
-
-class ContainerRuntimeLoaderTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoad()
-    {
-        $container = $this->createMock('Psr\Container\ContainerInterface');
-        $container->expects($this->once())->method('has')->with('stdClass')->willReturn(true);
-        $container->expects($this->once())->method('get')->with('stdClass')->willReturn(new \stdClass());
-
-        $loader = new ContainerRuntimeLoader($container);
-
-        $this->assertInstanceOf('stdClass', $loader->load('stdClass'));
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoadUnknownRuntimeReturnsNull()
-    {
-        $container = $this->createMock('Psr\Container\ContainerInterface');
-        $container->expects($this->once())->method('has')->with('Foo');
-        $container->expects($this->never())->method('get');
-
-        $loader = new ContainerRuntimeLoader($container);
-        $this->assertNull($loader->load('Foo'));
-    }
-}
diff --git a/vendor/twig/twig/tests/CustomExtensionTest.php b/vendor/twig/twig/tests/CustomExtensionTest.php
deleted file mode 100644
index b45e1434..00000000
--- a/vendor/twig/twig/tests/CustomExtensionTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Extension\ExtensionInterface;
-
-class CustomExtensionTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     * @dataProvider provideInvalidExtensions
-     */
-    public function testGetInvalidOperators(ExtensionInterface $extension, $expectedExceptionMessage)
-    {
-        $this->expectException('InvalidArgumentException');
-        $this->expectExceptionMessage($expectedExceptionMessage);
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $env->addExtension($extension);
-        $env->getUnaryOperators();
-    }
-
-    public function provideInvalidExtensions()
-    {
-        return [
-            [new InvalidOperatorExtension(new \stdClass()), '"Twig\Tests\InvalidOperatorExtension::getOperators()" must return an array with operators, got "stdClass".'],
-            [new InvalidOperatorExtension([1, 2, 3]), '"Twig\Tests\InvalidOperatorExtension::getOperators()" must return an array of 2 elements, got 3.'],
-        ];
-    }
-}
-
-class InvalidOperatorExtension implements ExtensionInterface
-{
-    private $operators;
-
-    public function __construct($operators)
-    {
-        $this->operators = $operators;
-    }
-
-    public function initRuntime(Environment $environment)
-    {
-    }
-
-    public function getTokenParsers()
-    {
-        return [];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [];
-    }
-
-    public function getFilters()
-    {
-        return [];
-    }
-
-    public function getTests()
-    {
-        return [];
-    }
-
-    public function getFunctions()
-    {
-        return [];
-    }
-
-    public function getGlobals()
-    {
-        return [];
-    }
-
-    public function getOperators()
-    {
-        return $this->operators;
-    }
-
-    public function getName()
-    {
-        return __CLASS__;
-    }
-}
diff --git a/vendor/twig/twig/tests/EnvironmentTest.php b/vendor/twig/twig/tests/EnvironmentTest.php
deleted file mode 100644
index 54a89450..00000000
--- a/vendor/twig/twig/tests/EnvironmentTest.php
+++ /dev/null
@@ -1,678 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Cache\FilesystemCache;
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\Extension\GlobalsInterface;
-use Twig\Extension\InitRuntimeInterface;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\Source;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-class EnvironmentTest extends \PHPUnit\Framework\TestCase
-{
-    private $deprecations = [];
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyTokenizeSignature()
-    {
-        $env = new Environment();
-        $stream = $env->tokenize('{{ foo }}', 'foo');
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-        $this->assertEquals('foo', $stream->getFilename());
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyCompileSourceSignature()
-    {
-        $loader = new ArrayLoader(['foo' => '{{ foo }}']);
-        $env = new Environment($loader);
-        $this->assertStringContainsString('getTemplateName', $env->compileSource('{{ foo }}', 'foo'));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRenderNoLoader()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessage('You must set a loader first.');
-
-        $env = new Environment();
-        $env->render('test');
-    }
-
-    public function testAutoescapeOption()
-    {
-        $loader = new ArrayLoader([
-            'html' => '{{ foo }} {{ foo }}',
-            'js' => '{{ bar }} {{ bar }}',
-        ]);
-
-        $twig = new Environment($loader, [
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => [$this, 'escapingStrategyCallback'],
-        ]);
-
-        $this->assertEquals('foo&lt;br/ &gt; foo&lt;br/ &gt;', $twig->render('html', ['foo' => 'foo<br/ >']));
-        $this->assertEquals('foo\u003Cbr\/\u0020\u003E foo\u003Cbr\/\u0020\u003E', $twig->render('js', ['bar' => 'foo<br/ >']));
-    }
-
-    public function escapingStrategyCallback($name)
-    {
-        return $name;
-    }
-
-    public function testGlobals()
-    {
-        // to be removed in 2.0
-        $loader = $this->createMock('\Twig\Tests\EnvironmentTestLoaderInterface');
-        //$loader = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader->expects($this->any())->method('getSourceContext')->willReturn(new Source('', ''));
-
-        // globals can be added after calling getGlobals
-
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->load('index');
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after extensions init
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        // globals can be modified after extensions and a template has been loaded
-        $arrayLoader = new ArrayLoader(['index' => '{{foo}}']);
-        $twig = new Environment($arrayLoader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->load('index');
-        $twig->addGlobal('foo', 'bar');
-        $globals = $twig->getGlobals();
-        $this->assertEquals('bar', $globals['foo']);
-
-        $twig = new Environment($arrayLoader);
-        $twig->getGlobals();
-        $twig->addGlobal('foo', 'bar');
-        $template = $twig->load('index');
-        $this->assertEquals('bar', $template->render([]));
-
-        /* to be uncomment in Twig 2.0
-        // globals cannot be added after a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // globals cannot be added after extensions init
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // globals cannot be added after extensions and a template has been loaded
-        $twig = new Environment($loader);
-        $twig->addGlobal('foo', 'foo');
-        $twig->getGlobals();
-        $twig->getFunctions();
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-
-        // test adding globals after a template has been loaded without call to getGlobals
-        $twig = new Environment($loader);
-        $twig->load('index');
-        try {
-            $twig->addGlobal('bar', 'bar');
-            $this->fail();
-        } catch (\LogicException $e) {
-            $this->assertFalse(array_key_exists('bar', $twig->getGlobals()));
-        }
-        */
-    }
-
-    public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate()
-    {
-        $cache = new FilesystemCache($dir = sys_get_temp_dir().'/twig');
-        $options = ['cache' => $cache, 'auto_reload' => false, 'debug' => false];
-
-        // force compilation
-        $twig = new Environment($loader = new ArrayLoader(['index' => '{{ foo }}']), $options);
-
-        $key = $cache->generateKey('index', $twig->getTemplateClass('index'));
-        $cache->write($key, $twig->compileSource(new Source('{{ foo }}', 'index')));
-
-        // check that extensions won't be initialized when rendering a template that is already in the cache
-        $twig = $this
-            ->getMockBuilder('\Twig\Environment')
-            ->setConstructorArgs([$loader, $options])
-            ->setMethods(['initExtensions'])
-            ->getMock()
-        ;
-
-        $twig->expects($this->never())->method('initExtensions');
-
-        // render template
-        $output = $twig->render('index', ['foo' => 'bar']);
-        $this->assertEquals('bar', $output);
-
-        FilesystemHelper::removeDir($dir);
-    }
-
-    public function testAutoReloadCacheMiss()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        // Cache miss: getTimestamp returns 0 and as a result the load() is
-        // skipped.
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn(0);
-        $loader->expects($this->never())
-            ->method('isFresh');
-        $cache->expects($this->once())
-            ->method('write');
-        $cache->expects($this->once())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    public function testAutoReloadCacheHit()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        $now = time();
-
-        // Cache hit: getTimestamp returns something > extension timestamps and
-        // the loader returns true for isFresh().
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn($now);
-        $loader->expects($this->once())
-            ->method('isFresh')
-            ->willReturn(true);
-        $cache->expects($this->atLeastOnce())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    public function testAutoReloadOutdatedCacheHit()
-    {
-        $templateName = __FUNCTION__;
-        $templateContent = __FUNCTION__;
-
-        $cache = $this->createMock('\Twig\Cache\CacheInterface');
-        $loader = $this->getMockLoader($templateName, $templateContent);
-        $twig = new Environment($loader, ['cache' => $cache, 'auto_reload' => true, 'debug' => false]);
-
-        $now = time();
-
-        $cache->expects($this->once())
-            ->method('generateKey')
-            ->willReturn('key');
-        $cache->expects($this->once())
-            ->method('getTimestamp')
-            ->willReturn($now);
-        $loader->expects($this->once())
-            ->method('isFresh')
-            ->willReturn(false);
-        $cache->expects($this->once())
-            ->method('write');
-        $cache->expects($this->once())
-            ->method('load');
-
-        $twig->load($templateName);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testHasGetExtensionWithDynamicName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-
-        $ext1 = new EnvironmentTest_Extension_DynamicWithDeprecatedName('ext1');
-        $ext2 = new EnvironmentTest_Extension_DynamicWithDeprecatedName('ext2');
-        $twig->addExtension($ext1);
-        $twig->addExtension($ext2);
-
-        $this->assertTrue($twig->hasExtension('ext1'));
-        $this->assertTrue($twig->hasExtension('ext2'));
-
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest_Extension_DynamicWithDeprecatedName'));
-
-        $this->assertSame($ext1, $twig->getExtension('ext1'));
-        $this->assertSame($ext2, $twig->getExtension('ext2'));
-    }
-
-    public function testHasGetExtensionByClassName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension($ext = new EnvironmentTest_Extension());
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest_Extension'));
-        $this->assertTrue($twig->hasExtension('\Twig\Tests\EnvironmentTest_Extension'));
-
-        $this->assertSame($ext, $twig->getExtension('Twig\Tests\EnvironmentTest_Extension'));
-        $this->assertSame($ext, $twig->getExtension('\Twig\Tests\EnvironmentTest_Extension'));
-
-        $this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest\Extension'));
-        $this->assertSame($ext, $twig->getExtension('Twig\Tests\EnvironmentTest\Extension'));
-    }
-
-    public function testAddExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension());
-
-        $this->assertArrayHasKey('test', $twig->getTags());
-        $this->assertArrayHasKey('foo_filter', $twig->getFilters());
-        $this->assertArrayHasKey('foo_function', $twig->getFunctions());
-        $this->assertArrayHasKey('foo_test', $twig->getTests());
-        $this->assertArrayHasKey('foo_unary', $twig->getUnaryOperators());
-        $this->assertArrayHasKey('foo_binary', $twig->getBinaryOperators());
-        $this->assertArrayHasKey('foo_global', $twig->getGlobals());
-        $visitors = $twig->getNodeVisitors();
-        $found = false;
-        foreach ($visitors as $visitor) {
-            if ($visitor instanceof EnvironmentTest_NodeVisitor) {
-                $found = true;
-            }
-        }
-        $this->assertTrue($found);
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testAddExtensionWithDeprecatedGetGlobals()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension_WithGlobals());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $this->assertArrayHasKey('foo_global', $twig->getGlobals());
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('Defining the getGlobals() method in the "Twig\Tests\EnvironmentTest_Extension_WithGlobals" extension ', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testRemoveExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-        $twig->removeExtension('environment_test');
-
-        $this->assertArrayNotHasKey('test', $twig->getTags());
-        $this->assertArrayNotHasKey('foo_filter', $twig->getFilters());
-        $this->assertArrayNotHasKey('foo_function', $twig->getFunctions());
-        $this->assertArrayNotHasKey('foo_test', $twig->getTests());
-        $this->assertArrayNotHasKey('foo_unary', $twig->getUnaryOperators());
-        $this->assertArrayNotHasKey('foo_binary', $twig->getBinaryOperators());
-        $this->assertArrayNotHasKey('foo_global', $twig->getGlobals());
-        $this->assertCount(2, $twig->getNodeVisitors());
-    }
-
-    public function testAddMockExtension()
-    {
-        // should be replaced by the following in 2.0 (this current code is just to avoid a dep notice)
-        // $extension = $this->createMock('\Twig\Extension\AbstractExtension');
-        $extension = eval(<<<EOF
-use Twig\Extension\AbstractExtension;
-
-class EnvironmentTest_ExtensionInEval extends AbstractExtension
-{
-}
-EOF
-        );
-        $extension = new \EnvironmentTest_ExtensionInEval();
-
-        $loader = new ArrayLoader(['page' => 'hey']);
-
-        $twig = new Environment($loader);
-        $twig->addExtension($extension);
-
-        $this->assertInstanceOf('\Twig\Extension\ExtensionInterface', $twig->getExtension(\get_class($extension)));
-        $this->assertTrue($twig->isTemplateFresh('page', time()));
-    }
-
-    public function testInitRuntimeWithAnExtensionUsingInitRuntimeNoDeprecation()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithoutDeprecationInitRuntime());
-        $twig->initRuntime();
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any deprecations
-        $this->addToAssertionCount(1);
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testInitRuntimeWithAnExtensionUsingInitRuntimeDeprecation()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithDeprecationInitRuntime());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $twig->initRuntime();
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('Defining the initRuntime() method in the "Twig\Tests\EnvironmentTest_ExtensionWithDeprecationInitRuntime" extension is deprecated since version 1.23.', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    public function handleError($type, $msg)
-    {
-        if (E_USER_DEPRECATED === $type) {
-            $this->deprecations[] = $msg;
-        }
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testOverrideExtension()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addExtension(new EnvironmentTest_ExtensionWithDeprecationInitRuntime());
-
-        $this->deprecations = [];
-        set_error_handler([$this, 'handleError']);
-
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-        $twig->addExtension(new EnvironmentTest_Extension_WithDeprecatedName());
-
-        $this->assertCount(1, $this->deprecations);
-        $this->assertStringContainsString('The possibility to register the same extension twice', $this->deprecations[0]);
-
-        restore_error_handler();
-    }
-
-    public function testAddRuntimeLoader()
-    {
-        $runtimeLoader = $this->createMock('\Twig\RuntimeLoader\RuntimeLoaderInterface');
-        $runtimeLoader->expects($this->any())->method('load')->willReturn(new EnvironmentTest_Runtime());
-
-        $loader = new ArrayLoader([
-            'func_array' => '{{ from_runtime_array("foo") }}',
-            'func_array_default' => '{{ from_runtime_array() }}',
-            'func_array_named_args' => '{{ from_runtime_array(name="foo") }}',
-            'func_string' => '{{ from_runtime_string("foo") }}',
-            'func_string_default' => '{{ from_runtime_string() }}',
-            'func_string_named_args' => '{{ from_runtime_string(name="foo") }}',
-        ]);
-
-        $twig = new Environment($loader);
-        $twig->addExtension(new EnvironmentTest_ExtensionWithoutRuntime());
-        $twig->addRuntimeLoader($runtimeLoader);
-
-        $this->assertEquals('foo', $twig->render('func_array'));
-        $this->assertEquals('bar', $twig->render('func_array_default'));
-        $this->assertEquals('foo', $twig->render('func_array_named_args'));
-        $this->assertEquals('foo', $twig->render('func_string'));
-        $this->assertEquals('bar', $twig->render('func_string_default'));
-        $this->assertEquals('foo', $twig->render('func_string_named_args'));
-    }
-
-    protected function getMockLoader($templateName, $templateContent)
-    {
-        // to be removed in 2.0
-        $loader = $this->createMock('Twig\Tests\EnvironmentTestLoaderInterface');
-        //$loader = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader->expects($this->any())
-          ->method('getSourceContext')
-          ->with($templateName)
-          ->willReturn(new Source($templateContent, $templateName));
-        $loader->expects($this->any())
-          ->method('getCacheKey')
-          ->with($templateName)
-          ->willReturn($templateName);
-
-        return $loader;
-    }
-}
-
-class EnvironmentTest_Extension_WithGlobals extends AbstractExtension
-{
-    public function getGlobals()
-    {
-        return [
-            'foo_global' => 'foo_global',
-        ];
-    }
-}
-
-class EnvironmentTest_Extension extends AbstractExtension implements GlobalsInterface
-{
-    public function getTokenParsers()
-    {
-        return [
-            new EnvironmentTest_TokenParser(),
-        ];
-    }
-
-    public function getNodeVisitors()
-    {
-        return [
-            new EnvironmentTest_NodeVisitor(),
-        ];
-    }
-
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('foo_filter', 'foo_filter'),
-        ];
-    }
-
-    public function getTests()
-    {
-        return [
-            new TwigTest('foo_test', 'foo_test'),
-        ];
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('foo_function', 'foo_function'),
-        ];
-    }
-
-    public function getOperators()
-    {
-        return [
-            ['foo_unary' => []],
-            ['foo_binary' => []],
-        ];
-    }
-
-    public function getGlobals()
-    {
-        return [
-            'foo_global' => 'foo_global',
-        ];
-    }
-}
-class_alias('\Twig\Tests\EnvironmentTest_Extension', 'Twig\Tests\EnvironmentTest\Extension', false);
-
-class EnvironmentTest_Extension_WithDeprecatedName extends AbstractExtension
-{
-    public function getName()
-    {
-        return 'environment_test';
-    }
-}
-
-class EnvironmentTest_Extension_DynamicWithDeprecatedName extends AbstractExtension
-{
-    private $name;
-
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    public function getName()
-    {
-        return $this->name;
-    }
-}
-
-class EnvironmentTest_TokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-    }
-
-    public function getTag()
-    {
-        return 'test';
-    }
-}
-
-class EnvironmentTest_NodeVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-class EnvironmentTest_ExtensionWithDeprecationInitRuntime extends AbstractExtension
-{
-    public function initRuntime(Environment $env)
-    {
-    }
-}
-
-class EnvironmentTest_ExtensionWithoutDeprecationInitRuntime extends AbstractExtension implements InitRuntimeInterface
-{
-    public function initRuntime(Environment $env)
-    {
-    }
-}
-
-class EnvironmentTest_ExtensionWithoutRuntime extends AbstractExtension
-{
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('from_runtime_array', ['Twig\Tests\EnvironmentTest_Runtime', 'fromRuntime']),
-            new TwigFunction('from_runtime_string', 'Twig\Tests\EnvironmentTest_Runtime::fromRuntime'),
-        ];
-    }
-
-    public function getName()
-    {
-        return 'from_runtime';
-    }
-}
-
-class EnvironmentTest_Runtime
-{
-    public function fromRuntime($name = 'bar')
-    {
-        return $name;
-    }
-}
-
-// to be removed in 2.0
-interface EnvironmentTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/ErrorTest.php b/vendor/twig/twig/tests/ErrorTest.php
deleted file mode 100644
index a84da2ee..00000000
--- a/vendor/twig/twig/tests/ErrorTest.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\Error;
-use Twig\Error\RuntimeError;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\FilesystemLoader;
-use Twig\Source;
-
-class ErrorTest extends \PHPUnit\Framework\TestCase
-{
-    public function testErrorWithObjectFilename()
-    {
-        $error = new Error('foo');
-        $error->setSourceContext(new Source('', new \SplFileInfo(__FILE__)));
-
-        $this->assertStringContainsString('tests'.\DIRECTORY_SEPARATOR.'ErrorTest.php', $error->getMessage());
-    }
-
-    public function testErrorWithArrayFilename()
-    {
-        $error = new Error('foo');
-        $error->setSourceContext(new Source('', ['foo' => 'bar']));
-
-        $this->assertEquals('foo in {"foo":"bar"}', $error->getMessage());
-    }
-
-    public function testTwigExceptionGuessWithMissingVarAndArrayLoader()
-    {
-        $loader = new ArrayLoader([
-            'base.html' => '{% block content %}{% endblock %}',
-            'index.html' => <<<EOHTML
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
-EOHTML
-        ]);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('Variable "foo" does not exist in "index.html" at line 3.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-        }
-    }
-
-    public function testTwigExceptionGuessWithExceptionAndArrayLoader()
-    {
-        $loader = new ArrayLoader([
-            'base.html' => '{% block content %}{% endblock %}',
-            'index.html' => <<<EOHTML
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
-EOHTML
-        ]);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index.html" at line 3.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-        }
-    }
-
-    public function testTwigExceptionGuessWithMissingVarAndFilesystemLoader()
-    {
-        $loader = new FilesystemLoader(__DIR__.'/Fixtures/errors');
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('Variable "foo" does not exist.', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-            $this->assertEquals(3, $e->getLine());
-            $this->assertEquals(strtr(__DIR__.'/Fixtures/errors/index.html', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-        }
-    }
-
-    public function testTwigExceptionGuessWithExceptionAndFilesystemLoader()
-    {
-        $loader = new FilesystemLoader(__DIR__.'/Fixtures/errors');
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index.html');
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...").', $e->getMessage());
-            $this->assertEquals(3, $e->getTemplateLine());
-            $this->assertEquals('index.html', $e->getSourceContext()->getName());
-            $this->assertEquals(3, $e->getLine());
-            $this->assertEquals(strtr(__DIR__.'/Fixtures/errors/index.html', '/', \DIRECTORY_SEPARATOR), $e->getFile());
-        }
-    }
-
-    /**
-     * @dataProvider getErroredTemplates
-     */
-    public function testTwigExceptionAddsFileAndLine($templates, $name, $line)
-    {
-        $loader = new ArrayLoader($templates);
-        $twig = new Environment($loader, ['strict_variables' => true, 'debug' => true, 'cache' => false]);
-
-        $template = $twig->load('index');
-
-        try {
-            $template->render([]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals(sprintf('Variable "foo" does not exist in "%s" at line %d.', $name, $line), $e->getMessage());
-            $this->assertEquals($line, $e->getTemplateLine());
-            $this->assertEquals($name, $e->getSourceContext()->getName());
-        }
-
-        try {
-            $template->render(['foo' => new ErrorTest_Foo()]);
-
-            $this->fail();
-        } catch (RuntimeError $e) {
-            $this->assertEquals(sprintf('An exception has been thrown during the rendering of a template ("Runtime error...") in "%s" at line %d.', $name, $line), $e->getMessage());
-            $this->assertEquals($line, $e->getTemplateLine());
-            $this->assertEquals($name, $e->getSourceContext()->getName());
-        }
-    }
-
-    public function getErroredTemplates()
-    {
-        return [
-            // error occurs in a template
-            [
-                [
-                    'index' => "\n\n{{ foo.bar }}\n\n\n{{ 'foo' }}",
-                ],
-                'index', 3,
-            ],
-
-            // error occurs in an included template
-            [
-                [
-                    'index' => "{% include 'partial' %}",
-                    'partial' => '{{ foo.bar }}',
-                ],
-                'partial', 1,
-            ],
-
-            // error occurs in a parent block when called via parent()
-            [
-                [
-                    'index' => "{% extends 'base' %}
-                    {% block content %}
-                        {{ parent() }}
-                    {% endblock %}",
-                    'base' => '{% block content %}{{ foo.bar }}{% endblock %}',
-                ],
-                'base', 1,
-            ],
-
-            // error occurs in a block from the child
-            [
-                [
-                    'index' => "{% extends 'base' %}
-                    {% block content %}
-                        {{ foo.bar }}
-                    {% endblock %}
-                    {% block foo %}
-                        {{ foo.bar }}
-                    {% endblock %}",
-                    'base' => '{% block content %}{% endblock %}',
-                ],
-                'index', 3,
-            ],
-        ];
-    }
-
-    public function testTwigLeakOutputInDebugMode()
-    {
-        $output = exec(sprintf('%s %s debug', \PHP_BINARY, escapeshellarg(__DIR__.'/Fixtures/errors/leak-output.php')));
-
-        $this->assertSame('Hello OOPS', $output);
-    }
-
-    public function testDoesNotTwigLeakOutput()
-    {
-        $output = exec(sprintf('%s %s', \PHP_BINARY, escapeshellarg(__DIR__.'/Fixtures/errors/leak-output.php')));
-
-        $this->assertSame('', $output);
-    }
-}
-
-class ErrorTest_Foo
-{
-    public function bar()
-    {
-        throw new \Exception('Runtime error...');
-    }
-}
diff --git a/vendor/twig/twig/tests/ExpressionParserTest.php b/vendor/twig/twig/tests/ExpressionParserTest.php
deleted file mode 100644
index ef31fd71..00000000
--- a/vendor/twig/twig/tests/ExpressionParserTest.php
+++ /dev/null
@@ -1,382 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Parser;
-use Twig\Source;
-
-class ExpressionParserTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getFailingTestsForAssignment
-     */
-    public function testCanOnlyAssignToNames($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getFailingTestsForAssignment()
-    {
-        return [
-            ['{% set false = "foo" %}'],
-            ['{% set FALSE = "foo" %}'],
-            ['{% set true = "foo" %}'],
-            ['{% set TRUE = "foo" %}'],
-            ['{% set none = "foo" %}'],
-            ['{% set NONE = "foo" %}'],
-            ['{% set null = "foo" %}'],
-            ['{% set NULL = "foo" %}'],
-            ['{% set 3 = "foo" %}'],
-            ['{% set 1 + 2 = "foo" %}'],
-            ['{% set "bar" = "foo" %}'],
-            ['{% set %}{% endset %}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getTestsForArray
-     */
-    public function testArrayExpression($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $stream = $env->tokenize($source = new Source($template, ''));
-        $parser = new Parser($env);
-        $expected->setSourceContext($source);
-
-        $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr'));
-    }
-
-    /**
-     * @dataProvider getFailingTestsForArray
-     */
-    public function testArraySyntaxError($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getFailingTestsForArray()
-    {
-        return [
-            ['{{ [1, "a": "b"] }}'],
-            ['{{ {"a": "b", 2} }}'],
-        ];
-    }
-
-    public function getTestsForArray()
-    {
-        return [
-            // simple array
-            ['{{ [1, 2] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ConstantExpression(2, 1),
-                ], 1),
-            ],
-
-            // array with trailing ,
-            ['{{ [1, 2, ] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ConstantExpression(2, 1),
-                ], 1),
-            ],
-
-            // simple hash
-            ['{{ {"a": "b", "b": "c"} }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ConstantExpression('b', 1),
-
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-
-            // hash with trailing ,
-            ['{{ {"a": "b", "b": "c", } }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ConstantExpression('b', 1),
-
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-
-            // hash in an array
-            ['{{ [1, {"a": "b", "b": "c"}] }}', new ArrayExpression([
-                  new ConstantExpression(0, 1),
-                  new ConstantExpression(1, 1),
-
-                  new ConstantExpression(1, 1),
-                  new ArrayExpression([
-                        new ConstantExpression('a', 1),
-                        new ConstantExpression('b', 1),
-
-                        new ConstantExpression('b', 1),
-                        new ConstantExpression('c', 1),
-                      ], 1),
-                ], 1),
-            ],
-
-            // array in a hash
-            ['{{ {"a": [1, 2], "b": "c"} }}', new ArrayExpression([
-                  new ConstantExpression('a', 1),
-                  new ArrayExpression([
-                        new ConstantExpression(0, 1),
-                        new ConstantExpression(1, 1),
-
-                        new ConstantExpression(1, 1),
-                        new ConstantExpression(2, 1),
-                      ], 1),
-                  new ConstantExpression('b', 1),
-                  new ConstantExpression('c', 1),
-                ], 1),
-            ],
-        ];
-    }
-
-    public function testStringExpressionDoesNotConcatenateTwoConsecutiveStrings()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $stream = $env->tokenize(new Source('{{ "a" "b" }}', 'index'));
-        $parser = new Parser($env);
-
-        $parser->parse($stream);
-    }
-
-    /**
-     * @dataProvider getTestsForString
-     */
-    public function testStringExpression($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false, 'optimizations' => 0]);
-        $stream = $env->tokenize($source = new Source($template, ''));
-        $parser = new Parser($env);
-        $expected->setSourceContext($source);
-
-        $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr'));
-    }
-
-    public function getTestsForString()
-    {
-        return [
-            [
-                '{{ "foo" }}', new ConstantExpression('foo', 1),
-            ],
-            [
-                '{{ "foo #{bar}" }}', new ConcatBinary(
-                    new ConstantExpression('foo ', 1),
-                    new NameExpression('bar', 1),
-                    1
-                ),
-            ],
-            [
-                '{{ "foo #{bar} baz" }}', new ConcatBinary(
-                    new ConcatBinary(
-                        new ConstantExpression('foo ', 1),
-                        new NameExpression('bar', 1),
-                        1
-                    ),
-                    new ConstantExpression(' baz', 1),
-                    1
-                ),
-            ],
-
-            [
-                '{{ "foo #{"foo #{bar} baz"} baz" }}', new ConcatBinary(
-                    new ConcatBinary(
-                        new ConstantExpression('foo ', 1),
-                        new ConcatBinary(
-                            new ConcatBinary(
-                                new ConstantExpression('foo ', 1),
-                                new NameExpression('bar', 1),
-                                1
-                            ),
-                            new ConstantExpression(' baz', 1),
-                            1
-                        ),
-                        1
-                    ),
-                    new ConstantExpression(' baz', 1),
-                    1
-                ),
-            ],
-        ];
-    }
-
-    public function testAttributeCallDoesNotSupportNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ foo.bar(name="Foo") }}', 'index')));
-    }
-
-    public function testMacroCallDoesNotSupportNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{% from _self import foo %}{% macro foo() %}{% endmacro %}{{ foo(name="Foo") }}', 'index')));
-    }
-
-    public function testMacroDefinitionDoesNotSupportNonNameVariableName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('An argument must be a name. Unexpected token "string" of value "a" ("name" expected) in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{% macro foo("a") %}{% endmacro %}', 'index')));
-    }
-
-    /**
-     * @dataProvider             getMacroDefinitionDoesNotSupportNonConstantDefaultValues
-     */
-    public function testMacroDefinitionDoesNotSupportNonConstantDefaultValues($template)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('A default value for an argument must be a constant (a boolean, a string, a number, or an array) in "index" at line 1');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-    }
-
-    public function getMacroDefinitionDoesNotSupportNonConstantDefaultValues()
-    {
-        return [
-            ['{% macro foo(name = "a #{foo} a") %}{% endmacro %}'],
-            ['{% macro foo(name = [["b", "a #{foo} a"]]) %}{% endmacro %}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getMacroDefinitionSupportsConstantDefaultValues
-     */
-    public function testMacroDefinitionSupportsConstantDefaultValues($template)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source($template, 'index')));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function getMacroDefinitionSupportsConstantDefaultValues()
-    {
-        return [
-            ['{% macro foo(name = "aa") %}{% endmacro %}'],
-            ['{% macro foo(name = 12) %}{% endmacro %}'],
-            ['{% macro foo(name = true) %}{% endmacro %}'],
-            ['{% macro foo(name = ["a"]) %}{% endmacro %}'],
-            ['{% macro foo(name = [["a"]]) %}{% endmacro %}'],
-            ['{% macro foo(name = {a: "a"}) %}{% endmacro %}'],
-            ['{% macro foo(name = {a: {b: "a"}}) %}{% endmacro %}'],
-        ];
-    }
-
-    public function testUnknownFunction()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "cycl" function. Did you mean "cycle" in "index" at line 1?');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ cycl() }}', 'index')));
-    }
-
-    public function testUnknownFunctionWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" function in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ foobar() }}', 'index')));
-    }
-
-    public function testUnknownFilter()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "lowe" filter. Did you mean "lower" in "index" at line 1?');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1|lowe }}', 'index')));
-    }
-
-    public function testUnknownFilterWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" filter in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1|foobar }}', 'index')));
-    }
-
-    public function testUnknownTest()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "nul" test. Did you mean "null" in "index" at line 1');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-        $stream = $env->tokenize(new Source('{{ 1 is nul }}', 'index'));
-        $parser->parse($stream);
-    }
-
-    public function testUnknownTestWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" test in "index" at line 1.');
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-        $parser = new Parser($env);
-
-        $parser->parse($env->tokenize(new Source('{{ 1 is foobar }}', 'index')));
-    }
-}
diff --git a/vendor/twig/twig/tests/Extension/CoreTest.php b/vendor/twig/twig/tests/Extension/CoreTest.php
deleted file mode 100644
index 66c32ff1..00000000
--- a/vendor/twig/twig/tests/Extension/CoreTest.php
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-
-namespace Twig\Tests\Extension;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-
-class CoreTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getRandomFunctionTestData
-     */
-    public function testRandomFunction(array $expectedInArray, $value1, $value2 = null)
-    {
-        $env = new Environment($this->createMock('Twig_LoaderInterface'));
-        for ($i = 0; $i < 100; ++$i) {
-            $this->assertTrue(\in_array(twig_random($env, $value1, $value2), $expectedInArray, true)); // assertContains() would not consider the type
-        }
-    }
-
-    public function getRandomFunctionTestData()
-    {
-        return [
-            'array' => [
-                ['apple', 'orange', 'citrus'],
-                ['apple', 'orange', 'citrus'],
-            ],
-            'Traversable' => [
-                ['apple', 'orange', 'citrus'],
-                new \ArrayObject(['apple', 'orange', 'citrus']),
-            ],
-            'unicode string' => [
-                ['Ä', '€', 'é'],
-                'Ä€é',
-            ],
-            'numeric but string' => [
-                ['1', '2', '3'],
-                '123',
-            ],
-            'integer' => [
-                range(0, 5, 1),
-                5,
-            ],
-            'float' => [
-                range(0, 5, 1),
-                5.9,
-            ],
-            'negative' => [
-                [0, -1, -2],
-                -2,
-            ],
-            'min max int' => [
-                range(50, 100),
-                50,
-                100,
-            ],
-            'min max float' => [
-                range(-10, 10),
-                -9.5,
-                9.5,
-            ],
-            'min null' => [
-                range(0, 100),
-                null,
-                100,
-            ],
-        ];
-    }
-
-    public function testRandomFunctionWithoutParameter()
-    {
-        $max = mt_getrandmax();
-
-        for ($i = 0; $i < 100; ++$i) {
-            $val = twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-            $this->assertTrue(\is_int($val) && $val >= 0 && $val <= $max);
-        }
-    }
-
-    public function testRandomFunctionReturnsAsIs()
-    {
-        $this->assertSame('', twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), ''));
-        $this->assertSame('', twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['charset' => null]), ''));
-
-        $instance = new \stdClass();
-        $this->assertSame($instance, twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), $instance));
-    }
-
-    public function testRandomFunctionOfEmptyArrayThrowsException()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        twig_random(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), []);
-    }
-
-    public function testRandomFunctionOnNonUTF8String()
-    {
-        if (!\function_exists('iconv') && !\function_exists('mb_convert_encoding')) {
-            $this->markTestSkipped('needs iconv or mbstring');
-        }
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->setCharset('ISO-8859-1');
-
-        $text = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8');
-        for ($i = 0; $i < 30; ++$i) {
-            $rand = twig_random($twig, $text);
-            $this->assertTrue(\in_array(twig_convert_encoding($rand, 'UTF-8', 'ISO-8859-1'), ['Ä', 'é'], true));
-        }
-    }
-
-    public function testReverseFilterOnNonUTF8String()
-    {
-        if (!\function_exists('iconv') && !\function_exists('mb_convert_encoding')) {
-            $this->markTestSkipped('needs iconv or mbstring');
-        }
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->setCharset('ISO-8859-1');
-
-        $input = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8');
-        $output = twig_convert_encoding(twig_reverse_filter($twig, $input), 'UTF-8', 'ISO-8859-1');
-
-        $this->assertEquals($output, 'éÄ');
-    }
-
-    /**
-     * @dataProvider provideCustomEscaperCases
-     */
-    public function testCustomEscaper($expected, $string, $strategy)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->getExtension('\Twig\Extension\CoreExtension')->setEscaper('foo', '\Twig\Tests\Extension\foo_escaper_for_test');
-
-        $this->assertSame($expected, twig_escape_filter($twig, $string, $strategy));
-    }
-
-    public function provideCustomEscaperCases()
-    {
-        return [
-            ['fooUTF-8', 'foo', 'foo'],
-            ['UTF-8', null, 'foo'],
-            ['42UTF-8', 42, 'foo'],
-        ];
-    }
-
-    public function testUnknownCustomEscaper()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        twig_escape_filter(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), 'foo', 'bar');
-    }
-
-    /**
-     * @dataProvider provideTwigFirstCases
-     */
-    public function testTwigFirst($expected, $input)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_first($twig, $input));
-    }
-
-    public function provideTwigFirstCases()
-    {
-        $i = [1 => 'a', 2 => 'b', 3 => 'c'];
-
-        return [
-            ['a', 'abc'],
-            [1, [1, 2, 3]],
-            ['', null],
-            ['', ''],
-            ['a', new CoreTestIterator($i, array_keys($i), true, 3)],
-        ];
-    }
-
-    /**
-     * @dataProvider provideTwigLastCases
-     */
-    public function testTwigLast($expected, $input)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_last($twig, $input));
-    }
-
-    public function provideTwigLastCases()
-    {
-        $i = [1 => 'a', 2 => 'b', 3 => 'c'];
-
-        return [
-            ['c', 'abc'],
-            [3, [1, 2, 3]],
-            ['', null],
-            ['', ''],
-            ['c', new CoreTestIterator($i, array_keys($i), true)],
-        ];
-    }
-
-    /**
-     * @dataProvider provideArrayKeyCases
-     */
-    public function testArrayKeysFilter(array $expected, $input)
-    {
-        $this->assertSame($expected, twig_get_array_keys_filter($input));
-    }
-
-    public function provideArrayKeyCases()
-    {
-        $array = ['a' => 'a1', 'b' => 'b1', 'c' => 'c1'];
-        $keys = array_keys($array);
-
-        return [
-            [$keys, $array],
-            [$keys, new CoreTestIterator($array, $keys)],
-            [$keys, new CoreTestIteratorAggregate($array, $keys)],
-            [$keys, new CoreTestIteratorAggregateAggregate($array, $keys)],
-            [[], null],
-            [['a'], new \SimpleXMLElement('<xml><a></a></xml>')],
-        ];
-    }
-
-    /**
-     * @dataProvider provideInFilterCases
-     */
-    public function testInFilter($expected, $value, $compare)
-    {
-        $this->assertSame($expected, twig_in_filter($value, $compare));
-    }
-
-    public function provideInFilterCases()
-    {
-        $array = [1, 2, 'a' => 3, 5, 6, 7];
-        $keys = array_keys($array);
-
-        return [
-            [true, 1, $array],
-            [true, '3', $array],
-            [true, '3', 'abc3def'],
-            [true, 1, new CoreTestIterator($array, $keys, true, 1)],
-            [true, '3', new CoreTestIterator($array, $keys, true, 3)],
-            [true, '3', new CoreTestIteratorAggregateAggregate($array, $keys, true, 3)],
-            [false, 4, $array],
-            [false, 4, new CoreTestIterator($array, $keys, true)],
-            [false, 4, new CoreTestIteratorAggregateAggregate($array, $keys, true)],
-            [false, 1, 1],
-            [true, 'b', new \SimpleXMLElement('<xml><a>b</a></xml>')],
-        ];
-    }
-
-    /**
-     * @dataProvider provideSliceFilterCases
-     */
-    public function testSliceFilter($expected, $input, $start, $length = null, $preserveKeys = false)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $this->assertSame($expected, twig_slice($twig, $input, $start, $length, $preserveKeys));
-    }
-
-    public function provideSliceFilterCases()
-    {
-        $i = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
-        $keys = array_keys($i);
-
-        return [
-            [['a' => 1], $i, 0, 1, true],
-            [['a' => 1], $i, 0, 1, false],
-            [['b' => 2, 'c' => 3], $i, 1, 2],
-            [[1], [1, 2, 3, 4], 0, 1],
-            [[2, 3], [1, 2, 3, 4], 1, 2],
-            [[2, 3], new CoreTestIterator($i, $keys, true), 1, 2],
-            [['c' => 3, 'd' => 4], new CoreTestIteratorAggregate($i, $keys, true), 2, null, true],
-            [$i, new CoreTestIterator($i, $keys, true), 0, \count($keys) + 10, true],
-            [[], new CoreTestIterator($i, $keys, true), \count($keys) + 10],
-            ['de', 'abcdef', 3, 2],
-            [[], new \SimpleXMLElement('<items><item>1</item><item>2</item></items>'), 3],
-            [[], new \ArrayIterator([1, 2]), 3],
-        ];
-    }
-}
-
-function foo_escaper_for_test(Environment $env, $string, $charset)
-{
-    return $string.$charset;
-}
-
-final class CoreTestIteratorAggregate implements \IteratorAggregate
-{
-    private $iterator;
-
-    public function __construct(array $array, array $keys, $allowAccess = false, $maxPosition = false)
-    {
-        $this->iterator = new CoreTestIterator($array, $keys, $allowAccess, $maxPosition);
-    }
-
-    public function getIterator()
-    {
-        return $this->iterator;
-    }
-}
-
-final class CoreTestIteratorAggregateAggregate implements \IteratorAggregate
-{
-    private $iterator;
-
-    public function __construct(array $array, array $keys, $allowValueAccess = false, $maxPosition = false)
-    {
-        $this->iterator = new CoreTestIteratorAggregate($array, $keys, $allowValueAccess, $maxPosition);
-    }
-
-    public function getIterator()
-    {
-        return $this->iterator;
-    }
-}
-
-final class CoreTestIterator implements \Iterator
-{
-    private $position;
-    private $array;
-    private $arrayKeys;
-    private $allowValueAccess;
-    private $maxPosition;
-
-    public function __construct(array $values, array $keys, $allowValueAccess = false, $maxPosition = false)
-    {
-        $this->array = $values;
-        $this->arrayKeys = $keys;
-        $this->position = 0;
-        $this->allowValueAccess = $allowValueAccess;
-        $this->maxPosition = false === $maxPosition ? \count($values) + 1 : $maxPosition;
-    }
-
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    public function current()
-    {
-        if ($this->allowValueAccess) {
-            return $this->array[$this->key()];
-        }
-
-        throw new \LogicException('Code should only use the keys, not the values provided by iterator.');
-    }
-
-    public function key()
-    {
-        return $this->arrayKeys[$this->position];
-    }
-
-    public function next()
-    {
-        ++$this->position;
-        if ($this->position === $this->maxPosition) {
-            throw new \LogicException(sprintf('Code should not iterate beyond %d.', $this->maxPosition));
-        }
-    }
-
-    public function valid()
-    {
-        return isset($this->arrayKeys[$this->position]);
-    }
-}
diff --git a/vendor/twig/twig/tests/Extension/SandboxTest.php b/vendor/twig/twig/tests/Extension/SandboxTest.php
deleted file mode 100644
index fe0f32ff..00000000
--- a/vendor/twig/twig/tests/Extension/SandboxTest.php
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-
-namespace Twig\Tests\Extension;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Extension\SandboxExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityPolicy;
-
-class SandboxTest extends \PHPUnit\Framework\TestCase
-{
-    protected static $params;
-    protected static $templates;
-
-    protected function setUp()
-    {
-        self::$params = [
-            'name' => 'Fabien',
-            'obj' => new FooObject(),
-            'arr' => ['obj' => new FooObject()],
-        ];
-
-        self::$templates = [
-            '1_basic1' => '{{ obj.foo }}',
-            '1_basic2' => '{{ name|upper }}',
-            '1_basic3' => '{% if name %}foo{% endif %}',
-            '1_basic4' => '{{ obj.bar }}',
-            '1_basic5' => '{{ obj }}',
-            '1_basic7' => '{{ cycle(["foo","bar"], 1) }}',
-            '1_basic8' => '{{ obj.getfoobar }}{{ obj.getFooBar }}',
-            '1_basic9' => '{{ obj.foobar }}{{ obj.fooBar }}',
-            '1_basic' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-            '1_layout' => '{% block content %}{% endblock %}',
-            '1_child' => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}",
-            '1_include' => '{{ include("1_basic1", sandboxed=true) }}',
-            '1_range_operator' => '{{ (1..2)[0] }}',
-        ];
-    }
-
-    public function testSandboxWithInheritance()
-    {
-        $this->expectException('\Twig\Sandbox\SecurityError');
-        $this->expectExceptionMessage('Filter "json_encode" is not allowed in "1_child" at line 3.');
-
-        $twig = $this->getEnvironment(true, [], self::$templates, ['block']);
-        $twig->load('1_child')->render([]);
-    }
-
-    public function testSandboxGloballySet()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        $this->assertEquals('FOO', $twig->load('1_basic')->render(self::$params), 'Sandbox does nothing if it is disabled globally');
-    }
-
-    public function testSandboxUnallowedMethodAccessor()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic1')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed method is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('foo', $e->getMethodName(), 'Exception should be raised on the "foo" method');
-        }
-    }
-
-    public function testSandboxUnallowedFilter()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic2')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed filter is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFilterError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFilterError');
-            $this->assertEquals('upper', $e->getFilterName(), 'Exception should be raised on the "upper" filter');
-        }
-    }
-
-    public function testSandboxUnallowedTag()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic3')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed tag is used in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError');
-            $this->assertEquals('if', $e->getTagName(), 'Exception should be raised on the "if" tag');
-        }
-    }
-
-    public function testSandboxUnallowedProperty()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic4')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed property is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedPropertyError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedPropertyError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('bar', $e->getPropertyName(), 'Exception should be raised on the "bar" property');
-        }
-    }
-
-    /**
-     * @dataProvider getSandboxUnallowedToStringTests
-     */
-    public function testSandboxUnallowedToString($template)
-    {
-        $twig = $this->getEnvironment(true, [], ['index' => $template], [], ['upper'], ['Twig\Tests\Extension\FooObject' => 'getAnotherFooObject'], [], ['random']);
-        try {
-            $twig->load('index')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError');
-            $this->assertEquals('Twig\Tests\Extension\FooObject', $e->getClassName(), 'Exception should be raised on the "Twig\Tests\Extension\FooObject" class');
-            $this->assertEquals('__tostring', $e->getMethodName(), 'Exception should be raised on the "__toString" method');
-        }
-    }
-
-    public function getSandboxUnallowedToStringTests()
-    {
-        return [
-            'simple' => ['{{ obj }}'],
-            'object_from_array' => ['{{ arr.obj }}'],
-            'object_chain' => ['{{ obj.anotherFooObject }}'],
-            'filter' => ['{{ obj|upper }}'],
-            'filter_from_array' => ['{{ arr.obj|upper }}'],
-            'function' => ['{{ random(obj) }}'],
-            'function_from_array' => ['{{ random(arr.obj) }}'],
-            'function_and_filter' => ['{{ random(obj|upper) }}'],
-            'function_and_filter_from_array' => ['{{ random(arr.obj|upper) }}'],
-            'object_chain_and_filter' => ['{{ obj.anotherFooObject|upper }}'],
-            'object_chain_and_function' => ['{{ random(obj.anotherFooObject) }}'],
-            'concat' => ['{{ obj ~ "" }}'],
-            'concat_again' => ['{{ "" ~ obj }}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getSandboxAllowedToStringTests
-     */
-    public function testSandboxAllowedToString($template, $output)
-    {
-        $twig = $this->getEnvironment(true, [], ['index' => $template], ['set'], [], ['Twig\Tests\Extension\FooObject' => ['foo', 'getAnotherFooObject']]);
-        $this->assertEquals($output, $twig->load('index')->render(self::$params));
-    }
-
-    public function getSandboxAllowedToStringTests()
-    {
-        return [
-            'constant_test' => ['{{ obj is constant("PHP_INT_MAX") }}', ''],
-            'set_object' => ['{% set a = obj.anotherFooObject %}{{ a.foo }}', 'foo'],
-            'is_defined' => ['{{ obj.anotherFooObject is defined }}', '1'],
-            'is_null' => ['{{ obj is null }}', ''],
-            'is_sameas' => ['{{ obj is same as(obj) }}', '1'],
-            'is_sameas_from_array' => ['{{ arr.obj is same as(arr.obj) }}', '1'],
-            'is_sameas_from_another_method' => ['{{ obj.anotherFooObject is same as(obj.anotherFooObject) }}', ''],
-        ];
-    }
-
-    public function testSandboxAllowMethodToString()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => '__toString']);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic5')->render(self::$params), 'Sandbox allow some methods');
-        $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxAllowMethodToStringDisabled()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic5')->render(self::$params), 'Sandbox allows __toString when sandbox disabled');
-        $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxUnallowedFunction()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_basic7')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if an unallowed function is called in the template');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError');
-            $this->assertEquals('cycle', $e->getFunctionName(), 'Exception should be raised on the "cycle" function');
-        }
-    }
-
-    public function testSandboxUnallowedRangeOperator()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('1_range_operator')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception if the unallowed range operator is called');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError');
-            $this->assertEquals('range', $e->getFunctionName(), 'Exception should be raised on the "range" function');
-        }
-    }
-
-    public function testSandboxAllowMethodFoo()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => 'foo']);
-        FooObject::reset();
-        $this->assertEquals('foo', $twig->load('1_basic1')->render(self::$params), 'Sandbox allow some methods');
-        $this->assertEquals(1, FooObject::$called['foo'], 'Sandbox only calls method once');
-    }
-
-    public function testSandboxAllowFilter()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], ['upper']);
-        $this->assertEquals('FABIEN', $twig->load('1_basic2')->render(self::$params), 'Sandbox allow some filters');
-    }
-
-    public function testSandboxAllowTag()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, ['if']);
-        $this->assertEquals('foo', $twig->load('1_basic3')->render(self::$params), 'Sandbox allow some tags');
-    }
-
-    public function testSandboxAllowProperty()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], ['Twig\Tests\Extension\FooObject' => 'bar']);
-        $this->assertEquals('bar', $twig->load('1_basic4')->render(self::$params), 'Sandbox allow some properties');
-    }
-
-    public function testSandboxAllowFunction()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], [], ['cycle']);
-        $this->assertEquals('bar', $twig->load('1_basic7')->render(self::$params), 'Sandbox allow some functions');
-    }
-
-    public function testSandboxAllowRangeOperator()
-    {
-        $twig = $this->getEnvironment(true, [], self::$templates, [], [], [], [], ['range']);
-        $this->assertEquals('1', $twig->load('1_range_operator')->render(self::$params), 'Sandbox allow the range operator');
-    }
-
-    public function testSandboxAllowFunctionsCaseInsensitive()
-    {
-        foreach (['getfoobar', 'getFoobar', 'getFooBar'] as $name) {
-            $twig = $this->getEnvironment(true, [], self::$templates, [], [], ['Twig\Tests\Extension\FooObject' => $name]);
-            FooObject::reset();
-            $this->assertEquals('foobarfoobar', $twig->load('1_basic8')->render(self::$params), 'Sandbox allow methods in a case-insensitive way');
-            $this->assertEquals(2, FooObject::$called['getFooBar'], 'Sandbox only calls method once');
-
-            $this->assertEquals('foobarfoobar', $twig->load('1_basic9')->render(self::$params), 'Sandbox allow methods via shortcut names (ie. without get/set)');
-        }
-    }
-
-    public function testSandboxLocallySetForAnInclude()
-    {
-        self::$templates = [
-            '2_basic' => '{{ obj.foo }}{% include "2_included" %}{{ obj.foo }}',
-            '2_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-        ];
-
-        $twig = $this->getEnvironment(false, [], self::$templates);
-        $this->assertEquals('fooFOOfoo', $twig->load('2_basic')->render(self::$params), 'Sandbox does nothing if disabled globally and sandboxed not used for the include');
-
-        self::$templates = [
-            '3_basic' => '{{ obj.foo }}{% sandbox %}{% include "3_included" %}{% endsandbox %}{{ obj.foo }}',
-            '3_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}',
-        ];
-
-        $twig = $this->getEnvironment(true, [], self::$templates);
-        try {
-            $twig->load('3_basic')->render(self::$params);
-            $this->fail('Sandbox throws a SecurityError exception when the included file is sandboxed');
-        } catch (SecurityError $e) {
-            $this->assertInstanceOf('\Twig\Sandbox\SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError');
-            $this->assertEquals('sandbox', $e->getTagName());
-        }
-    }
-
-    public function testMacrosInASandbox()
-    {
-        $twig = $this->getEnvironment(true, ['autoescape' => 'html'], ['index' => <<<EOF
-{%- import _self as macros %}
-
-{%- macro test(text) %}<p>{{ text }}</p>{% endmacro %}
-
-{{- macros.test('username') }}
-EOF
-        ], ['macro', 'import'], ['escape']);
-
-        $this->assertEquals('<p>username</p>', $twig->load('index')->render([]));
-    }
-
-    public function testSandboxDisabledAfterIncludeFunctionError()
-    {
-        $twig = $this->getEnvironment(false, [], self::$templates);
-
-        $e = null;
-        try {
-            $twig->load('1_include')->render(self::$params);
-        } catch (\Throwable $e) {
-        } catch (\Exception $e) {
-        }
-        if (null === $e) {
-            $this->fail('An exception should be thrown for this test to be valid.');
-        }
-
-        $this->assertFalse($twig->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed(), 'Sandboxed include() function call should not leave Sandbox enabled when an error occurs.');
-    }
-
-    protected function getEnvironment($sandboxed, $options, $templates, $tags = [], $filters = [], $methods = [], $properties = [], $functions = [])
-    {
-        $loader = new ArrayLoader($templates);
-        $twig = new Environment($loader, array_merge(['debug' => true, 'cache' => false, 'autoescape' => false], $options));
-        $policy = new SecurityPolicy($tags, $filters, $methods, $properties, $functions);
-        $twig->addExtension(new SandboxExtension($policy, $sandboxed));
-
-        return $twig;
-    }
-}
-
-class FooObject
-{
-    public static $called = ['__toString' => 0, 'foo' => 0, 'getFooBar' => 0];
-
-    public $bar = 'bar';
-
-    public static function reset()
-    {
-        self::$called = ['__toString' => 0, 'foo' => 0, 'getFooBar' => 0];
-    }
-
-    public function __toString()
-    {
-        ++self::$called['__toString'];
-
-        return 'foo';
-    }
-
-    public function foo()
-    {
-        ++self::$called['foo'];
-
-        return 'foo';
-    }
-
-    public function getFooBar()
-    {
-        ++self::$called['getFooBar'];
-
-        return 'foobar';
-    }
-
-    public function getAnotherFooObject()
-    {
-        return new self();
-    }
-}
diff --git a/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php b/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php
deleted file mode 100644
index 32e61d15..00000000
--- a/vendor/twig/twig/tests/FactoryRuntimeLoaderTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\RuntimeLoader\FactoryRuntimeLoader;
-
-class FactoryRuntimeLoaderTest extends \PHPUnit\Framework\TestCase
-{
-    public function testLoad()
-    {
-        $loader = new FactoryRuntimeLoader(['stdClass' => '\Twig\Tests\getRuntime']);
-
-        $this->assertInstanceOf('stdClass', $loader->load('stdClass'));
-    }
-
-    public function testLoadReturnsNullForUnmappedRuntime()
-    {
-        $loader = new FactoryRuntimeLoader();
-
-        $this->assertNull($loader->load('stdClass'));
-    }
-}
-
-function getRuntime()
-{
-    return new \stdClass();
-}
diff --git a/vendor/twig/twig/tests/FileCachingTest.php b/vendor/twig/twig/tests/FileCachingTest.php
deleted file mode 100644
index e1fa3a4b..00000000
--- a/vendor/twig/twig/tests/FileCachingTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class FileCachingTest extends \PHPUnit\Framework\TestCase
-{
-    private $env;
-    private $tmpDir;
-
-    protected function setUp()
-    {
-        $this->tmpDir = sys_get_temp_dir().'/TwigTests';
-        if (!file_exists($this->tmpDir)) {
-            @mkdir($this->tmpDir, 0777, true);
-        }
-
-        if (!is_writable($this->tmpDir)) {
-            $this->markTestSkipped(sprintf('Unable to run the tests as "%s" is not writable.', $this->tmpDir));
-        }
-
-        $this->env = new Environment(new ArrayLoader(['index' => 'index', 'index2' => 'index2']), ['cache' => $this->tmpDir]);
-    }
-
-    protected function tearDown()
-    {
-        FilesystemHelper::removeDir($this->tmpDir);
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testWritingCacheFiles()
-    {
-        $name = 'index';
-        $this->env->load($name);
-        $cacheFileName = $this->env->getCacheFilename($name);
-
-        $this->assertFileExists($cacheFileName, 'Cache file does not exist.');
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testClearingCacheFiles()
-    {
-        $name = 'index2';
-        $this->env->load($name);
-        $cacheFileName = $this->env->getCacheFilename($name);
-
-        $this->assertFileExists($cacheFileName, 'Cache file does not exist.');
-        $this->env->clearCacheFiles();
-        $this->assertFileNotExists($cacheFileName, 'Cache file was not cleared.');
-    }
-}
diff --git a/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php b/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php
deleted file mode 100644
index 26e14135..00000000
--- a/vendor/twig/twig/tests/FileExtensionEscapingStrategyTest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\FileExtensionEscapingStrategy;
-
-class FileExtensionEscapingStrategyTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getGuessData
-     */
-    public function testGuess($strategy, $filename)
-    {
-        $this->assertSame($strategy, FileExtensionEscapingStrategy::guess($filename));
-    }
-
-    public function getGuessData()
-    {
-        return [
-            // default
-            ['html', 'foo.html'],
-            ['html', 'foo.html.twig'],
-            ['html', 'foo'],
-            ['html', 'foo.bar.twig'],
-            ['html', 'foo.txt/foo'],
-            ['html', 'foo.txt/foo.js/'],
-
-            // css
-            ['css', 'foo.css'],
-            ['css', 'foo.css.twig'],
-            ['css', 'foo.twig.css'],
-            ['css', 'foo.js.css'],
-            ['css', 'foo.js.css.twig'],
-
-            // js
-            ['js', 'foo.js'],
-            ['js', 'foo.js.twig'],
-            ['js', 'foo.txt/foo.js'],
-            ['js', 'foo.txt.twig/foo.js'],
-
-            // txt
-            [false, 'foo.txt'],
-            [false, 'foo.txt.twig'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/FilesystemHelper.php b/vendor/twig/twig/tests/FilesystemHelper.php
deleted file mode 100644
index 76f75afc..00000000
--- a/vendor/twig/twig/tests/FilesystemHelper.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-class FilesystemHelper
-{
-    public static function removeDir($dir)
-    {
-        $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \PHP_VERSION_ID < 50300 ? 0 : \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST);
-        foreach ($iterator as $filename => $fileInfo) {
-            if ($iterator->isDot()) {
-                continue;
-            }
-
-            if ($fileInfo->isDir()) {
-                rmdir($filename);
-            } else {
-                unlink($filename);
-            }
-        }
-        rmdir($dir);
-    }
-}
diff --git a/vendor/twig/twig/tests/Fixtures/autoescape/block.test b/vendor/twig/twig/tests/Fixtures/autoescape/block.test
deleted file mode 100644
index a80b80c3..00000000
--- a/vendor/twig/twig/tests/Fixtures/autoescape/block.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-blocks and autoescape
---TEMPLATE--
-{{ include('unrelated.txt.twig') -}}
-{{ include('template.html.twig') -}}
---TEMPLATE(unrelated.txt.twig)--
-{% block content %}{% endblock %}
---TEMPLATE(template.html.twig)--
-{% extends 'parent.html.twig' %}
-{% block content %}
-{{ br -}}
-{% endblock %}
---TEMPLATE(parent.html.twig)--
-{% set _content = block('content')|raw %}
-{{ _content|raw }}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'name']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/autoescape/name.test b/vendor/twig/twig/tests/Fixtures/autoescape/name.test
deleted file mode 100644
index 5ad573cf..00000000
--- a/vendor/twig/twig/tests/Fixtures/autoescape/name.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"name" autoescape strategy
---TEMPLATE--
-{{ br -}}
-{{ include('index.js.twig') -}}
-{{ include('index.html.twig') -}}
-{{ include('index.txt.twig') -}}
---TEMPLATE(index.js.twig)--
-{{ br -}}
---TEMPLATE(index.html.twig)--
-{{ br -}}
---TEMPLATE(index.txt.twig)--
-{{ br -}}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'name']
---EXPECT--
-&lt;br /&gt;
-\u003Cbr\u0020\/\u003E
-&lt;br /&gt;
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/errors/base.html b/vendor/twig/twig/tests/Fixtures/errors/base.html
deleted file mode 100644
index cb0dbe44..00000000
--- a/vendor/twig/twig/tests/Fixtures/errors/base.html
+++ /dev/null
@@ -1 +0,0 @@
-{% block content %}{% endblock %}
diff --git a/vendor/twig/twig/tests/Fixtures/errors/index.html b/vendor/twig/twig/tests/Fixtures/errors/index.html
deleted file mode 100644
index df57c822..00000000
--- a/vendor/twig/twig/tests/Fixtures/errors/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{% extends 'base.html' %}
-{% block content %}
-    {{ foo.bar }}
-{% endblock %}
-{% block foo %}
-    {{ foo.bar }}
-{% endblock %}
diff --git a/vendor/twig/twig/tests/Fixtures/errors/leak-output.php b/vendor/twig/twig/tests/Fixtures/errors/leak-output.php
deleted file mode 100644
index 985c39a8..00000000
--- a/vendor/twig/twig/tests/Fixtures/errors/leak-output.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Fixtures\errors;
-
-require __DIR__.'/../../../vendor/autoload.php';
-
-use Twig\Environment;
-use Twig\Extension\AbstractExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\TwigFilter;
-
-class BrokenExtension extends AbstractExtension
-{
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('broken', [$this, 'broken']),
-        ];
-    }
-
-    public function broken()
-    {
-        die('OOPS');
-    }
-}
-
-$loader = new ArrayLoader([
-    'index.html.twig' => 'Hello {{ "world"|broken }}',
-]);
-$twig = new Environment($loader, ['debug' => isset($argv[1])]);
-$twig->addExtension(new BrokenExtension());
-
-echo $twig->render('index.html.twig');
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test b/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test
deleted file mode 100644
index 74a1cc28..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/child_contents_outside_blocks.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception for child templates defining content outside blocks defined by parent
---TEMPLATE--
-{% extends 'base.twig' %}
-
-Content outside a block.
-
-{% block sidebar %}
-    Content inside a block.
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block sidebar %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: A template that extends another one cannot include content outside Twig blocks. Did you forget to put the content inside a {% block %} tag in "index.twig" at line 3?
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test b/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test
deleted file mode 100644
index 2ab29805..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_extends.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception thrown from a child for an extension error
---TEMPLATE--
-{% extends 'base.twig' %}
---TEMPLATE(base.twig)--
-
-
-{{ random([]) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: The random function cannot pick from an empty array in "base.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test b/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test
deleted file mode 100644
index e2281b29..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/exception_in_extension_include.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception thrown from an include for an extension error
---TEMPLATE--
-{% include 'content.twig' %}
---TEMPLATE(content.twig)--
-
-
-{{ random([]) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: The random function cannot pick from an empty array in "content.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test
deleted file mode 100644
index 66784292..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Exception for multiline array with undefined variable
---TEMPLATE--
-{% set foo = {
-   foo: 'foo',
-   bar: 'bar',
-
-
-   foobar: foobar,
-
-
-
-   foo2: foo2,
-} %}
---DATA--
-return ['foobar' => 'foobar']
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foo2" does not exist in "index.twig" at line 11.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test
deleted file mode 100644
index 7f5e96b0..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Exception for multiline array with undefined variable
---TEMPLATE--
-{% set foo = {
-   foo: 'foo',
-   bar: 'bar',
-
-
-   foobar: foobar,
-
-
-
-   foo2: foo2,
-} %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foobar" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test
deleted file mode 100644
index 8bc524ef..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception for multile function with undefined variable
---TEMPLATE--
-{{ include('foo',
-   with_context=with_context
-) }}
---TEMPLATE(foo)--
-Foo
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "with_context" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test
deleted file mode 100644
index 5f413d40..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-Exception for multiline function with unknown argument
---TEMPLATE--
-{{ include('foo',
-   with_context=True,
-   invalid=False
-) }}
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown argument "invalid" for function "include(template, variables, with_context, ignore_missing, sandboxed)" in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test b/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test
deleted file mode 100644
index 032ad831..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Exception for multiline tag with undefined variable
---TEMPLATE--
-{% include 'foo'
-   with vars
-%}
---TEMPLATE(foo)--
-Foo
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "vars" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test b/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test
deleted file mode 100644
index e14beb67..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/strict_comparison_operator.test
+++ /dev/null
@@ -1,6 +0,0 @@
---TEST--
-The PHP === strict comparison operator is not supported
---TEMPLATE--
-{{ 1 === 2 }}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected operator of value "=". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test b/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test
deleted file mode 100644
index 4ce06854..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/syntax_error_in_reused_template.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Exception for syntax error in reused template
---TEMPLATE--
-{% use 'foo.twig' %}
---TEMPLATE(foo.twig)--
-{% block bar %}
-    {% do node.data = 5 %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "operator" of value "=" ("end of statement block" expected) in "foo.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test b/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test
deleted file mode 100644
index b4fc1691..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/unclosed_tag.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Exception for an unclosed tag
---TEMPLATE--
-{% block foo %}
-     {% if foo %}
-
-
-
-
-         {% for i in fo %}
-
-
-
-         {% endfor %}
-
-
-
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected "endblock" tag (expecting closing tag for the "if" tag defined near line 4) in "index.twig" at line 16.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test
deleted file mode 100644
index 07f855a3..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_parent.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Exception for an undefined parent
---TEMPLATE--
-{% extends 'foo.html' %}
-
-{% set foo = "foo" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.html" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test
deleted file mode 100644
index 904faa50..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_template_in_child_template.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception for an undefined template in a child template
---TEMPLATE--
-{% extends 'base.twig' %}
-
-{% block sidebar %}
-    {{ include('include.twig') }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block sidebar %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "include.twig" is not defined in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test b/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test
deleted file mode 100644
index 5bfdd07e..00000000
--- a/vendor/twig/twig/tests/Fixtures/exceptions/undefined_trait.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-Exception for an undefined trait
---TEMPLATE--
-{% use 'foo' with foobar as bar %}
---TEMPLATE(foo)--
-{% block bar %}
-{% endblock %}
---EXCEPTION--
-Twig\Error\RuntimeError: Block "foobar" is not defined in trait "foo" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/_self.test b/vendor/twig/twig/tests/Fixtures/expressions/_self.test
deleted file mode 100644
index fb88f4c8..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/_self.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-_self returns the template name
---TEMPLATE--
-{{ _self }}
---DATA--
-return []
---EXPECT--
-index.twig
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/array.test b/vendor/twig/twig/tests/Fixtures/expressions/array.test
deleted file mode 100644
index bf603335..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/array.test
+++ /dev/null
@@ -1,61 +0,0 @@
---TEST--
-Twig supports array notation
---TEMPLATE--
-{# empty array #}
-{{ []|join(',') }}
-
-{{ [1, 2]|join(',') }}
-{{ ['foo', "bar"]|join(',') }}
-{{ {0: 1, 'foo': 'bar'}|join(',') }}
-{{ {0: 1, 'foo': 'bar'}|keys|join(',') }}
-
-{{ {0: 1, foo: 'bar'}|join(',') }}
-{{ {0: 1, foo: 'bar'}|keys|join(',') }}
-
-{# nested arrays #}
-{% set a = [1, 2, [1, 2], {'foo': {'foo': 'bar'}}] %}
-{{ a[2]|join(',') }}
-{{ a[3]["foo"]|join(',') }}
-
-{# works even if [] is used inside the array #}
-{{ [foo[bar]]|join(',') }}
-
-{# elements can be any expression #}
-{{ ['foo'|upper, bar|upper, bar == foo]|join(',') }}
-
-{# arrays can have a trailing , like in PHP #}
-{{
-  [
-    1,
-    2,
-  ]|join(',')
-}}
-
-{# keys can be any expression #}
-{% set a = 1 %}
-{% set b = "foo" %}
-{% set ary = { (a): 'a', (b): 'b', 'c': 'c', (a ~ b): 'd' } %}
-{{ ary|keys|join(',') }}
-{{ ary|join(',') }}
---DATA--
-return ['bar' => 'bar', 'foo' => ['bar' => 'bar']]
---EXPECT--
-1,2
-foo,bar
-1,bar
-0,foo
-
-1,bar
-0,foo
-
-1,2
-bar
-
-bar
-
-FOO,BAR,
-
-1,2
-
-1,foo,c,1foo
-a,b,c,d
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/array_call.test b/vendor/twig/twig/tests/Fixtures/expressions/array_call.test
deleted file mode 100644
index 8c7a2ee7..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/array_call.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports method calls
---TEMPLATE--
-{{ items.foo }}
-{{ items['foo'] }}
-{{ items[foo] }}
-{{ items[items[foo]] }}
---DATA--
-return ['foo' => 'bar', 'items' => ['foo' => 'bar', 'bar' => 'foo']]
---EXPECT--
-bar
-bar
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/binary.test b/vendor/twig/twig/tests/Fixtures/expressions/binary.test
deleted file mode 100644
index b4e8be58..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/binary.test
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-Twig supports binary operations (+, -, *, /, ~, %, and, or)
---TEMPLATE--
-{{ 1 + 1 }}
-{{ 2 - 1 }}
-{{ 2 * 2 }}
-{{ 2 / 2 }}
-{{ 3 % 2 }}
-{{ 1 and 1 }}
-{{ 1 and 0 }}
-{{ 0 and 1 }}
-{{ 0 and 0 }}
-{{ 1 or 1 }}
-{{ 1 or 0 }}
-{{ 0 or 1 }}
-{{ 0 or 0 }}
-{{ 0 or 1 and 0 }}
-{{ 1 or 0 and 1 }}
-{{ "foo" ~ "bar" }}
-{{ foo ~ "bar" }}
-{{ "foo" ~ bar }}
-{{ foo ~ bar }}
-{{ 20 // 7 }}
---DATA--
-return ['foo' => 'bar', 'bar' => 'foo']
---EXPECT--
-2
-1
-4
-1
-1
-1
-
-
-
-1
-1
-1
-
-
-1
-foobar
-barbar
-foofoo
-barfoo
-2
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test b/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test
deleted file mode 100644
index c2bda1cc..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/bitwise.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports bitwise operations
---TEMPLATE--
-{{ 1 b-and 5 }}
-{{ 1 b-or 5 }}
-{{ 1 b-xor 5 }}
-{{ (1 and 0 b-or 0) is same as(1 and (0 b-or 0)) ? 'ok' : 'ko' }}
---DATA--
-return []
---EXPECT--
-1
-5
-4
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test b/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test
deleted file mode 100644
index 36539a6d..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/call_argument_defined_twice.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Argument is defined twice in a call
---TEMPLATE--
-{{ date(987654, date = 123456) }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Argument "date" is defined twice for function "date" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test b/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test
deleted file mode 100644
index 729c6748..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/call_positional_arg_after_named_arg.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Positional arguments after named arguments in a call
---TEMPLATE--
-{{ date(date = 123456, 'Y-m-d') }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Positional arguments cannot be used after named arguments for function "date" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/comparison.test b/vendor/twig/twig/tests/Fixtures/expressions/comparison.test
deleted file mode 100644
index 2811634f..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/comparison.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig supports comparison operators (==, !=, <, >, >=, <=)
---TEMPLATE--
-{{ 1 > 2 }}/{{ 1 > 1 }}/{{ 1 >= 2 }}/{{ 1 >= 1 }}
-{{ 1 < 2 }}/{{ 1 < 1 }}/{{ 1 <= 2 }}/{{ 1 <= 1 }}
-{{ 1 == 1 }}/{{ 1 == 2 }}
-{{ 1 != 1 }}/{{ 1 != 2 }}
---DATA--
-return []
---EXPECT--
-///1
-1//1/1
-1/
-/1
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test b/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test
deleted file mode 100644
index f1bf5681..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/divisibleby.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Twig supports the "divisible by" operator
---TEMPLATE--
-{{ 8 is divisible by(2) ? 'OK' }}
-{{ 8 is not divisible by(3) ? 'OK' }}
-{{ 8 is    divisible   by   (2) ? 'OK' }}
-{{ 8 is not
-   divisible
-   by
-   (3) ? 'OK' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test b/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test
deleted file mode 100644
index 0efa9305..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/dotdot.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Twig supports the .. operator
---TEMPLATE--
-{% for i in 0..10 %}{{ i }} {% endfor %}
-
-{% for letter in 'a'..'z' %}{{ letter }} {% endfor %}
-
-{% for letter in 'a'|upper..'z'|upper %}{{ letter }} {% endfor %}
-
-{% for i in foo[0]..foo[1] %}{{ i }} {% endfor %}
-
-{% for i in 0 + 1 .. 10 - 1 %}{{ i }} {% endfor %}
---DATA--
-return ['foo' => [1, 10]]
---EXPECT--
-0 1 2 3 4 5 6 7 8 9 10 
-a b c d e f g h i j k l m n o p q r s t u v w x y z 
-A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
-1 2 3 4 5 6 7 8 9 10 
-1 2 3 4 5 6 7 8 9
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test b/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test
deleted file mode 100644
index c8086d6d..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ends_with.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-Twig supports the "ends with" operator
---TEMPLATE--
-{{ 'foo' ends with 'o' ? 'OK' : 'KO' }}
-{{ not ('foo' ends with 'f') ? 'OK' : 'KO' }}
-{{ not ('foo' ends with 'foowaytoolong') ? 'OK' : 'KO' }}
-{{ 'foo' ends with '' ? 'OK' : 'KO' }}
-{{ '1' ends with true ? 'OK' : 'KO' }}
-{{ 1 ends with true ? 'OK' : 'KO' }}
-{{ 0 ends with false ? 'OK' : 'KO' }}
-{{ '' ends with false ? 'OK' : 'KO' }}
-{{ false ends with false ? 'OK' : 'KO' }}
-{{ false ends with '' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-KO
-KO
-KO
-KO
-KO
-KO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/floats.test b/vendor/twig/twig/tests/Fixtures/expressions/floats.test
deleted file mode 100644
index cdf871cd..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/floats.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Twig compiles floats properly
---CONDITION--
-version_compare(phpversion(), '7.0.0', '>=')
---TEMPLATE--
-{% set val2 = 0.0 %}
-
-{{ val is same as (0.0) ? 'Yes' : 'No' }}
-{{ val2 is same as (0.0) ? 'Yes' : 'No' }}
-{{ val is same as (val2) ? 'Yes' : 'No' }}
---DATA--
-return ['val' => 0.0]
---EXPECT--
-Yes
-Yes
-Yes
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/grouping.test b/vendor/twig/twig/tests/Fixtures/expressions/grouping.test
deleted file mode 100644
index 069ebf79..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/grouping.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig supports grouping of expressions
---TEMPLATE--
-{{ (2 + 2) / 2 }}
---DATA--
-return []
---EXPECT--
-2
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/literals.test b/vendor/twig/twig/tests/Fixtures/expressions/literals.test
deleted file mode 100644
index 308e8df2..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/literals.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig supports literals
---TEMPLATE--
-1 {{ true }}
-2 {{ TRUE }}
-3 {{ false }}
-4 {{ FALSE }}
-5 {{ none }}
-6 {{ NONE }}
-7 {{ null }}
-8 {{ NULL }}
---DATA--
-return []
---EXPECT--
-1 1
-2 1
-3 
-4 
-5 
-6 
-7 
-8 
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test b/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test
deleted file mode 100644
index 60417e04..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/magic_call.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Twig supports __call() for attributes
---TEMPLATE--
-{{ foo.foo }}
-{{ foo.bar }}
---DATA--
-class TestClassForMagicCallAttributes
-{
-    public function getBar()
-    {
-        return 'bar_from_getbar';
-    }
-
-    public function __call($method, $arguments)
-    {
-        if ('foo' === $method) {
-            return 'foo_from_call';
-        }
-
-        return false;
-    }
-}
-
-return ['foo' => new TestClassForMagicCallAttributes()]
---EXPECT--
-foo_from_call
-bar_from_getbar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/matches.test b/vendor/twig/twig/tests/Fixtures/expressions/matches.test
deleted file mode 100644
index 95459c3b..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/matches.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Twig supports the "matches" operator
---TEMPLATE--
-{{ 'foo' matches '/o/' ? 'OK' : 'KO' }}
-{{ 'foo' matches '/^fo/' ? 'OK' : 'KO' }}
-{{ 'foo' matches '/O/i' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/method_call.test b/vendor/twig/twig/tests/Fixtures/expressions/method_call.test
deleted file mode 100644
index bf49f389..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/method_call.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Twig supports method calls
---TEMPLATE--
-{{ items.foo.foo }}
-{{ items.foo.getFoo() }}
-{{ items.foo.bar }}
-{{ items.foo['bar'] }}
-{{ items.foo.bar('a', 43) }}
-{{ items.foo.bar(foo) }}
-{{ items.foo.self.foo() }}
-{{ items.foo.is }}
-{{ items.foo.in }}
-{{ items.foo.not }}
---DATA--
-return ['foo' => 'bar', 'items' => ['foo' => new Twig\Tests\TwigTestFoo(), 'bar' => 'foo']]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-foo
-foo
-bar
-
-bar_a-43
-bar_bar
-foo
-is
-in
-not
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test b/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test
deleted file mode 100644
index c2a6e340..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/negative_numbers.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig manages negative numbers correctly
---TEMPLATE--
-{{ -1 }}
-{{ - 1 }}
-{{ 5 - 1 }}
-{{ 5-1 }}
-{{ 5 + -1 }}
-{{ 5 + - 1 }}
---DATA--
-return []
---EXPECT--
--1
--1
-4
-4
-4
-4
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test b/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test
deleted file mode 100644
index af82c47c..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/not_arrow_fn.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-A string in parentheses cannot be confused with an arrow function
---TEMPLATE--
-{{ ["foo", "bar"]|join(("f")) }}
---DATA--
-return []
---EXPECT--
-foofbar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test b/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test
deleted file mode 100644
index fa9a843c..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/operators_as_variables.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Twig allows to use named operators as variable names
---TEMPLATE--
-{% for match in matches %}
-    {{- match }}
-{% endfor %}
-{{ in }}
-{{ is }}
---DATA--
-return ['matches' => [1, 2, 3], 'in' => 'in', 'is' => 'is']
---EXPECT--
-1
-2
-3
-in
-is
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/postfix.test b/vendor/twig/twig/tests/Fixtures/expressions/postfix.test
deleted file mode 100644
index 276cbf19..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/postfix.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig parses postfix expressions
---TEMPLATE--
-{% import _self as macros %}
-
-{% macro foo() %}foo{% endmacro %}
-
-{{ 'a' }}
-{{ 'a'|upper }}
-{{ ('a')|upper }}
-{{ -1|upper }}
-{{ macros.foo() }}
-{{ (macros).foo() }}
---DATA--
-return []
---EXPECT--
-a
-A
-A
--1
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/power.test b/vendor/twig/twig/tests/Fixtures/expressions/power.test
deleted file mode 100644
index 84fd2369..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/power.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Twig parses power expressions
---TEMPLATE--
-{{ 2**3 }}
-{{ (-2)**3 }}
-{{ (-2)**(-3) }}
-{{ a ** a }}
-{{ a ** b }}
-{{ b ** a }}
-{{ b ** b }}
---DATA--
-return ['a' => 4, 'b' => -2]
---EXPECT--
-8
--8
--0.125
-256
-0.0625
-16
-0.25
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/sameas.test b/vendor/twig/twig/tests/Fixtures/expressions/sameas.test
deleted file mode 100644
index 83f3691f..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/sameas.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-Twig supports the "same as" operator
---TEMPLATE--
-{{ 1 is same as(1) ? 'OK' }}
-{{ 1 is not same as(true) ? 'OK' }}
-{{ 1 is same as(1) ? 'OK' }}
-{{ 1 is not same as(true) ? 'OK' }}
-{{ 1 is   same    as   (1) ? 'OK' }}
-{{ 1 is not
-    same
-    as
-    (true) ? 'OK' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test b/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test
deleted file mode 100644
index a78ff1ea..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/starts_with.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Twig supports the "starts with" operator
---TEMPLATE--
-{{ 'foo' starts with 'f' ? 'OK' : 'KO' }}
-{{ not ('foo' starts with 'oo') ? 'OK' : 'KO' }}
-{{ not ('foo' starts with 'foowaytoolong') ? 'OK' : 'KO' }}
-{{ 'foo' starts      with 'f' ? 'OK' : 'KO' }}
-{{ 'foo' starts
-with 'f' ? 'OK' : 'KO' }}
-{{ 'foo' starts with '' ? 'OK' : 'KO' }}
-{{ '1' starts with true ? 'OK' : 'KO' }}
-{{ '' starts with false ? 'OK' : 'KO' }}
-{{ 'a' starts with false ? 'OK' : 'KO' }}
-{{ false starts with '' ? 'OK' : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-KO
-KO
-KO
-KO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test b/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test
deleted file mode 100644
index 478d4eb5..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/string_operator_as_var_assignment.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig supports the string operators as variable names in assignments
---TEMPLATE--
-{% for matches in [1, 2] %}
-    {{- matches }}
-{% endfor %}
-
-{% set matches = [1, 2] %}
-
-OK
---DATA--
-return []
---EXPECT--
-1
-2
-
-
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/strings.test b/vendor/twig/twig/tests/Fixtures/expressions/strings.test
deleted file mode 100644
index f402c893..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/strings.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports string interpolation
---TEMPLATE--
-{{ "foo #{"foo #{bar} baz"} baz" }}
-{{ "foo #{bar}#{bar} baz" }}
---DATA--
-return ['bar' => 'BAR']
---EXPECT--
-foo foo BAR baz baz
-foo BARBAR baz
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test
deleted file mode 100644
index 37eccc0f..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 1 ? 'YES' : 'NO' }}
-{{ 0 ? 'YES' : 'NO' }}
-{{ 0 ? 'YES' : (1 ? 'YES1' : 'NO1') }}
-{{ 0 ? 'YES' : (0 ? 'YES1' : 'NO1') }}
-{{ 1 == 1 ? 'foo<br />':'' }}
-{{ foo ~ (bar ? ('-' ~ bar) : '') }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---EXPECT--
-YES
-NO
-YES1
-NO1
-foo<br />
-foo-bar
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test
deleted file mode 100644
index 8b0f7284..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_noelse.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 1 ? 'YES' }}
-{{ 0 ? 'YES' }}
---DATA--
-return []
---EXPECT--
-YES
-
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test b/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test
deleted file mode 100644
index ecd6b754..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/ternary_operator_nothen.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig supports the ternary operator
---TEMPLATE--
-{{ 'YES' ?: 'NO' }}
-{{ 0 ?: 'NO' }}
---DATA--
-return []
---EXPECT--
-YES
-NO
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test b/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test
deleted file mode 100644
index eca3b285..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/two_word_operators_as_variables.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig does not allow to use two-word named operators as variable names
---TEMPLATE--
-{{ starts with }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "operator" of value "starts with" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary.test b/vendor/twig/twig/tests/Fixtures/expressions/unary.test
deleted file mode 100644
index 54225311..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Twig supports unary operators (not, -, +)
---TEMPLATE--
-{{ not 1 }}/{{ not 0 }}
-{{ +1 + 1 }}/{{ -1 - 1 }}
-{{ not (false or true) }}
---DATA--
-return []
---EXPECT--
-/1
-2/-2
-
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test b/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test
deleted file mode 100644
index 27deba3e..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary_macro_arguments.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-Twig manages negative numbers as default parameters
---TEMPLATE--
-{% import _self as macros %}
-{{ macros.negative_number1() }}
-{{ macros.negative_number2() }}
-{{ macros.negative_number3() }}
-{{ macros.positive_number1() }}
-{{ macros.positive_number2() }}
-{% macro negative_number1(nb=-1) %}{{ nb }}{% endmacro %}
-{% macro negative_number2(nb = --1) %}{{ nb }}{% endmacro %}
-{% macro negative_number3(nb = - 1) %}{{ nb }}{% endmacro %}
-{% macro positive_number1(nb = +1) %}{{ nb }}{% endmacro %}
-{% macro positive_number2(nb = ++1) %}{{ nb }}{% endmacro %}
---DATA--
-return []
---EXPECT--
--1
-1
--1
-1
-1
diff --git a/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test b/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test
deleted file mode 100644
index 9c56ab12..00000000
--- a/vendor/twig/twig/tests/Fixtures/expressions/unary_precedence.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Twig unary operators precedence
---TEMPLATE--
-{{ -1 - 1 }}
-{{ -1 - -1 }}
-{{ -1 * -1 }}
-{{ 4 / -1 * 5 }}
---DATA--
-return []
---EXPECT--
--2
-0
-1
--20
diff --git a/vendor/twig/twig/tests/Fixtures/filters/abs.test b/vendor/twig/twig/tests/Fixtures/filters/abs.test
deleted file mode 100644
index 7518769d..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/abs.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-"abs" filter
---TEMPLATE--
-{{ (-5.5)|abs }}
-{{ (-5)|abs }}
-{{ (-0)|abs }}
-{{ 0|abs }}
-{{ 5|abs }}
-{{ 5.5|abs }}
-{{ number1|abs }}
-{{ number2|abs }}
-{{ number3|abs }}
-{{ number4|abs }}
-{{ number5|abs }}
-{{ number6|abs }}
---DATA--
-return ['number1' => -5.5, 'number2' => -5, 'number3' => -0, 'number4' => 0, 'number5' => 5, 'number6' => 5.5]
---EXPECT--
-5.5
-5
-0
-0
-5
-5.5
-5.5
-5
-0
-0
-5
-5.5
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch.test b/vendor/twig/twig/tests/Fixtures/filters/batch.test
deleted file mode 100644
index 0acf25bd..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch.test
+++ /dev/null
@@ -1,31 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3) %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-    </div>
-  <div class=row>
-      <div class=item>d</div>
-      <div class=item>e</div>
-      <div class=item>f</div>
-    </div>
-  <div class=row>
-      <div class=item>g</div>
-      <div class=item>h</div>
-      <div class=item>i</div>
-    </div>
-  <div class=row>
-      <div class=item>j</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_float.test b/vendor/twig/twig/tests/Fixtures/filters/batch_float.test
deleted file mode 100644
index dad004ec..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_float.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3.1) %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-      <div class=item>d</div>
-    </div>
-  <div class=row>
-      <div class=item>e</div>
-      <div class=item>f</div>
-      <div class=item>g</div>
-      <div class=item>h</div>
-    </div>
-  <div class=row>
-      <div class=item>i</div>
-      <div class=item>j</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test
deleted file mode 100644
index 411b4fc7..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_empty_fill.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-<table>
-{% for row in items|batch(3, '') %}
-  <tr>
-  {% for column in row %}
-    <td>{{ column }}</td>
-  {% endfor %}
-  </tr>
-{% endfor %}
-</table>
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<table>
-  <tr>
-      <td>a</td>
-      <td>b</td>
-      <td>c</td>
-    </tr>
-  <tr>
-      <td>d</td>
-      <td>e</td>
-      <td>f</td>
-    </tr>
-  <tr>
-      <td>g</td>
-      <td>h</td>
-      <td>i</td>
-    </tr>
-  <tr>
-      <td>j</td>
-      <td></td>
-      <td></td>
-    </tr>
-</table>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test
deleted file mode 100644
index 750d1557..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_exact_elements.test
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3, 'fill') %}
-  <div class=row>
-  {% for column in row %}
-    <div class=item>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']]
---EXPECT--
-<div class=row>
-      <div class=item>a</div>
-      <div class=item>b</div>
-      <div class=item>c</div>
-    </div>
-  <div class=row>
-      <div class=item>d</div>
-      <div class=item>e</div>
-      <div class=item>f</div>
-    </div>
-  <div class=row>
-      <div class=item>g</div>
-      <div class=item>h</div>
-      <div class=item>i</div>
-    </div>
-  <div class=row>
-      <div class=item>j</div>
-      <div class=item>k</div>
-      <div class=item>l</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test
deleted file mode 100644
index 5d470d00..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_fill.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-<table>
-{% for row in items|batch(3, 'fill') %}
-  <tr>
-  {% for column in row %}
-    <td>{{ column }}</td>
-  {% endfor %}
-  </tr>
-{% endfor %}
-</table>
---DATA--
-return ['items' => ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']]
---EXPECT--
-<table>
-  <tr>
-      <td>a</td>
-      <td>b</td>
-      <td>c</td>
-    </tr>
-  <tr>
-      <td>d</td>
-      <td>e</td>
-      <td>f</td>
-    </tr>
-  <tr>
-      <td>g</td>
-      <td>h</td>
-      <td>i</td>
-    </tr>
-  <tr>
-      <td>j</td>
-      <td>fill</td>
-      <td>fill</td>
-    </tr>
-</table>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test
deleted file mode 100644
index e56cd79b..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_keys.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter preserves array keys
---TEMPLATE--
-{{ {'foo': 'bar', 'key': 'value'}|batch(4)|first|keys|join(',') }}
-{{ {'foo': 'bar', 'key': 'value'}|batch(4, 'fill')|first|keys|join(',') }}
---DATA--
-return []
---EXPECT--
-foo,key
-foo,key,0,1
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test
deleted file mode 100644
index 90f4de68..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_more_elements.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"batch" filter
---TEMPLATE--
-{% for row in items|batch(3, 'fill') %}
-  <div class=row>
-  {% for key, column in row %}
-    <div class={{ key }}>{{ column }}</div>
-  {% endfor %}
-  </div>
-{% endfor %}
---DATA--
-return ['items' => ['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', '123' => 'e']]
---EXPECT--
-<div class=row>
-      <div class=a>a</div>
-      <div class=b>b</div>
-      <div class=c>c</div>
-    </div>
-  <div class=row>
-      <div class=d>d</div>
-      <div class=123>e</div>
-      <div class=124>fill</div>
-    </div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test b/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test
deleted file mode 100644
index bc303da8..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/batch_with_zero_elements.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"batch" filter with zero elements
---TEMPLATE--
-{{ []|batch(3)|length }}
-{{ []|batch(3, 'fill')|length }}
---DATA--
-return []
---EXPECT--
-0
-0
diff --git a/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test b/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test
deleted file mode 100644
index db8acede..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/convert_encoding.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"convert_encoding" filter
---CONDITION--
-function_exists('iconv') || function_exists('mb_convert_encoding')
---TEMPLATE--
-{{ "愛していますか?"|convert_encoding('ISO-2022-JP', 'UTF-8')|convert_encoding('UTF-8', 'ISO-2022-JP') }}
---DATA--
-return []
---EXPECT--
-愛していますか?
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date.test b/vendor/twig/twig/tests/Fixtures/filters/date.test
deleted file mode 100644
index 16816aa9..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date.test
+++ /dev/null
@@ -1,90 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
-{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s P', 'America/Chicago') }}
-{{ date1|date('e') }}
-{{ date1|date('d/m/Y H:i:s') }}
-
-{{ date2|date }}
-{{ date2|date('d/m/Y') }}
-{{ date2|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date2|date('d/m/Y H:i:s', timezone1) }}
-{{ date2|date('d/m/Y H:i:s') }}
-
-{{ date3|date }}
-{{ date3|date('d/m/Y') }}
-
-{{ date4|date }}
-{{ date4|date('d/m/Y') }}
-
-{{ date5|date }}
-{{ date5|date('d/m/Y') }}
-
-{{ date6|date('d/m/Y H:i:s P', 'Europe/Paris') }}
-{{ date6|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date6|date('d/m/Y H:i:s P', false) }}
-{{ date6|date('e', 'Europe/Paris') }}
-{{ date6|date('e', false) }}
-
-{{ date7|date }}
-{{ date7|date(timezone='Europe/Paris') }}
-{{ date7|date(timezone='Asia/Hong_Kong') }}
-{{ date7|date(timezone=false) }}
-{{ date7|date(timezone='Indian/Mauritius') }}
-
-{{ '2010-01-28 15:00:00'|date(timezone="Europe/Paris") }}
-{{ '2010-01-28 15:00:00'|date(timezone="Asia/Hong_Kong") }}
---DATA--
-date_default_timezone_set('Europe/Paris');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-    'date2' => new \DateTime('2010-10-04 13:45'),
-    'date3' => '2010-10-04 13:45',
-    'date4' => 1286199900, // \DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new \DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT
-    'date5' => -189291360, // \DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new \DateTimeZone('UTC'))->getTimestamp(),
-    'date6' => new \DateTime('2010-10-04 13:45', new \DateTimeZone('America/New_York')),
-    'date7' => '2010-01-28T15:00:00+04:00',
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 19:45:00 +08:00
-04/10/2010 06:45:00 -05:00
-Europe/Paris
-04/10/2010 13:45:00
-
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 07:45:00
-04/10/2010 13:45:00
-
-October 4, 2010 13:45
-04/10/2010
-
-October 4, 2010 15:45
-04/10/2010
-
-January 2, 1964 04:04
-02/01/1964
-
-04/10/2010 19:45:00 +02:00
-05/10/2010 01:45:00 +08:00
-04/10/2010 13:45:00 -04:00
-Europe/Paris
-America/New_York
-
-January 28, 2010 12:00
-January 28, 2010 12:00
-January 28, 2010 19:00
-January 28, 2010 15:00
-January 28, 2010 15:00
-
-January 28, 2010 15:00
-January 28, 2010 22:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test b/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test
deleted file mode 100644
index c6e81302..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_default_format.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
---DATA--
-date_default_timezone_set('UTC');
-$twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('Y-m-d', '%d days %h hours');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-]
---EXPECT--
-2010-10-04
-04/10/2010
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test b/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test
deleted file mode 100644
index a72fb81d..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_default_format_interval.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"date" filter (interval support as of PHP 5.3)
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ date2|date }}
-{{ date2|date('%d days') }}
---DATA--
-date_default_timezone_set('UTC');
-$twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('Y-m-d', '%d days %h hours');
-return [
-    'date2' => new \DateInterval('P2D'),
-]
---EXPECT--
-2 days 0 hours
-2 days
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test b/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test
deleted file mode 100644
index 2414db50..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_immutable.test
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-"date" filter
---CONDITION--
-version_compare(phpversion(), '5.5.0', '>=')
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('d/m/Y') }}
-{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }}
-{{ date1|date('d/m/Y H:i:s', timezone1) }}
-{{ date1|date('d/m/Y H:i:s') }}
-{{ date1|date_modify('+1 hour')|date('d/m/Y H:i:s') }}
-
-{{ date2|date('d/m/Y H:i:s P', 'Europe/Paris') }}
-{{ date2|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }}
-{{ date2|date('d/m/Y H:i:s P', false) }}
-{{ date2|date('e', 'Europe/Paris') }}
-{{ date2|date('e', false) }}
---DATA--
-date_default_timezone_set('Europe/Paris');
-return [
-    'date1' => new \DateTimeImmutable('2010-10-04 13:45'),
-    'date2' => new \DateTimeImmutable('2010-10-04 13:45', new \DateTimeZone('America/New_York')),
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-October 4, 2010 13:45
-04/10/2010
-04/10/2010 19:45:00
-04/10/2010 07:45:00
-04/10/2010 13:45:00
-04/10/2010 14:45:00
-
-04/10/2010 19:45:00 +02:00
-05/10/2010 01:45:00 +08:00
-04/10/2010 13:45:00 -04:00
-Europe/Paris
-America/New_York
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_interval.test b/vendor/twig/twig/tests/Fixtures/filters/date_interval.test
deleted file mode 100644
index c3333f56..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_interval.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"date" filter (interval support as of PHP 5.3)
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ date1|date }}
-{{ date1|date('%d days %h hours') }}
-{{ date1|date('%d days %h hours', timezone1) }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => new \DateInterval('P2D'),
-    // This should have no effect on \DateInterval formatting
-    'timezone1' => new \DateTimeZone('America/New_York'),
-]
---EXPECT--
-2 days
-2 days 0 hours
-2 days 0 hours
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_modify.test b/vendor/twig/twig/tests/Fixtures/filters/date_modify.test
deleted file mode 100644
index d7f8fdf4..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_modify.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"date_modify" filter
---TEMPLATE--
-{{ date1|date_modify('-1day')|date('Y-m-d H:i:s') }}
-{{ date2|date_modify('-1day')|date('Y-m-d H:i:s') }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => '2010-10-04 13:45',
-    'date2' => new \DateTime('2010-10-04 13:45'),
-]
---EXPECT--
-2010-10-03 13:45:00
-2010-10-03 13:45:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test b/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test
deleted file mode 100644
index 2d1aa134..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/date_namedargs.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"date" filter
---TEMPLATE--
-{{ date|date(format='d/m/Y H:i:s P', timezone='America/Chicago') }}
-{{ date|date(timezone='America/Chicago', format='d/m/Y H:i:s P') }}
-{{ date|date('d/m/Y H:i:s P', timezone='America/Chicago') }}
---DATA--
-date_default_timezone_set('UTC');
-return ['date' => mktime(13, 45, 0, 10, 4, 2010)]
---EXPECT--
-04/10/2010 08:45:00 -05:00
-04/10/2010 08:45:00 -05:00
-04/10/2010 08:45:00 -05:00
diff --git a/vendor/twig/twig/tests/Fixtures/filters/default.test b/vendor/twig/twig/tests/Fixtures/filters/default.test
deleted file mode 100644
index b01a62d2..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/default.test
+++ /dev/null
@@ -1,150 +0,0 @@
---TEST--
-"default" filter
---TEMPLATE--
-Variable:
-{{ definedVar                  |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ zeroVar                     |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ emptyVar                    |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nullVar                     |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ undefinedVar                |default('default') is same as('default') ? 'ok' : 'ko' }}
-Array access:
-{{ nested.definedVar           |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested['definedVar']        |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested.zeroVar              |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested.emptyVar             |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.nullVar              |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.undefinedVar         |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested['undefinedVar']      |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ undefinedVar.foo            |default('default') is same as('default') ? 'ok' : 'ko' }}
-Plain values:
-{{ 'defined'                   |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ 0                           |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ ''                          |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ null                        |default('default') is same as('default') ? 'ok' : 'ko' }}
-Precedence:
-{{ 'o' ~ nullVar               |default('k') }}
-{{ 'o' ~ nested.nullVar        |default('k') }}
-Object methods:
-{{ object.foo                  |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.undefinedMethod      |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.getFoo()             |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.getFoo('a')          |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.undefinedMethod()    |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.undefinedMethod('a') |default('default') is same as('default') ? 'ok' : 'ko' }}
-Deep nested:
-{{ nested.undefinedVar.foo.bar |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ nested.definedArray.0       |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ nested['definedArray'][0]   |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.self.foo             |default('default') is same as('default') ? 'ko' : 'ok' }}
-{{ object.self.undefinedMethod |default('default') is same as('default') ? 'ok' : 'ko' }}
-{{ object.undefinedMethod.self |default('default') is same as('default') ? 'ok' : 'ko' }}
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'emptyVar'   => '',
-    'nullVar'    => null,
-    'nested'     => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'emptyVar'     => '',
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-Variable:
-ok
-ok
-ok
-ok
-ok
-Array access:
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-Plain values:
-ok
-ok
-ok
-ok
-Precedence:
-ok
-ok
-Object methods:
-ok
-ok
-ok
-ok
-ok
-ok
-Deep nested:
-ok
-ok
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'emptyVar'   => '',
-    'nullVar'    => null,
-    'nested'     => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'emptyVar'     => '',
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => true]
---EXPECT--
-Variable:
-ok
-ok
-ok
-ok
-ok
-Array access:
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-Plain values:
-ok
-ok
-ok
-ok
-Precedence:
-ok
-ok
-Object methods:
-ok
-ok
-ok
-ok
-ok
-ok
-Deep nested:
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test b/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test
deleted file mode 100644
index 27dc8784..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/dynamic_filter.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-dynamic filter
---TEMPLATE--
-{{ 'bar'|foo_path }}
-{{ 'bar'|a_foo_b_bar }}
---DATA--
-return []
---EXPECT--
-foo/bar
-a/b/bar
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape.test b/vendor/twig/twig/tests/Fixtures/filters/escape.test
deleted file mode 100644
index 131f5b4e..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "foo <br />"|e }}
---DATA--
-return []
---EXPECT--
-foo &lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test b/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test
deleted file mode 100644
index 10e32755..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_html_attr.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter does not escape with the html strategy when using the html_attr strategy
---TEMPLATE--
-{{ '<br />'|escape('html_attr') }}
---DATA--
-return []
---EXPECT--
-&lt;br&#x20;&#x2F;&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test b/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test
deleted file mode 100644
index 4c2fb7a3..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_javascript.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "é ♜ 𝌆"|e('js') }}
---DATA--
-return []
---EXPECT--
-\u00E9\u0020\u265C\u0020\uD834\uDF06
diff --git a/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test b/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test
deleted file mode 100644
index 93f34297..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/escape_non_supported_charset.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{{ "愛していますか? <br />"|e }}
---DATA--
-return []
---EXPECT--
-愛していますか? &lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter.test b/vendor/twig/twig/tests/Fixtures/filters/filter.test
deleted file mode 100644
index fe44d80e..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter.test
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-"filter" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in [1, 5, 3, 4, 5]|filter((v) => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in [1, 5, 3, 4, 5]|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|filter((v) => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in ita|filter(v => v > offset) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return [
-    'it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
-    'ita' => new Twig\Tests\IteratorAggregateStub(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
-]
---EXPECT--
-1 = 5
-3 = 4
-4 = 5
-
-c = 5
-d = 8
-
-1 = 5
-3 = 4
-4 = 5
-
-c = 5
-d = 8
-
-c = 5
-d = 8
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test b/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test
deleted file mode 100644
index 6684139a..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter_php_55.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"filter" filter (PHP 5.5 required)
---CONDITION--
-version_compare(phpversion(), '5.5.0', '>=')
---TEMPLATE--
-{% for k, v in xml|filter(x => true) %}
-{{ k }}/{{ v }}
-{% endfor %}
-
-{# we can iterate more than once #}
-{% for k, v in xml|filter(x => true) %}
-{{ k }}/{{ v }}
-{% endfor %}
---DATA--
-return ['xml' => new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem>foo</elem><elem>bar</elem><elem>baz</elem></doc>')]
---EXPECT--
-elem/foo
-elem/bar
-elem/baz
-
-elem/foo
-elem/bar
-elem/baz
diff --git a/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test b/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test
deleted file mode 100644
index 0daf4083..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/filter_php_56.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-"filter" filter (PHP 5.6 required)
---CONDITION--
-version_compare(phpversion(), '5.6.0', '>=')
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{# we can iterate more than once #}
-{% for k, v in it|filter((v, k) => (v > offset) and (k != "d")) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return ['it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8])]
---EXPECT--
-c = 5
-
-c = 5
-
-c = 5
diff --git a/vendor/twig/twig/tests/Fixtures/filters/first.test b/vendor/twig/twig/tests/Fixtures/filters/first.test
deleted file mode 100644
index b19f2eed..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/first.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"first" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|first }}
-{{ {a: 1, b: 2, c: 3, d: 4}|first }}
-{{ '1234'|first }}
-{{ arr|first }}
-{{ 'Ä€é'|first }}
-{{ ''|first }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-1
-1
-1
-1
-Ä
diff --git a/vendor/twig/twig/tests/Fixtures/filters/force_escape.test b/vendor/twig/twig/tests/Fixtures/filters/force_escape.test
deleted file mode 100644
index 7efbe320..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/force_escape.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"escape" filter
---TEMPLATE--
-{% set foo %}
-    foo<br />
-{% endset %}
-
-{{ foo|e('html') -}}
-{{ foo|e('js') }}
-{% autoescape true %}
-    {{ foo }}
-{% endautoescape %}
---DATA--
-return []
---EXPECT--
-    foo&lt;br /&gt;
-\u0020\u0020\u0020\u0020foo\u003Cbr\u0020\/\u003E\n
-        foo<br />
diff --git a/vendor/twig/twig/tests/Fixtures/filters/format.test b/vendor/twig/twig/tests/Fixtures/filters/format.test
deleted file mode 100644
index efaf8317..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/format.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"format" filter
---TEMPLATE--
-{{ string|format(foo, 3) }}
---DATA--
-return ['string' => '%s/%d', 'foo' => 'bar']
---EXPECT--
-bar/3
diff --git a/vendor/twig/twig/tests/Fixtures/filters/join.test b/vendor/twig/twig/tests/Fixtures/filters/join.test
deleted file mode 100644
index 3127ea1a..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/join.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"join" filter
---TEMPLATE--
-{{ ["foo", "bar"]|join(', ') }}
-{{ foo|join(', ') }}
-{{ bar|join(', ') }}
-
-{{ ["foo", "bar"]|join(', ', ' and ') }}
-{{ foo|join(', ', ' and ') }}
-{{ bar|join(', ', ' and ') }}
-{{ ["one", "two", "three"]|join(', ', ' and ') }}
-{{ ["a", "b", "c"]|join('','-') }}
-{{ ["a", "b", "c"]|join('-','-') }}
-{{ ["a", "b", "c"]|join('-','') }}
-{{ ["hello"]|join('|','-') }}
-
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join }}
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join(',') }}
-{{ {"a": "w", "b": "x", "c": "y", "d": "z"}|join(',','-') }}
---DATA--
-return ['foo' => new Twig\Tests\TwigTestFoo(), 'bar' => new \ArrayObject([3, 4])]
---EXPECT--
-foo, bar
-1, 2
-3, 4
-
-foo and bar
-1 and 2
-3 and 4
-one, two and three
-ab-c
-a-b-c
-a-bc
-hello
-
-wxyz
-w,x,y,z
-w,x,y-z
diff --git a/vendor/twig/twig/tests/Fixtures/filters/json_encode.test b/vendor/twig/twig/tests/Fixtures/filters/json_encode.test
deleted file mode 100644
index 902f90b3..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/json_encode.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"json_encode" filter
---TEMPLATE--
-{{ "foo"|json_encode|raw }}
-{{ foo|json_encode|raw }}
-{{ [foo, "foo"]|json_encode|raw }}
---DATA--
-return ['foo' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-"foo"
-"foo"
-["foo","foo"]
diff --git a/vendor/twig/twig/tests/Fixtures/filters/last.test b/vendor/twig/twig/tests/Fixtures/filters/last.test
deleted file mode 100644
index f71896c7..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/last.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"last" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|last }}
-{{ {a: 1, b: 2, c: 3, d: 4}|last }}
-{{ '1234'|last }}
-{{ arr|last }}
-{{ 'Ä€é'|last }}
-{{ ''|last }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-4
-4
-4
-4
-é
diff --git a/vendor/twig/twig/tests/Fixtures/filters/length.test b/vendor/twig/twig/tests/Fixtures/filters/length.test
deleted file mode 100644
index eb3f0233..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/length.test
+++ /dev/null
@@ -1,40 +0,0 @@
---TEST--
-"length" filter
---TEMPLATE--
-{{ array|length }}
-{{ string|length }}
-{{ number|length }}
-{{ to_string_able|length }}
-{{ countable|length }}
-{{ iterator_aggregate|length }}
-{{ null|length }}
-{{ magic|length }}
-{{ non_countable|length }}
-{{ simple_xml_element|length }}
-{{ iterator|length }}
---DATA--
-return [
-    'array' => [1, 4],
-    'string' => 'foo',
-    'number' => 1000,
-    'to_string_able' => new Twig\Tests\ToStringStub('foobar'),
-    'countable' => new Twig\Tests\CountableStub(42),       /* also asserts we do *not* call __toString() */
-    'iterator_aggregate' => new Twig\Tests\IteratorAggregateStub(['a', 'b', 'c']),   /* also asserts we do *not* call __toString() */
-    'null'          => null,
-    'magic'         => new Twig\Tests\MagicCallStub(),     /* used to assert we do *not* call __call */
-    'non_countable' => new \StdClass(),
-    'simple_xml_element' => new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem/><elem/></doc>'),
-    'iterator' => new Twig\Tests\SimpleIteratorForTesting()
-]
---EXPECT--
-2
-3
-4
-6
-42
-3
-0
-1
-1
-2
-7
diff --git a/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test b/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test
deleted file mode 100644
index b1e9681a..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/length_utf8.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"length" filter
---CONDITION--
-function_exists('mb_get_info')
---TEMPLATE--
-{{ string|length }}
-{{ markup|length }}
---DATA--
-return ['string' => 'été', 'markup' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-3
-3
diff --git a/vendor/twig/twig/tests/Fixtures/filters/map.test b/vendor/twig/twig/tests/Fixtures/filters/map.test
deleted file mode 100644
index 5552f816..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/map.test
+++ /dev/null
@@ -1,41 +0,0 @@
---TEST--
-"map" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{% for k, v in [1, 2]|map((item) => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2}|map((item) => item ~ "*" ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in {a: 1, b: 2}|map((item, k) => item ~ "*" ~ k ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in [1, 2]|map(item => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
-
-{% for k, v in it|map(item => item + 2 ) -%}
-    {{ k }} = {{ v }}
-{% endfor %}
---DATA--
-return ['it' => new \ArrayIterator([1, 2])]
---EXPECT--
-0 = 3
-1 = 4
-
-a = 1*
-b = 2*
-
-a = 1*a
-b = 2*b
-
-0 = 3
-1 = 4
-
-0 = 3
-1 = 4
diff --git a/vendor/twig/twig/tests/Fixtures/filters/merge.test b/vendor/twig/twig/tests/Fixtures/filters/merge.test
deleted file mode 100644
index 8877501d..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/merge.test
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-"merge" filter
---TEMPLATE--
-{{ items|merge({'bar': 'foo'})|join }}
-{{ items|merge({'bar': 'foo'})|keys|join }}
-{{ {'bar': 'foo'}|merge(items)|join }}
-{{ {'bar': 'foo'}|merge(items)|keys|join }}
-{{ numerics|merge([4, 5, 6])|join }}
-{{ traversable.a|merge(traversable.b)|join }}
---DATA--
-return [
-    'items' => ['foo' => 'bar'],
-    'numerics' => [1, 2, 3],
-    'traversable' => [
-        'a' => new \ArrayObject([0 => 1, 1 => 2, 2 => 3]),
-        'b' => new \ArrayObject(['a' => 'b'])
-    ]
-]
---EXPECT--
-barfoo
-foobar
-foobar
-barfoo
-123456
-123b
diff --git a/vendor/twig/twig/tests/Fixtures/filters/nl2br.test b/vendor/twig/twig/tests/Fixtures/filters/nl2br.test
deleted file mode 100644
index 524ec45f..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/nl2br.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"nl2br" filter
---TEMPLATE--
-{{ "I like Twig.\nYou will like it too.\n\nEverybody like it!"|nl2br }}
-{{ text|nl2br }}
---DATA--
-return ['text' => "If you have some <strong>HTML</strong>\nit will be escaped."]
---EXPECT--
-I like Twig.<br />
-You will like it too.<br />
-<br />
-Everybody like it!
-If you have some &lt;strong&gt;HTML&lt;/strong&gt;<br />
-it will be escaped.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/number_format.test b/vendor/twig/twig/tests/Fixtures/filters/number_format.test
deleted file mode 100644
index 7f1e2e16..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/number_format.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"number_format" filter
---TEMPLATE--
-{{ 20|number_format }}
-{{ 20.25|number_format }}
-{{ 20.25|number_format(2) }}
-{{ 20.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',', '.') }}
---DATA--
-return []
---EXPECT--
-20
-20
-20.25
-20,25
-1,020,25
-1.020,25
diff --git a/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test b/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test
deleted file mode 100644
index beedd901..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/number_format_default.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"number_format" filter with defaults.
---TEMPLATE--
-{{ 20|number_format }}
-{{ 20.25|number_format }}
-{{ 20.25|number_format(1) }}
-{{ 20.25|number_format(2, ',') }}
-{{ 1020.25|number_format }}
-{{ 1020.25|number_format(2, ',') }}
-{{ 1020.25|number_format(2, ',', '.') }}
---DATA--
-$twig->getExtension('\Twig\Extension\CoreExtension')->setNumberFormat(2, '!', '=');
-return []
---EXPECT--
-20!00
-20!25
-20!3
-20,25
-1=020!25
-1=020,25
-1.020,25
diff --git a/vendor/twig/twig/tests/Fixtures/filters/reduce.test b/vendor/twig/twig/tests/Fixtures/filters/reduce.test
deleted file mode 100644
index 73cad416..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/reduce.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"reduce" filter
---TEMPLATE--
-{% set offset = 3 %}
-
-{{ [1, -1, 4]|reduce((carry, item) => carry + item + offset, 10) }}
-
-{{ it|reduce((carry, item) => carry + item + offset, 10) }}
---DATA--
-return ['it' => new \ArrayIterator([1, -1, 4])]
---EXPECT--
-23
-
-23
diff --git a/vendor/twig/twig/tests/Fixtures/filters/replace.test b/vendor/twig/twig/tests/Fixtures/filters/replace.test
deleted file mode 100644
index 1b9670a1..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/replace.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"replace" filter
---TEMPLATE--
-{{ "I liké %this% and %that%."|replace({'%this%': "foo", '%that%': "bar"}) }}
-{{ 'I like single replace operation only %that%'|replace({'%that%' : '%that%1'}) }}
-{{ 'I like %this% and %that%.'|replace(traversable) }}
---DATA--
-return ['traversable' => new \ArrayObject(['%this%' => 'foo', '%that%' => 'bar'])]
---EXPECT--
-I liké foo and bar.
-I like single replace operation only %that%1
-I like foo and bar.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test b/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test
deleted file mode 100644
index ba6fea41..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/replace_invalid_arg.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Exception for invalid argument type in replace call
---TEMPLATE--
-{{ 'test %foo%'|replace(stdClass) }}
---DATA--
-return ['stdClass' => new \stdClass()]
---EXCEPTION--
-Twig\Error\RuntimeError: The "replace" filter expects an array or "Traversable" as replace values, got "stdClass" in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/filters/reverse.test b/vendor/twig/twig/tests/Fixtures/filters/reverse.test
deleted file mode 100644
index 904e5839..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/reverse.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"reverse" filter
---TEMPLATE--
-{{ [1, 2, 3, 4]|reverse|join('') }}
-{{ '1234évènement'|reverse }}
-{{ arr|reverse|join('') }}
-{{ {'a': 'c', 'b': 'a'}|reverse()|join(',') }}
-{{ {'a': 'c', 'b': 'a'}|reverse(preserveKeys=true)|join(glue=',') }}
-{{ {'a': 'c', 'b': 'a'}|reverse(preserve_keys=true)|join(glue=',') }}
---DATA--
-return ['arr' => new \ArrayObject([1, 2, 3, 4])]
---EXPECT--
-4321
-tnemenèvé4321
-4321
-a,c
-a,c
-a,c
diff --git a/vendor/twig/twig/tests/Fixtures/filters/round.test b/vendor/twig/twig/tests/Fixtures/filters/round.test
deleted file mode 100644
index 70923754..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/round.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"round" filter
---TEMPLATE--
-{{ 2.7|round }}
-{{ 2.1|round }}
-{{ 2.1234|round(3, 'floor') }}
-{{ 2.1|round(0, 'ceil') }}
-
-{{ 21.3|round(-1)}}
-{{ 21.3|round(-1, 'ceil')}}
-{{ 21.3|round(-1, 'floor')}}
---DATA--
-return []
---EXPECT--
-3
-2
-2.123
-3
-
-20
-30
-20
diff --git a/vendor/twig/twig/tests/Fixtures/filters/slice.test b/vendor/twig/twig/tests/Fixtures/filters/slice.test
deleted file mode 100644
index fc975d7b..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/slice.test
+++ /dev/null
@@ -1,54 +0,0 @@
---TEST--
-"slice" filter
---TEMPLATE--
-{{ [1, 2, 3, 4][1:2]|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}[1:2]|join('') }}
-{{ [1, 2, 3, 4][start:length]|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2)|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2)|keys|join('') }}
-{{ [1, 2, 3, 4]|slice(1, 2, true)|keys|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|join('') }}
-{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|keys|join('') }}
-{{ '1234'|slice(1, 2) }}
-{{ '1234'[1:2] }}
-{{ arr|slice(1, 2)|join('') }}
-{{ arr[1:2]|join('') }}
-{{ arr[4:1]|join('') }}
-{{ arr[3:2]|join('') }}
-
-{{ [1, 2, 3, 4]|slice(1)|join('') }}
-{{ [1, 2, 3, 4][1:]|join('') }}
-{{ '1234'|slice(1) }}
-{{ '1234'[1:] }}
-{{ '1234'[:1] }}
-
-{{ arr|slice(3)|join('') }}
-{{ arr[2:]|join('') }}
-{{ xml|slice(1)|join('')}}
---DATA--
-return ['start' => 1, 'length' => 2, 'arr' => new \ArrayObject([1, 2, 3, 4]), 'xml' => new \SimpleXMLElement('<items><item>1</item><item>2</item></items>')]
---EXPECT--
-23
-23
-23
-23
-01
-12
-23
-bc
-23
-23
-23
-23
-
-4
-
-234
-234
-234
-234
-1
-
-4
-34
-2
diff --git a/vendor/twig/twig/tests/Fixtures/filters/sort.test b/vendor/twig/twig/tests/Fixtures/filters/sort.test
deleted file mode 100644
index c3b2c70d..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/sort.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"sort" filter
---TEMPLATE--
-{{ array1|sort|join }}
-{{ array2|sort|join }}
-{{ traversable|sort|join }}
---DATA--
-return ['array1' => [4, 1], 'array2' => ['foo', 'bar'], 'traversable' => new \ArrayObject([0 => 3, 1 => 2, 2 => 1])]
---EXPECT--
-14
-barfoo
-123
diff --git a/vendor/twig/twig/tests/Fixtures/filters/spaceless.test b/vendor/twig/twig/tests/Fixtures/filters/spaceless.test
deleted file mode 100644
index eadc1d49..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/spaceless.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"spaceless" filter
---TEMPLATE--
-{{ "    <div>   <div>   foo   </div>   </div>"|spaceless }}
---DATA--
-return []
---EXPECT--
-<div><div>   foo   </div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/filters/special_chars.test b/vendor/twig/twig/tests/Fixtures/filters/special_chars.test
deleted file mode 100644
index 9869ec91..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom filter
---TEMPLATE--
-{{ 'foo'|§ }}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/filters/split.test b/vendor/twig/twig/tests/Fixtures/filters/split.test
deleted file mode 100644
index 2bd46afa..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/split.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"split" filter
---TEMPLATE--
-{{ "one,two,three,four,five"|split(',')|join('-') }}
-{{ foo|split(',')|join('-') }}
-{{ foo|split(',', 3)|join('-') }}
-{{ baz|split('')|join('-') }}
-{{ baz|split('', 1)|join('-') }}
-{{ baz|split('', 2)|join('-') }}
-{{ foo|split(',', -2)|join('-') }}
-{{ "hello0world"|split('0')|join('-') }}
---DATA--
-return ['foo' => "one,two,three,four,five", 'baz' => '12345',]
---EXPECT--
-one-two-three-four-five
-one-two-three-four-five
-one-two-three,four,five
-1-2-3-4-5
-1-2-3-4-5
-12-34-5
-one-two-three
-hello-world
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test b/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test
deleted file mode 100644
index bf52e6df..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/split_utf8.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"split" filter
---CONDITION--
-function_exists('mb_get_info')
---TEMPLATE--
-{{ "é"|split('', 10)|join('-') }}
-{{ foo|split(',')|join('-') }}
-{{ foo|split(',', 1)|join('-') }}
-{{ foo|split(',', 2)|join('-') }}
-{{ foo|split(',', 3)|join('-') }}
-{{ baz|split('')|join('-') }}
-{{ baz|split('', 1)|join('-') }}
-{{ baz|split('', 2)|join('-') }}
---DATA--
-return ['foo' => 'Ä,é,Äほ', 'baz' => 'éÄßごa',]
---EXPECT--
-é
-Ä-é-Äほ
-Ä,é,Äほ
-Ä-é,Äほ
-Ä-é-Äほ
-é-Ä-ß-ご-a
-é-Ä-ß-ご-a
-éÄ-ßご-a
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/filters/static_calls.test b/vendor/twig/twig/tests/Fixtures/filters/static_calls.test
deleted file mode 100644
index 1626db0c..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/static_calls.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Filters as static method calls
---TEMPLATE--
-{{ 'foo'|static_call_string }}
-{{ 'foo'|static_call_array }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-*foo*
-*foo*
diff --git a/vendor/twig/twig/tests/Fixtures/filters/trim.test b/vendor/twig/twig/tests/Fixtures/filters/trim.test
deleted file mode 100644
index 432989ff..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/trim.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"trim" filter
---TEMPLATE--
-{{ "  I like Twig.  "|trim }}
-{{ text|trim }}
-{{ "  foo/"|trim("/") }}
-{{ "xxxI like Twig.xxx"|trim(character_mask="x", side="left") }}
-{{ "xxxI like Twig.xxx"|trim(side="right", character_mask="x") }}
-{{ "xxxI like Twig.xxx"|trim("x", "right") }}
-{{ "/  foo/"|trim("/", "left") }}
-{{ "/  foo/"|trim(character_mask="/", side="left") }}
-{{ "  do nothing.  "|trim("", "right") }}
---DATA--
-return ['text' => "  If you have some <strong>HTML</strong> it will be escaped.  "]
---EXPECT--
-I like Twig.
-If you have some &lt;strong&gt;HTML&lt;/strong&gt; it will be escaped.
-  foo
-I like Twig.xxx
-xxxI like Twig.
-xxxI like Twig.
-  foo/
-  foo/
-  do nothing.  
diff --git a/vendor/twig/twig/tests/Fixtures/filters/urlencode.test b/vendor/twig/twig/tests/Fixtures/filters/urlencode.test
deleted file mode 100644
index 66a682dd..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/urlencode.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"url_encode" filter
---CONDITION--
-defined('PHP_QUERY_RFC3986')
---TEMPLATE--
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }}
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }}
-{{ {}|url_encode|default("default") }}
-{{ 'spéßi%le%c0d@dspa ce'|url_encode }}
---DATA--
-return []
---EXPECT--
-foo=bar&amp;number=3&amp;sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&amp;spa%20ce=
-foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=
-default
-sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce
diff --git a/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test b/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test
deleted file mode 100644
index 38d72649..00000000
--- a/vendor/twig/twig/tests/Fixtures/filters/urlencode_deprecated.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"url_encode" filter for PHP < 5.4
---CONDITION--
-defined('PHP_QUERY_RFC3986')
---TEMPLATE--
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }}
-{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }}
-{{ {}|url_encode|default("default") }}
-{{ 'spéßi%le%c0d@dspa ce'|url_encode }}
---DATA--
-return []
---EXPECT--
-foo=bar&amp;number=3&amp;sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&amp;spa%20ce=
-foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=
-default
-sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce
diff --git a/vendor/twig/twig/tests/Fixtures/functions/attribute.test b/vendor/twig/twig/tests/Fixtures/functions/attribute.test
deleted file mode 100644
index 4499ad4b..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/attribute.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"attribute" function
---TEMPLATE--
-{{ attribute(obj, method) }}
-{{ attribute(array, item) }}
-{{ attribute(obj, "bar", ["a", "b"]) }}
-{{ attribute(obj, "bar", arguments) }}
-{{ attribute(obj, method) is defined ? 'ok' : 'ko' }}
-{{ attribute(obj, nonmethod) is defined ? 'ok' : 'ko' }}
---DATA--
-return ['obj' => new Twig\Tests\TwigTestFoo(), 'method' => 'foo', 'array' => ['foo' => 'bar'], 'item' => 'foo', 'nonmethod' => 'xxx', 'arguments' => ['a', 'b']]
---EXPECT--
-foo
-bar
-bar_a-b
-bar_a-b
-ok
-ko
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block.test b/vendor/twig/twig/tests/Fixtures/functions/block.test
deleted file mode 100644
index 1a4fd549..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function
---TEMPLATE--
-{% extends 'base.twig' %}
-{% block bar %}BAR{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}{{ block('bar') }}{% endblock %}
-{% block bar %}BAR_BASE{% endblock %}
---DATA--
-return []
---EXPECT--
-BARBAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test b/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test
deleted file mode 100644
index 37cb7a48..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block_with_template.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"block" function with a template argument
---TEMPLATE--
-{{ block('foo', 'included.twig') }}
-{{ block('foo', included_loaded) }}
-{{ block('foo', included_loaded_internal) }}
-{% set output = block('foo', 'included.twig') %}
-{{ output }}
-{% block foo %}NOT FOO{% endblock %}
---TEMPLATE(included.twig)--
-{% block foo %}FOO{% endblock %}
---DATA--
-return [
-    'included_loaded' => $twig->load('included.twig'),
-    'included_loaded_internal' => $twig->load('included.twig'),
-]
---EXPECT--
-FOO
-FOO
-FOO
-FOO
-NOT FOO
diff --git a/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test b/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test
deleted file mode 100644
index 236df945..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/block_without_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function without arguments
---TEMPLATE--
-{% extends 'base.twig' %}
-{% block bar %}BAR{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}{{ block() }}{% endblock %}
-{% block bar %}BAR_BASE{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The "block" function takes one argument (the block name) in "base.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/constant.test b/vendor/twig/twig/tests/Fixtures/functions/constant.test
deleted file mode 100644
index fd6dd061..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/constant.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"constant" function
---TEMPLATE--
-{{ constant('DATE_W3C') == expect ? 'true' : 'false' }}
-{{ constant('ARRAY_AS_PROPS', object) }}
---DATA--
-return ['expect' => DATE_W3C, 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-true
-2
diff --git a/vendor/twig/twig/tests/Fixtures/functions/cycle.test b/vendor/twig/twig/tests/Fixtures/functions/cycle.test
deleted file mode 100644
index 0ac6dccd..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/cycle.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"cycle" function
---TEMPLATE--
-{% for i in 0..6 %}
-{{ cycle(array1, i) }}-{{ cycle(array2, i) }}
-{% endfor %}
---DATA--
-return ['array1' => ['odd', 'even'], 'array2' => ['apple', 'orange', 'citrus']]
---EXPECT--
-odd-apple
-even-orange
-odd-citrus
-even-apple
-odd-orange
-even-citrus
-odd-apple
diff --git a/vendor/twig/twig/tests/Fixtures/functions/date.test b/vendor/twig/twig/tests/Fixtures/functions/date.test
deleted file mode 100644
index c879da3c..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/date.test
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-"date" function
---TEMPLATE--
-{{ date().format('r') == date('now').format('r') ? 'OK' : 'KO' }}
-{{ date(date1) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date2) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date3) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date4) == date('2010-10-04 13:45') ? 'OK' : 'KO' }}
-{{ date(date5) == date('1964-01-02 03:04') ? 'OK' : 'KO' }}
-{{ date() > date('-1day') ? 'OK' : 'KO' }}
---DATA--
-date_default_timezone_set('UTC');
-return [
-    'date1' => mktime(13, 45, 0, 10, 4, 2010),
-    'date2' => new \DateTime('2010-10-04 13:45'),
-    'date3' => '2010-10-04 13:45',
-    'date4' => 1286199900, // \DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new \DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT
-    'date5' => -189291360, // \DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new \DateTimeZone('UTC'))->getTimestamp(),
-]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test b/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test
deleted file mode 100644
index 11f60ee8..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/date_namedargs.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"date" function
---TEMPLATE--
-{{ date(date, "America/New_York")|date('d/m/Y H:i:s P', false) }}
-{{ date(timezone="America/New_York", date=date)|date('d/m/Y H:i:s P', false) }}
---DATA--
-date_default_timezone_set('UTC');
-return ['date' => mktime(13, 45, 0, 10, 4, 2010)]
---EXPECT--
-04/10/2010 09:45:00 -04:00
-04/10/2010 09:45:00 -04:00
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dump.test b/vendor/twig/twig/tests/Fixtures/functions/dump.test
deleted file mode 100644
index 691a3abe..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dump.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"dump" function
---CONDITION--
-!extension_loaded('xdebug')
---TEMPLATE--
-{{ dump('foo') }}
-{{ dump('foo', 'bar') }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---CONFIG--
-return ['debug' => true, 'autoescape' => false]
---EXPECT--
-string(3) "foo"
-
-string(3) "foo"
-string(3) "bar"
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dump_array.test b/vendor/twig/twig/tests/Fixtures/functions/dump_array.test
deleted file mode 100644
index 5fd9383c..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dump_array.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"dump" function, xdebug is not loaded or xdebug <2.2-dev is loaded
---CONDITION--
-!extension_loaded('xdebug') || (($r = new \ReflectionExtension('xdebug')) && version_compare($r->getVersion(), '2.2-dev', '<'))
---TEMPLATE--
-{{ dump() }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---CONFIG--
-return ['debug' => true, 'autoescape' => false]
---EXPECT--
-array(3) {
-  ["foo"]=>
-  string(3) "foo"
-  ["bar"]=>
-  string(3) "bar"
-  ["global"]=>
-  string(6) "global"
-}
diff --git a/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test b/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test
deleted file mode 100644
index c7b3539c..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/dynamic_function.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-dynamic function
---TEMPLATE--
-{{ foo_path('bar') }}
-{{ a_foo_b_bar('bar') }}
---DATA--
-return []
---EXPECT--
-foo/bar
-a/b/bar
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test b/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test
deleted file mode 100644
index c9ce8123..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/assignment.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{% set tmp = include("foo.twig") %}
-
-FOO{{ tmp }}BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-FOOBARBAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test b/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test
deleted file mode 100644
index a3666261..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/autoescaping.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function is safe for auto-escaping
---TEMPLATE--
-{{ include("foo.twig") }}
---TEMPLATE(foo.twig)--
-<p>Test</p>
---DATA--
-return []
---EXPECT--
-<p>Test</p>
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/basic.test b/vendor/twig/twig/tests/Fixtures/functions/include/basic.test
deleted file mode 100644
index f90983c0..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/basic.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-FOO
-{{ include("foo.twig") }}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-
-FOOBAR
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/expression.test b/vendor/twig/twig/tests/Fixtures/functions/include/expression.test
deleted file mode 100644
index c6d3d1c5..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/expression.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"include" function allows expressions for the template to include
---TEMPLATE--
-FOO
-{{ include(foo) }}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-FOOBAR
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test
deleted file mode 100644
index c05b43e1..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(["foo.twig", "bar.twig"], ignore_missing = true) }}
-{{ include("foo.twig", ignore_missing = true) }}
-{{ include("foo.twig", ignore_missing = true, variables = {}) }}
-{{ include("foo.twig", ignore_missing = true, variables = {}, with_context = true) }}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test b/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test
deleted file mode 100644
index fc2d211a..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/ignore_missing_exists.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include("included.twig", ignore_missing = true) }}
-NOT DISPLAYED
---TEMPLATE(included.twig)--
-{{ include("DOES NOT EXIST") }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "included.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test b/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test
deleted file mode 100644
index 810ae824..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/include_missing_extends.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(['bad.twig', 'good.twig'], ignore_missing = true) }}
-NOT DISPLAYED
---TEMPLATE(bad.twig)--
-{% extends 'DOES NOT EXIST' %}
---TEMPLATE(good.twig)--
-NOT DISPLAYED
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "bad.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/missing.test
deleted file mode 100644
index 1d50f7ac..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/missing.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include("foo.twig") }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test b/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test
deleted file mode 100644
index 9ae8c9ee..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/missing_nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}
-    {{ include("foo.twig") }}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "base.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test
deleted file mode 100644
index ebfdb1eb..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("foo.twig", sandboxed = true) }}
---TEMPLATE(foo.twig)--
-
-
-{{ foo|e }}
-{{ foo|e }}
---DATA--
-return []
---EXCEPTION--
-Twig\Sandbox\SecurityNotAllowedFilterError: Filter "e" is not allowed in "foo.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test
deleted file mode 100644
index 1206b67f..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("foo.twig", sandboxed = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(foo.twig)--
-foo
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return ['foo' => 'bar<br />']
---EXPECT--
-foo
-
-
-bar&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test b/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
deleted file mode 100644
index c5be0088..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag sandboxed
---TEMPLATE--
-{{ include("unknown.twig", sandboxed = true, ignore_missing = true) }}
-{{ include("bar.twig") }}
---TEMPLATE(bar.twig)--
-{{ foo|e }}
---DATA--
-return ['foo' => 'bar<br />']
---EXPECT--
-
-
-bar&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test b/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test
deleted file mode 100644
index 4c8b4508..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/template_instance.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" function accepts Twig_Template instance
---TEMPLATE--
-{{ include(foo) }} FOO
---TEMPLATE(foo.twig)--
-BAR
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BAR FOO
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test b/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test
deleted file mode 100644
index 21e5bb2e..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/templates_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" function
---TEMPLATE--
-{{ include(["foo.twig", "bar.twig"]) }}
-{{- include(["bar.twig", "foo.twig"]) }}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test b/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test
deleted file mode 100644
index 46ac8c79..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/with_context.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" function accept variables and with_context
---TEMPLATE--
-{{ include("foo.twig") }}
-{{- include("foo.twig", with_context = false) }}
-{{- include("foo.twig", {'foo1': 'bar'}) }}
-{{- include("foo.twig", {'foo1': 'bar'}, with_context = false) }}
---TEMPLATE(foo.twig)--
-{% for k, v in _context %}{{ k }},{% endfor %}
---DATA--
-return ['foo' => 'bar']
---EXPECT--
-foo,global,_parent,
-global,_parent,
-foo,global,foo1,_parent,
-foo1,global,_parent,
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test b/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test
deleted file mode 100644
index 0ed98fed..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include/with_variables.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" function accept variables
---TEMPLATE--
-{{ include("foo.twig", {'foo': 'bar'}) }}
-{{- include("foo.twig", vars) }}
---TEMPLATE(foo.twig)--
-{{ foo }}
---DATA--
-return ['vars' => ['foo' => 'bar']]
---EXPECT--
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test b/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test
deleted file mode 100644
index 8d9ba60c..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/include_template_from_string.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"template_from_string" function works in an "include"
---TEMPLATE--
-{% set embed = '{% embed "embed.twig" %}{% endembed %}' %}
-{{ include(template_from_string(embed)) }}
---TEMPLATE(embed.twig)--
-Cool
---DATA--
-return []
---EXPECT--
-Cool
diff --git a/vendor/twig/twig/tests/Fixtures/functions/magic_call.test b/vendor/twig/twig/tests/Fixtures/functions/magic_call.test
deleted file mode 100644
index 4dd5e270..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/magic_call.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-__call calls
---TEMPLATE--
-{{ 'foo'|magic_call }}
---DATA--
-return []
---EXPECT--
-magic_foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test b/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test
deleted file mode 100644
index a7c65bf6..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/magic_call53.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-__staticCall calls
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-{{ 'foo'|magic_call_string }}
-{{ 'foo'|magic_call_array }}
---DATA--
-return []
---EXPECT--
-static_magic_foo
-static_magic_foo
diff --git a/vendor/twig/twig/tests/Fixtures/functions/max.test b/vendor/twig/twig/tests/Fixtures/functions/max.test
deleted file mode 100644
index 6d2de000..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/max.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"max" function
---TEMPLATE--
-{{ max([2, 1, 3, 5, 4]) }}
-{{ max(2, 1, 3, 5, 4) }}
-{{ max({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
---DATA--
-return []
---EXPECT--
-5
-5
-two
diff --git a/vendor/twig/twig/tests/Fixtures/functions/min.test b/vendor/twig/twig/tests/Fixtures/functions/min.test
deleted file mode 100644
index 1fe5446b..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/min.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"min" function
---TEMPLATE--
-{{ min(2, 1, 3, 5, 4) }}
-{{ min([2, 1, 3, 5, 4]) }}
-{{ min({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
---DATA--
-return []
---EXPECT--
-1
-1
-five
diff --git a/vendor/twig/twig/tests/Fixtures/functions/range.test b/vendor/twig/twig/tests/Fixtures/functions/range.test
deleted file mode 100644
index 2927333b..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/range.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"range" function
---TEMPLATE--
-{{ range(low=0+1, high=10+0, step=2)|join(',') }}
---DATA--
-return []
---EXPECT--
-1,3,5,7,9
diff --git a/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test b/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test
deleted file mode 100644
index 1c3fffb5..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/recursive_block_with_inheritance.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"block" function recursively called in a parent template
---TEMPLATE--
-{% extends "ordered_menu.twig" %}
-{% block label %}"{{ parent() }}"{% endblock %}
-{% block list %}{% set class = 'b' %}{{ parent() }}{% endblock %}
---TEMPLATE(ordered_menu.twig)--
-{% extends "menu.twig" %}
-{% block list %}{% set class = class|default('a') %}<ol class="{{ class }}">{{ block('children') }}</ol>{% endblock %}
---TEMPLATE(menu.twig)--
-{% extends "base.twig" %}
-{% block list %}<ul>{{ block('children') }}</ul>{% endblock %}
-{% block children %}{% set currentItem = item %}{% for item in currentItem %}{{ block('item') }}{% endfor %}{% set item = currentItem %}{% endblock %}
-{% block item %}<li>{% if item is not iterable %}{{ block('label') }}{% else %}{{ block('list') }}{% endif %}</li>{% endblock %}
-{% block label %}{{ item }}{% endblock %}
---TEMPLATE(base.twig)--
-{{ block('list') }}
---DATA--
-return ['item' => ['1', '2', ['3.1', ['3.2.1', '3.2.2'], '3.4']]]
---EXPECT--
-<ol class="b"><li>"1"</li><li>"2"</li><li><ol class="b"><li>"3.1"</li><li><ol class="b"><li>"3.2.1"</li><li>"3.2.2"</li></ol></li><li>"3.4"</li></ol></li></ol>
diff --git a/vendor/twig/twig/tests/Fixtures/functions/source.test b/vendor/twig/twig/tests/Fixtures/functions/source.test
deleted file mode 100644
index b691ce7b..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/source.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"source" function
---TEMPLATE--
-FOO
-{{ source("foo.twig") }}
-
-BAR
---TEMPLATE(foo.twig)--
-{{ foo }}<br />
---DATA--
-return []
---EXPECT--
-FOO
-
-{{ foo }}<br />
-
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/functions/special_chars.test b/vendor/twig/twig/tests/Fixtures/functions/special_chars.test
deleted file mode 100644
index 9c9e2494..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom function
---TEMPLATE--
-{{ §('foo') }}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/functions/static_calls.test b/vendor/twig/twig/tests/Fixtures/functions/static_calls.test
deleted file mode 100644
index dd13abb0..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/static_calls.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Functions as static method calls
---TEMPLATE--
-{{ static_call_string('foo') }}
-{{ static_call_array('foo') }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-*foo*
-*foo*
diff --git a/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test b/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test
deleted file mode 100644
index 33b0e40d..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/template_from_string.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"template_from_string" function
---TEMPLATE--
-{% include template_from_string(template) %}
-
-{% include template_from_string("Hello {{ name }}") %}
-{% include template_from_string('{% extends "parent.twig" %}{% block content %}Hello {{ name }}{% endblock %}') %}
---TEMPLATE(parent.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['name' => 'Fabien', 'template' => "Hello {{ name }}"]
---EXPECT--
-Hello Fabien
-Hello Fabien
-Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test b/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test
deleted file mode 100644
index 900d238b..00000000
--- a/vendor/twig/twig/tests/Fixtures/functions/template_from_string_error.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"template_from_string" function
---TEMPLATE--
-{% include template_from_string("{{ not a Twig template ", "foo.twig") %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unclosed "variable" in "foo.twig (string template 4900163d56b1af4b704c6b0afee7f98ba53418ce7a93d37a3af1882735baf9cd)" at line 1.
diff --git a/vendor/twig/twig/tests/Fixtures/macros/default_values.test b/vendor/twig/twig/tests/Fixtures/macros/default_values.test
deleted file mode 100644
index 18bba524..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/default_values.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% from _self import test %}
-
-{% macro test(a, b = 'bar') -%}
-{{ a }}{{ b }}
-{%- endmacro %}
-
-{{ test('foo') }}
-{{ test('bar', 'foo') }}
---DATA--
-return []
---EXPECT--
-foobar
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test b/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test
deleted file mode 100644
index 4577286d..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/nested_calls.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% import _self as macros %}
-
-{% macro foo(data) %}
-    {{ data }}
-{% endmacro %}
-
-{% macro bar() %}
-    <br />
-{% endmacro %}
-
-{{ macros.foo(macros.bar()) }}
---DATA--
-return []
---EXPECT--
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test b/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test
deleted file mode 100644
index 05dd9213..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/reserved_variables.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% from _self import test %}
-
-{% macro test(this) -%}
-    {{ this }}
-{%- endmacro %}
-
-{{ test(this) }}
---DATA--
-return ['this' => 'foo']
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/macros/simple.test b/vendor/twig/twig/tests/Fixtures/macros/simple.test
deleted file mode 100644
index 8fc6b477..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/simple.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-macro
---TEMPLATE--
-{% import _self as test %}
-{% from _self import test %}
-
-{% macro test(a, b) -%}
-    {{ a|default('a') }}<br />
-    {{- b|default('b') }}<br />
-{%- endmacro %}
-
-{{ test.test() }}
-{{ test() }}
-{{ test.test(1, "c") }}
-{{ test(1, "c") }}
---DATA--
-return []
---EXPECT--
-a<br />b<br />
-a<br />b<br />
-1<br />c<br />
-1<br />c<br />
diff --git a/vendor/twig/twig/tests/Fixtures/macros/varargs.test b/vendor/twig/twig/tests/Fixtures/macros/varargs.test
deleted file mode 100644
index dd4b5c9f..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/varargs.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-macro with arbitrary arguments
---TEMPLATE--
-{% from _self import test1, test2 %}
-
-{% macro test1(var) %}
-    {{- var }}: {{ varargs|join(", ") }}
-{% endmacro %}
-
-{% macro test2() %}
-    {{- varargs|join(", ") }}
-{% endmacro %}
-
-{{ test1("foo", "bar", "foobar") }}
-{{ test2("foo", "bar", "foobar") }}
---DATA--
-return []
---EXPECT--
-foo: bar, foobar
-
-foo, bar, foobar
diff --git a/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test b/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test
deleted file mode 100644
index 1ad368bf..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/varargs_argument.test
+++ /dev/null
@@ -1,7 +0,0 @@
---TEST--
-macro with varargs argument
---TEMPLATE--
-{% macro test(varargs) %}
-{% endmacro %}
---EXCEPTION--
-Twig\Error\SyntaxError: The argument "varargs" in macro "test" cannot be defined because the variable "varargs" is reserved for arbitrary arguments in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/macros/with_filters.test b/vendor/twig/twig/tests/Fixtures/macros/with_filters.test
deleted file mode 100644
index 96064ba0..00000000
--- a/vendor/twig/twig/tests/Fixtures/macros/with_filters.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-macro with a filter
---TEMPLATE--
-{% import _self as test %}
-
-{% macro test() %}
-    {% filter escape %}foo<br />{% endfilter %}
-{% endmacro %}
-
-{{ test.test() }}
---DATA--
-return []
---EXPECT--
-foo&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test b/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test
deleted file mode 100644
index df074707..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/block_names_unicity.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Block names are unique per template
---TEMPLATE--
-{% extends 'layout' %}
-{% block content -%}
-    {% filter title -%}
-        second
-    {% endfilter %}
-{% endblock %}
---TEMPLATE(layout)--
-{% filter title -%}
-    first
-{% endfilter %}
-{% block content %}{% endblock %}
---DATA--
-return []
---EXPECT--
-First
-Second
diff --git a/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test b/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test
deleted file mode 100644
index 6426d2c1..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/combined_debug_info.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-Exception with bad line number
---TEMPLATE--
-{% block content %}
-    {{ foo }}
-    {{ include("foo") }}
-{% endblock %}
-index
---TEMPLATE(foo)--
-foo
-{{ foo.bar }}
---DATA--
-return ['foo' => 'foo']
---EXCEPTION--
-Twig\Error\RuntimeError: Impossible to access an attribute ("bar") on a string variable ("foo") in "foo" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/regression/empty_token.test b/vendor/twig/twig/tests/Fixtures/regression/empty_token.test
deleted file mode 100644
index 25bdc9e4..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/empty_token.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig outputs 0 nodes correctly
---TEMPLATE--
-{{ foo }}0{{ foo }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-foo0foo
diff --git a/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test b/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test
deleted file mode 100644
index e2ab950e..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/issue_1143.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-error in twig extension
---TEMPLATE--
-{{ object.region is not null ? object.regionChoices[object.region] }}
---DATA--
-class House
-{
-    const REGION_S = 1;
-    const REGION_P = 2;
-
-    public static $regionChoices = [self::REGION_S => 'house.region.s', self::REGION_P => 'house.region.p'];
-
-    public function getRegionChoices()
-    {
-        return self::$regionChoices;
-    }
-}
-
-$object = new House();
-$object->region = 1;
-return ['object' => $object]
---EXPECT--
-house.region.s
diff --git a/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test b/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test
deleted file mode 100644
index 96ca5517..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/multi_word_tests.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Twig allows multi-word tests without a custom node class
---TEMPLATE--
-{{ 'foo' is multi word ? 'yes' : 'no' }}
-{{ 'foo bar' is multi word ? 'yes' : 'no' }}
---DATA--
-return []
---EXPECT--
-no
-yes
diff --git a/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test b/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test
deleted file mode 100644
index b6e62c8d..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/simple_xml_element.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Twig is able to deal with SimpleXMLElement instances as variables
---CONDITION--
-version_compare(phpversion(), '5.3.0', '>=')
---TEMPLATE--
-Hello '{{ images.image.0.group }}'!
-{{ images.image.0.group.attributes.myattr }}
-{{ images.children().image.count() }}
-{% for image in images %}
-    - {{ image.group }}
-{% endfor %}
---DATA--
-return ['images' => new \SimpleXMLElement('<images><image><group myattr="example">foo</group></image><image><group>bar</group></image></images>')]
---EXPECT--
-Hello 'foo'!
-example
-2
-    - foo
-    - bar
diff --git a/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test b/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test
deleted file mode 100644
index 62fe8848..00000000
--- a/vendor/twig/twig/tests/Fixtures/regression/strings_like_numbers.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Twig does not confuse strings with integers in getAttribute()
---TEMPLATE--
-{{ hash['2e2'] }}
---DATA--
-return ['hash' => ['2e2' => 'works']]
---EXPECT--
-works
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test b/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test
deleted file mode 100644
index 4848ee02..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"apply" tag applies a filter on its children
---TEMPLATE--
-{% apply upper %}
-Some text with a {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-SOME TEXT WITH A VAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test b/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test
deleted file mode 100644
index 8a590b44..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/json_encode.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"apply" tag applies a filter on its children
---TEMPLATE--
-{% apply json_encode|raw %}test{% endapply %}
---DATA--
-return []
---EXPECT--
-"test"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test
deleted file mode 100644
index e16998a5..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/multiple.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"apply" tags accept multiple chained filters
---TEMPLATE--
-{% apply lower|title %}
-  {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'VAR']
---EXPECT--
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test b/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test
deleted file mode 100644
index b64a6914..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"apply" tags can be nested at will
---TEMPLATE--
-{% apply lower|title %}
-  {{ var }}
-  {% apply upper %}
-    {{ var }}
-  {% endapply %}
-  {{ var }}
-{% endapply %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-  Var
-      Var
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test b/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test
deleted file mode 100644
index a87ff911..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/scope.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"apply" tag does not create a new scope
---TEMPLATE--
-{% set foo = 'baz' %}
-{% apply spaceless %}
-    {% set foo = 'foo' %}
-    {% set bar = 'bar' %}
-{% endapply %}
-{{ 'foo' == foo ? 'OK ' ~ foo : 'KO' }}
-{{ 'bar' == bar ? 'OK ' ~ bar : 'KO' }}
---DATA--
-return []
---EXPECT--
-OK foo
-OK bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test b/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test
deleted file mode 100644
index 4453880b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/with_for_tag.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"apply" tag applies the filter on "for" tags
---TEMPLATE--
-{% apply upper %}
-{% for item in items %}
-{{ item }}
-{% endfor %}
-{% endapply %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A
-B
diff --git a/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test b/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test
deleted file mode 100644
index ca7a592c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/apply/with_if_tag.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"apply" tag applies the filter on "if" tags
---TEMPLATE--
-{% apply upper %}
-{% if items %}
-{{ items|join(', ') }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% else %}
-{{ items.1 }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% elseif items.1 %}
-{{ items.0 }}
-{% endif %}
-
-{% endapply %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A, B
-
-B
-
-A
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test
deleted file mode 100644
index 5979725e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/basic.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tag applies escaping on its children
---TEMPLATE--
-{% autoescape %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape 'html' %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape false %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape true %}
-{{ var }}<br />
-{% endautoescape %}
-{% autoescape false %}
-{{ var }}<br />
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;<br />
-&lt;br /&gt;<br />
-<br /><br />
-&lt;br /&gt;<br />
-<br /><br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test
deleted file mode 100644
index 292e1b41..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/blocks.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"autoescape" tag applies escaping on embedded blocks
---TEMPLATE--
-{% autoescape 'html' %}
-  {% block foo %}
-    {{ var }}
-  {% endblock %}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test
deleted file mode 100644
index 1724b487..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/double_escaping.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"autoescape" tag does not double-escape
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|escape }}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test
deleted file mode 100644
index 170e7074..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/functions.test
+++ /dev/null
@@ -1,83 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling functions
---TEMPLATE--
-
-autoescape false
-{% autoescape false %}
-
-safe_br
-{{ safe_br() }}
-
-unsafe_br
-{{ unsafe_br() }}
-
-{% endautoescape %}
-
-autoescape 'html'
-{% autoescape 'html' %}
-
-safe_br
-{{ safe_br() }}
-
-unsafe_br
-{{ unsafe_br() }}
-
-unsafe_br()|raw
-{{ (unsafe_br())|raw }}
-
-safe_br()|escape
-{{ (safe_br())|escape }}
-
-safe_br()|raw
-{{ (safe_br())|raw }}
-
-unsafe_br()|escape
-{{ (unsafe_br())|escape }}
-
-{% endautoescape %}
-
-autoescape js
-{% autoescape 'js' %}
-
-safe_br
-{{ safe_br() }}
-
-{% endautoescape %}
---DATA--
-return []
---EXPECT--
-
-autoescape false
-
-safe_br
-<br />
-
-unsafe_br
-<br />
-
-
-autoescape 'html'
-
-safe_br
-<br />
-
-unsafe_br
-&lt;br /&gt;
-
-unsafe_br()|raw
-<br />
-
-safe_br()|escape
-&lt;br /&gt;
-
-safe_br()|raw
-<br />
-
-unsafe_br()|escape
-&lt;br /&gt;
-
-
-autoescape js
-
-safe_br
-\u003Cbr\u0020\/\u003E
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test
deleted file mode 100644
index 3d8d4f8f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/literal.test
+++ /dev/null
@@ -1,87 +0,0 @@
---TEST--
-"autoescape" tag does not apply escaping on literals
---TEMPLATE--
-{% autoescape 'html' %}
-
-1. Simple literal
-{{ "<br />" }}
-
-2. Conditional expression with only literals
-{{ true ? "<br />" : "<br>" }}
-
-3. Conditional expression with a variable
-{{ true ? "<br />" : someVar }}
-{{ false ? "<br />" : someVar }}
-{{ true ? someVar : "<br />" }}
-{{ false ? someVar : "<br />" }}
-
-4. Nested conditionals with only literals
-{{ true ? (true ? "<br />" : "<br>") : "\n" }}
-
-5. Nested conditionals with a variable
-{{ true ? (true ? "<br />" : someVar) : "\n" }}
-{{ true ? (false ? "<br />" : someVar) : "\n" }}
-{{ true ? (true ? someVar : "<br />") : "\n" }}
-{{ true ? (false ? someVar : "<br />") : "\n" }}
-{{ false ? "\n" : (true ? someVar : "<br />") }}
-{{ false ? "\n" : (false ? someVar : "<br />") }}
-
-6. Nested conditionals with a variable marked safe
-{{ true ? (true ? "<br />" : someVar|raw) : "\n" }}
-{{ true ? (false ? "<br />" : someVar|raw) : "\n" }}
-{{ true ? (true ? someVar|raw : "<br />") : "\n" }}
-{{ true ? (false ? someVar|raw : "<br />") : "\n" }}
-{{ false ? "\n" : (true ? someVar|raw : "<br />") }}
-{{ false ? "\n" : (false ? someVar|raw : "<br />") }}
-
-7. Without then clause
-{{ "<br />" ?: someVar }}
-{{ someFalseVar ?: "<br />" }}
-
-8. NullCoalesce
-{{ aaaa ?? "<br />" }}
-{{ "<br />" ?? someVar }}
-
-{% endautoescape %}
---DATA--
-return ['someVar' => '<br />', 'someFalseVar' => false]
---EXPECT--
-
-1. Simple literal
-<br />
-
-2. Conditional expression with only literals
-<br />
-
-3. Conditional expression with a variable
-<br />
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
-
-4. Nested conditionals with only literals
-<br />
-
-5. Nested conditionals with a variable
-<br />
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
-&lt;br /&gt;
-<br />
-
-6. Nested conditionals with a variable marked safe
-<br />
-<br />
-<br />
-<br />
-<br />
-<br />
-
-7. Without then clause
-<br />
-<br />
-
-8. NullCoalesce
-<br />
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test
deleted file mode 100644
index 0d88c7e3..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/nested.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tags can be nested at will
---TEMPLATE--
-{{ var }}
-{% autoescape 'html' %}
-  {{ var }}
-  {% autoescape false %}
-    {{ var }}
-    {% autoescape 'html' %}
-      {{ var }}
-    {% endautoescape %}
-    {{ var }}
-  {% endautoescape %}
-  {{ var }}
-{% endautoescape %}
-{{ var }}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-&lt;br /&gt;
-  &lt;br /&gt;
-      <br />
-          &lt;br /&gt;
-        <br />
-    &lt;br /&gt;
-&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test
deleted file mode 100644
index 9d959b22..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/objects.test
+++ /dev/null
@@ -1,26 +0,0 @@
---TEST--
-"autoescape" tag applies escaping to object method calls
---TEMPLATE--
-{% autoescape 'html' %}
-{{ user.name }}
-{{ user.name|lower }}
-{{ user }}
-{% endautoescape %}
---DATA--
-class UserForAutoEscapeTest
-{
-  public function getName()
-  {
-    return 'Fabien<br />';
-  }
-
-  public function __toString()
-  {
-     return 'Fabien<br />';
-  }
-}
-return ['user' => new UserForAutoEscapeTest()]
---EXPECT--
-Fabien&lt;br /&gt;
-fabien&lt;br /&gt;
-Fabien&lt;br /&gt;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test
deleted file mode 100644
index 187327c8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/raw.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"autoescape" tag does not escape when raw is used as a filter
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|raw }}
-{% endautoescape %}
---DATA--
-return ['var' => '<br />']
---EXPECT--
-<br />
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test
deleted file mode 100644
index 289f2b17..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.legacy.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"autoescape" tag accepts an escaping strategy
---TEMPLATE--
-{% autoescape true js %}{{ var }}{% endautoescape %}
-
-{% autoescape true html %}{{ var }}{% endautoescape %}
---DATA--
-return ['var' => '<br />"']
---EXPECT--
-\u003Cbr\u0020\/\u003E\u0022
-&lt;br /&gt;&quot;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test
deleted file mode 100644
index 9a0137ee..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/strategy.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"autoescape" tag accepts an escaping strategy
---TEMPLATE--
-{% autoescape 'js' %}{{ var }}{% endautoescape %}
-
-{% autoescape 'html' %}{{ var }}{% endautoescape %}
---DATA--
-return ['var' => '<br />"']
---EXPECT--
-\u003Cbr\u0020\/\u003E\u0022
-&lt;br /&gt;&quot;
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test
deleted file mode 100644
index 9ae8d7bf..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/type.test
+++ /dev/null
@@ -1,69 +0,0 @@
---TEST--
-escape types
---TEMPLATE--
-
-1. autoescape 'html' |escape('js')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-2. autoescape 'html' |escape('js')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-3. autoescape 'js' |escape('js')
-
-{% autoescape 'js' %}
-<a onclick="alert(&quot;{{ msg|escape('js') }}&quot;)"></a>
-{% endautoescape %}
-
-4. no escape
-
-{% autoescape false %}
-<a onclick="alert(&quot;{{ msg }}&quot;)"></a>
-{% endautoescape %}
-
-5. |escape('js')|escape('html')
-
-{% autoescape false %}
-<a onclick="alert(&quot;{{ msg|escape('js')|escape('html') }}&quot;)"></a>
-{% endautoescape %}
-
-6. autoescape 'html' |escape('js')|escape('html')
-
-{% autoescape 'html' %}
-<a onclick="alert(&quot;{{ msg|escape('js')|escape('html') }}&quot;)"></a>
-{% endautoescape %}
-
---DATA--
-return ['msg' => "<>\n'\""]
---EXPECT--
-
-1. autoescape 'html' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-2. autoescape 'html' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-3. autoescape 'js' |escape('js')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-4. no escape
-
-<a onclick="alert(&quot;<>
-'"&quot;)"></a>
-
-5. |escape('js')|escape('html')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
-6. autoescape 'html' |escape('js')|escape('html')
-
-<a onclick="alert(&quot;\u003C\u003E\n\u0027\u0022&quot;)"></a>
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test
deleted file mode 100644
index f97105bb..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters.test
+++ /dev/null
@@ -1,131 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling filters
---TEMPLATE--
-{% autoescape 'html' %}
-
-(escape_and_nl2br is an escaper filter)
-
-1. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped )
-{{ var|escape_and_nl2br }}
-
-2. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped, |raw is redundant )
-{{ var|escape_and_nl2br|raw }}
-
-3. Explicit escape
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is explicitly escaped by |escape )
-{{ var|escape_and_nl2br|escape }}
-
-4. Escape non-escaper filter output
-( var is upper-cased by |upper,
-  the output is auto-escaped )
-{{ var|upper }}
-
-5. Escape if last filter is not an escaper
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is upper-cased by |upper,
-  the output is auto-escaped as |upper is not an escaper )
-{{ var|escape_and_nl2br|upper }}
-
-6. Don't escape escaper filter output
-( var is upper cased by upper,
-  the output is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is not escaped as |escape_and_nl2br is an escaper )
-{{ var|upper|escape_and_nl2br }}
-
-7. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is auto-escaped )
-{{ "<b>%s</b>"|format(var) }}
-
-8. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  |raw is redundant,
-  the output is auto-escaped )
-{{ "<b>%s</b>"|raw|format(var) }}
-
-9. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end )
-{{ "<b>%s</b>"|format(var)|raw }}
-
-10. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end,
-  the |raw filter on var is redundant )
-{{ "<b>%s</b>"|format(var|raw)|raw }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(escape_and_nl2br is an escaper filter)
-
-1. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped )
-&lt;Fabien&gt;<br />
-Twig
-
-2. Don't escape escaper filter output
-( var is escaped by |escape_and_nl2br, line-breaks are added, 
-  the output is not escaped, |raw is redundant )
-&lt;Fabien&gt;<br />
-Twig
-
-3. Explicit escape
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is explicitly escaped by |escape )
-&amp;lt;Fabien&amp;gt;&lt;br /&gt;
-Twig
-
-4. Escape non-escaper filter output
-( var is upper-cased by |upper,
-  the output is auto-escaped )
-&lt;FABIEN&gt;
-TWIG
-
-5. Escape if last filter is not an escaper
-( var is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is upper-cased by |upper,
-  the output is auto-escaped as |upper is not an escaper )
-&amp;LT;FABIEN&amp;GT;&lt;BR /&gt;
-TWIG
-
-6. Don't escape escaper filter output
-( var is upper cased by upper,
-  the output is escaped by |escape_and_nl2br, line-breaks are added,
-  the output is not escaped as |escape_and_nl2br is an escaper )
-&lt;FABIEN&gt;<br />
-TWIG
-
-7. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is auto-escaped )
-&lt;b&gt;&lt;Fabien&gt;
-Twig&lt;/b&gt;
-
-8. Escape if last filter is not an escaper
-( the output of |format is "<b>" ~ var ~ "</b>",
-  |raw is redundant,
-  the output is auto-escaped )
-&lt;b&gt;&lt;Fabien&gt;
-Twig&lt;/b&gt;
-
-9. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end )
-<b><Fabien>
-Twig</b>
-
-10. Don't escape escaper filter output
-( the output of |format is "<b>" ~ var ~ "</b>",
-  the output is not escaped due to |raw filter at the end,
-  the |raw filter on var is redundant )
-<b><Fabien>
-Twig</b>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test
deleted file mode 100644
index 50f72d83..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_filters_arguments.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"autoescape" tag do not applies escaping on filter arguments
---TEMPLATE--
-{% autoescape 'html' %}
-{{ var|nl2br("<br />") }}
-{{ var|nl2br("<br />"|escape) }}
-{{ var|nl2br(sep) }}
-{{ var|nl2br(sep|raw) }}
-{{ var|nl2br(sep|escape) }}
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig", 'sep' => '<br />']
---EXPECT--
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;&lt;br /&gt;
-Twig
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;<br />
-Twig
-&lt;Fabien&gt;&lt;br /&gt;
-Twig
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test
deleted file mode 100644
index c9c73805..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_pre_escape_filters.test
+++ /dev/null
@@ -1,68 +0,0 @@
---TEST--
-"autoescape" tag applies escaping after calling filters, and before calling pre_escape filters
---TEMPLATE--
-{% autoescape 'html' %}
-
-(nl2br is pre_escaped for "html" and declared safe for "html")
-
-1. Pre-escape and don't post-escape
-( var|escape|nl2br )
-{{ var|nl2br }}
-
-2. Don't double-pre-escape
-( var|escape|nl2br )
-{{ var|escape|nl2br }}
-
-3. Don't escape safe values
-( var|raw|nl2br )
-{{ var|raw|nl2br }}
-
-4. Don't escape safe values
-( var|escape|nl2br|nl2br )
-{{ var|nl2br|nl2br }}
-
-5. Re-escape values that are escaped for an other contexts
-( var|escape_something|escape|nl2br )
-{{ var|escape_something|nl2br }}
-
-6. Still escape when using filters not declared safe
-( var|escape|nl2br|upper|escape )
-{{ var|nl2br|upper }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(nl2br is pre_escaped for "html" and declared safe for "html")
-
-1. Pre-escape and don't post-escape
-( var|escape|nl2br )
-&lt;Fabien&gt;<br />
-Twig
-
-2. Don't double-pre-escape
-( var|escape|nl2br )
-&lt;Fabien&gt;<br />
-Twig
-
-3. Don't escape safe values
-( var|raw|nl2br )
-<Fabien><br />
-Twig
-
-4. Don't escape safe values
-( var|escape|nl2br|nl2br )
-&lt;Fabien&gt;<br /><br />
-Twig
-
-5. Re-escape values that are escaped for an other contexts
-( var|escape_something|escape|nl2br )
-&lt;FABIEN&gt;<br />
-TWIG
-
-6. Still escape when using filters not declared safe
-( var|escape|nl2br|upper|escape )
-&amp;LT;FABIEN&amp;GT;&lt;BR /&gt;
-TWIG
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test b/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test
deleted file mode 100644
index c764d434..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test
+++ /dev/null
@@ -1,50 +0,0 @@
---TEST--
-"autoescape" tag handles filters preserving the safety
---TEMPLATE--
-{% autoescape 'html' %}
-
-(preserves_safety is preserving safety for "html")
-
-1. Unsafe values are still unsafe
-( var|preserves_safety|escape )
-{{ var|preserves_safety }}
-
-2. Safe values are still safe
-( var|escape|preserves_safety )
-{{ var|escape|preserves_safety }}
-
-3. Re-escape values that are escaped for an other contexts
-( var|escape_something|preserves_safety|escape )
-{{ var|escape_something|preserves_safety }}
-
-4. Still escape when using filters not declared safe
-( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape )
-{{ var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'}) }}
-
-{% endautoescape %}
---DATA--
-return ['var' => "<Fabien>\nTwig"]
---EXPECT--
-
-(preserves_safety is preserving safety for "html")
-
-1. Unsafe values are still unsafe
-( var|preserves_safety|escape )
-&lt;FABIEN&gt;
-TWIG
-
-2. Safe values are still safe
-( var|escape|preserves_safety )
-&LT;FABIEN&GT;
-TWIG
-
-3. Re-escape values that are escaped for an other contexts
-( var|escape_something|preserves_safety|escape )
-&lt;FABIEN&gt;
-TWIG
-
-4. Still escape when using filters not declared safe
-( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape )
-&amp;LT;FABPOT&amp;GT;
-TWIG
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/basic.test b/vendor/twig/twig/tests/Fixtures/tags/block/basic.test
deleted file mode 100644
index 988b09ce..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/basic.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block title1 %}FOO{% endblock %}
-{% block title2 foo|lower %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['foo' => 'bar']
---EXPECT--
-FOObar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test b/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test
deleted file mode 100644
index 3009f8b4..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/block_unique_name.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block content %}
-    {% block content %}
-    {% endblock %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The block 'content' has already been defined line 2 in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test
deleted file mode 100644
index e8e240eb..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/block/special_chars.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"§" special chars in a block name
---TEMPLATE--
-{% block § %}
-§
-{% endblock § %}
---DATA--
-return []
---EXPECT--
-§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test
deleted file mode 100644
index 53729dd1..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/block.legacy.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-Deprecating a block with "deprecated" tag
---TEMPLATE--
-{% use 'greeting.twig' %}
-
-{{ block('welcome') }}
-
---TEMPLATE(greeting.twig)--
-{% block welcome %}
-  {% deprecated 'The "welcome" block is deprecated, use "hello" instead.' %}
-  {{ block('hello') }}
-{% endblock %}
-
-{% block hello %}
-Hello Fabien
-{% endblock %}
---DATA--
-return []
---EXPECT--
-  Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test
deleted file mode 100644
index 5cc48dd8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/macro.legacy.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-Deprecating a macro with "deprecated" tag
---TEMPLATE--
-{% import 'greeting.twig' as greeting %}
-
-{{ greeting.welcome('Fabien') }}
-
---TEMPLATE(greeting.twig)--
-{% macro welcome(name) %}
-  {% deprecated 'The "welcome" macro is deprecated, use "hello" instead.' %}
-  {% import _self as self %}
-  {{ self.hello(name) }}
-{% endmacro %}
-
-{% macro hello(name) %}
-Hello {{ name }}
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test
deleted file mode 100644
index 7f786d57..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/deprecated/template.legacy.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Deprecating a template with "deprecated" tag
---TEMPLATE--
-{% extends 'greeting.twig' %}
-
-{% deprecated 'The "index.twig" template is deprecated, use "greeting.twig" instead.' %}
---TEMPLATE(greeting.twig)--
-Hello Fabien
---DATA--
-return []
---EXPECT--
-Hello Fabien
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test b/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test
deleted file mode 100644
index 16781e41..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/basic.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test b/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test
deleted file mode 100644
index b799a8c9..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/complex_dynamic_parent.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed foo ~ ".twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test b/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test
deleted file mode 100644
index 6f0879e2..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/dynamic_parent.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed foo %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test b/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test
deleted file mode 100644
index b1c6c85e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/error_line.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE(index.twig)--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ nothing }}
-    {% endblock %}
-{% endembed %}
-BAR
---TEMPLATE(foo.twig)--
-{% block c1 %}{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "nothing" does not exist in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test
deleted file mode 100644
index 9f7b52f1..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/multiple.test
+++ /dev/null
@@ -1,50 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-FOO
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        block1extended
-    {% endblock %}
-{% endembed %}
-
-BAR
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-FOO
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-
-A
-            block1
-
-        block1extended
-    B
-    block2
-C
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test b/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test
deleted file mode 100644
index 9f337233..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/nested.test
+++ /dev/null
@@ -1,42 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-{% embed "foo.twig" %}
-    {% block c1 %}
-        {{ parent() }}
-        {% embed "foo.twig" %}
-            {% block c1 %}
-                {{ parent() }}
-                block1extended
-            {% endblock %}
-        {% endembed %}
-
-    {% endblock %}
-{% endembed %}
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-A
-            block1
-
-        
-A
-                    block1
-
-                block1extended
-            B
-    block2
-C
-    B
-    block2
-C
diff --git a/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test b/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test
deleted file mode 100644
index ce726ac0..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/embed/with_extends.test
+++ /dev/null
@@ -1,60 +0,0 @@
---TEST--
-"embed" tag
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block c1 %}
-    {{ parent() }}
-    blockc1baseextended
-{% endblock %}
-
-{% block c2 %}
-    {{ parent() }}
-
-    {% embed "foo.twig" %}
-        {% block c1 %}
-            {{ parent() }}
-            block1extended
-        {% endblock %}
-    {% endembed %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-A
-{% block c1 %}
-    blockc1base
-{% endblock %}
-{% block c2 %}
-    blockc2base
-{% endblock %}
-B
---TEMPLATE(foo.twig)--
-A
-{% block c1 %}
-    block1
-{% endblock %}
-B
-{% block c2 %}
-    block2
-{% endblock %}
-C
---DATA--
-return []
---EXPECT--
-A
-        blockc1base
-
-    blockc1baseextended
-        blockc2base
-
-
-    
-A
-                block1
-
-            block1extended
-        B
-    block2
-C        blockc2base
-
-B
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test b/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test
deleted file mode 100644
index 866171ec..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"filter" tag applies a filter on its children
---TEMPLATE--
-{% filter upper %}
-Some text with a {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-SOME TEXT WITH A VAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test b/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test
deleted file mode 100644
index a2562b99..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/json_encode.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"filter" tag applies a filter on its children
---TEMPLATE--
-{% filter json_encode|raw %}test{% endfilter %}
---DATA--
-return []
---EXPECT--
-"test"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test
deleted file mode 100644
index 8eb3cbdd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/multiple.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"filter" tags accept multiple chained filters
---TEMPLATE--
-{% filter lower|title %}
-  {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'VAR']
---EXPECT--
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test b/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test
deleted file mode 100644
index 6d18e1af..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"filter" tags can be nested at will
---TEMPLATE--
-{% filter lower|title %}
-  {{ var }}
-  {% filter upper %}
-    {{ var }}
-  {% endfilter %}
-  {{ var }}
-{% endfilter %}
---DATA--
-return ['var' => 'var']
---EXPECT--
-  Var
-      Var
-    Var
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test b/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test
deleted file mode 100644
index 889a46f6..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/scope.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"scope" tag creates a new scope
---TEMPLATE--
-{% filter spaceless %}
-{% set item = 'foo' %}
-{% endfilter %}
-{{ item }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "item" does not exist in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test b/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test
deleted file mode 100644
index d2d87cfd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/with_for_tag.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"filter" tag applies the filter on "for" tags
---TEMPLATE--
-{% filter upper %}
-{% for item in items %}
-{{ item }}
-{% endfor %}
-{% endfilter %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A
-B
diff --git a/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test b/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test
deleted file mode 100644
index f2e804bf..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/filter/with_if_tag.test
+++ /dev/null
@@ -1,29 +0,0 @@
---TEST--
-"filter" tag applies the filter on "if" tags
---TEMPLATE--
-{% filter upper %}
-{% if items %}
-{{ items|join(', ') }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% else %}
-{{ items.1 }}
-{% endif %}
-
-{% if items.3 is defined %}
-FOO
-{% elseif items.1 %}
-{{ items.0 }}
-{% endif %}
-
-{% endfilter %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-A, B
-
-B
-
-A
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/condition.test b/vendor/twig/twig/tests/Fixtures/tags/for/condition.test
deleted file mode 100644
index b1ad22fd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/condition.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"for" tag takes a condition
---TEMPLATE--
-{% for i in 1..5 if i is odd -%}
-    {{ loop.index }}.{{ i }}{{ foo.bar }}
-{% endfor %}
---DATA--
-return ['foo' => ['bar' => 'X']]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-1.1X
-2.3X
-3.5X
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/context.test b/vendor/twig/twig/tests/Fixtures/tags/for/context.test
deleted file mode 100644
index 3cdd575c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/context.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"for" tag keeps the context safe
---TEMPLATE--
-{% for item in items %}
-  {% for item in items %}
-    * {{ item }}
-  {% endfor %}
-  * {{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-      * a
-      * b
-    * a
-      * a
-      * b
-    * b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/else.test b/vendor/twig/twig/tests/Fixtures/tags/for/else.test
deleted file mode 100644
index 86ec9c28..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/else.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"for" tag can use an "else" clause
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-{% else %}
-  no item
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * a
-  * b
---DATA--
-return ['items' => []]
---EXPECT--
-  no item
---DATA--
-return []
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-  no item
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test b/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test
deleted file mode 100644
index e1ad3c73..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/inner_variables.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"for" tag does not reset inner variables
---TEMPLATE--
-{% for i in 1..2 %}
-  {% for j in 0..2 %}
-    {{k}}{% set k = k+1 %} {{ loop.parent.loop.index }}
-  {% endfor %}
-{% endfor %}
---DATA--
-return ['k' => 0]
---EXPECT--
-      0 1
-      1 1
-      2 1
-        3 2
-      4 2
-      5 2
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/keys.test b/vendor/twig/twig/tests/Fixtures/tags/for/keys.test
deleted file mode 100644
index 92135575..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/keys.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag can iterate over keys
---TEMPLATE--
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 0
-  * 1
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test b/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test
deleted file mode 100644
index ab39ddf2..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/keys_and_values.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag can iterate over keys and values
---TEMPLATE--
-{% for key, item in items %}
-  * {{ key }}/{{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 0/a
-  * 1/b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test
deleted file mode 100644
index 56a60c2e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"for" tag adds a loop variable to the context
---TEMPLATE--
-{% for item in items %}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.revindex }}/{{ loop.revindex0 }}
-  * {{ loop.first }}/{{ loop.last }}/{{ loop.length }}
-
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * 1/0
-  * 2/1
-  * 1//2
-
-  * 2/1
-  * 1/0
-  * /1/2
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test
deleted file mode 100644
index 58e5a9b3..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_context_local.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"for" tag adds a loop variable to the context locally
---TEMPLATE--
-{% for item in items %}
-{% endfor %}
-{% if loop is not defined %}WORKS{% endif %}
---DATA--
-return ['items' => []]
---EXPECT--
-WORKS
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test
deleted file mode 100644
index 2d8c0b87..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"for" tag
---TEMPLATE--
-{% for i, item in items if i > 0 %}
-    {{ loop.last }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXCEPTION--
-Twig\Error\SyntaxError: The "loop.last" variable is not defined when looping with a condition in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test b/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test
deleted file mode 100644
index e90e96b4..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/loop_not_defined_cond.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-"for" tag
---TEMPLATE--
-{% for i, item in items if loop.last > 0 %}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXCEPTION--
-Twig\Error\SyntaxError: The "loop" variable cannot be used in a looping condition in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test b/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test
deleted file mode 100644
index df1bb07a..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/nested_else.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"for" tag can use an "else" clause
---TEMPLATE--
-{% for item in items %}
-  {% for item in items1 %}
-    * {{ item }}
-  {% else %}
-    no {{ item }}
-  {% endfor %}
-{% else %}
-  no item1
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b'], 'items1' => []]
---EXPECT--
-no a
-        no b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/objects.test b/vendor/twig/twig/tests/Fixtures/tags/for/objects.test
deleted file mode 100644
index 2ba2d92c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/objects.test
+++ /dev/null
@@ -1,43 +0,0 @@
---TEST--
-"for" tag iterates over iterable objects
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.first }}
-
-{% endfor %}
-
-{% for key, value in items %}
-  * {{ key }}/{{ value }}
-{% endfor %}
-
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-class ItemsIterator implements Iterator
-{
-  protected $values = ['foo' => 'bar', 'bar' => 'foo'];
-  public function current() { return current($this->values); }
-  public function key() { return key($this->values); }
-  public function next() { return next($this->values); }
-  public function rewind() { return reset($this->values); }
-  public function valid() { return false !== current($this->values); }
-}
-return ['items' => new ItemsIterator()]
---EXPECT--
-  * bar
-  * 1/0
-  * 1
-
-  * foo
-  * 2/1
-  * 
-
-
-  * foo/bar
-  * bar/foo
-
-  * foo
-  * bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test b/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test
deleted file mode 100644
index 99146bde..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/objects_countable.test
+++ /dev/null
@@ -1,47 +0,0 @@
---TEST--
-"for" tag iterates over iterable and countable objects
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-  * {{ loop.index }}/{{ loop.index0 }}
-  * {{ loop.revindex }}/{{ loop.revindex0 }}
-  * {{ loop.first }}/{{ loop.last }}/{{ loop.length }}
-
-{% endfor %}
-
-{% for key, value in items %}
-  * {{ key }}/{{ value }}
-{% endfor %}
-
-{% for key in items|keys %}
-  * {{ key }}
-{% endfor %}
---DATA--
-class ItemsIteratorCountable implements Iterator, \Countable
-{
-  protected $values = ['foo' => 'bar', 'bar' => 'foo'];
-  public function current() { return current($this->values); }
-  public function key() { return key($this->values); }
-  public function next() { return next($this->values); }
-  public function rewind() { return reset($this->values); }
-  public function valid() { return false !== current($this->values); }
-  public function count() { return count($this->values); }
-}
-return ['items' => new ItemsIteratorCountable()]
---EXPECT--
-  * bar
-  * 1/0
-  * 2/1
-  * 1//2
-
-  * foo
-  * 2/1
-  * 1/0
-  * /1/2
-
-
-  * foo/bar
-  * bar/foo
-
-  * foo
-  * bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test b/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test
deleted file mode 100644
index 3b677d60..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/recursive.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"for" tags can be nested
---TEMPLATE--
-{% for key, item in items %}
-* {{ key }} ({{ loop.length }}):
-{% for value in item %}
-  * {{ value }} ({{ loop.length }})
-{% endfor %}
-{% endfor %}
---DATA--
-return ['items' => ['a' => ['a1', 'a2', 'a3'], 'b' => ['b1']]]
---EXPECT--
-* a (2):
-  * a1 (3)
-  * a2 (3)
-  * a3 (3)
-* b (2):
-  * b1 (1)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/for/values.test b/vendor/twig/twig/tests/Fixtures/tags/for/values.test
deleted file mode 100644
index 384c41b2..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/for/values.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"for" tag iterates over item values
---TEMPLATE--
-{% for item in items %}
-  * {{ item }}
-{% endfor %}
---DATA--
-return ['items' => ['a', 'b']]
---EXPECT--
-  * a
-  * b
diff --git a/vendor/twig/twig/tests/Fixtures/tags/from.test b/vendor/twig/twig/tests/Fixtures/tags/from.test
deleted file mode 100644
index 1d3c9e2b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/from.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-global variables
---TEMPLATE--
-{% include "included.twig" %}
-{% from "included.twig" import foobar %}
-{{ foobar() }}
---TEMPLATE(included.twig)--
-{% macro foobar() %}
-called foobar
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-called foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/if/basic.test b/vendor/twig/twig/tests/Fixtures/tags/if/basic.test
deleted file mode 100644
index a02165e5..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/if/basic.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"if" creates a condition
---TEMPLATE--
-{% if a is defined %}
-  {{ a }}
-{% elseif b is defined %}
-  {{ b }}
-{% else %}
-  NOTHING
-{% endif %}
---DATA--
-return ['a' => 'a']
---EXPECT--
-  a
---DATA--
-return ['b' => 'b']
---EXPECT--
-  b
---DATA--
-return []
---EXPECT--
-  NOTHING
diff --git a/vendor/twig/twig/tests/Fixtures/tags/if/expression.test b/vendor/twig/twig/tests/Fixtures/tags/if/expression.test
deleted file mode 100644
index eb65083c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/if/expression.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"if" takes an expression as a test
---TEMPLATE--
-{% if a < 2 %}
-  A1
-{% elseif a > 10 %}
-  A2
-{% else %}
-  A3
-{% endif %}
---DATA--
-return ['a' => 1]
---EXPECT--
-  A1
---DATA--
-return ['a' => 12]
---EXPECT--
-  A2
---DATA--
-return ['a' => 7]
---EXPECT--
-  A3
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/basic.test b/vendor/twig/twig/tests/Fixtures/tags/include/basic.test
deleted file mode 100644
index 9982b039..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/basic.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-FOO
-{% include "foo.twig" %}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return []
---EXPECT--
-FOO
-
-FOOBAR
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/expression.test b/vendor/twig/twig/tests/Fixtures/tags/include/expression.test
deleted file mode 100644
index 23db1812..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/expression.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag allows expressions for the template to include
---TEMPLATE--
-FOO
-{% include foo %}
-
-BAR
---TEMPLATE(foo.twig)--
-FOOBAR
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
-
-FOOBAR
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test b/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test
deleted file mode 100644
index 6c8bdb1e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ["foo.twig", "bar.twig"] ignore missing %}
-{% include "foo.twig" ignore missing %}
-{% include "foo.twig" ignore missing with {} %}
-{% include "foo.twig" ignore missing with {} only %}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test b/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test
deleted file mode 100644
index 1af01221..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/ignore_missing_exists.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include "included.twig" ignore missing %}
-NOT DISPLAYED
---TEMPLATE(included.twig)--
-{% include "DOES NOT EXIST" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "included.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test b/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test
deleted file mode 100644
index d0d1bfe5..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/include_missing_extends.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ['bad.twig', 'good.twig'] ignore missing %}
-NOT DISPLAYED
---TEMPLATE(bad.twig)--
-{% extends 'DOES NOT EXIST' %}
---TEMPLATE(good.twig)--
-NOT DISPLAYED
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "DOES NOT EXIST" is not defined in "bad.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/missing.test b/vendor/twig/twig/tests/Fixtures/tags/include/missing.test
deleted file mode 100644
index ac72838e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/missing.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include "foo.twig" %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test b/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test
deleted file mode 100644
index 0ee51b78..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/missing_nested.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}
-    {% include "foo.twig" %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\LoaderError: Template "foo.twig" is not defined in "base.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/only.test b/vendor/twig/twig/tests/Fixtures/tags/include/only.test
deleted file mode 100644
index 8da402f7..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/only.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"include" tag accept variables and only
---TEMPLATE--
-{% include "foo.twig" %}
-{% include "foo.twig" only %}
-{% include "foo.twig" with vars1 %}
-{% include "foo.twig" with vars1 only %}
-{% include "foo.twig" with vars2 %}
-{% include "foo.twig" with vars2 only %}
---TEMPLATE(foo.twig)--
-{% for k, v in _context %}{{ k }},{% endfor %}
---DATA--
-return ['vars1' => ['foo1' => 'bar'], 'vars2' => new ArrayObject(['foo2' => 'bar'])]
---EXPECT--
-vars1,vars2,global,_parent,
-global,_parent,
-vars1,vars2,global,foo1,_parent,
-foo1,global,_parent,
-vars1,vars2,global,foo2,_parent,
-foo2,global,_parent,
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test b/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test
deleted file mode 100644
index 4fb862a1..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/template_instance.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"include" tag accepts \Twig\TemplateWrapper instance
---TEMPLATE--
-{% include foo %} FOO
---TEMPLATE(foo.twig)--
-BAR
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BAR FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test b/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test
deleted file mode 100644
index 38063952..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/templates_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"include" tag
---TEMPLATE--
-{% include ["foo.twig", "bar.twig"] %}
-{% include ["bar.twig", "foo.twig"] %}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test b/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test
deleted file mode 100644
index 45a05199..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/include/with_variables.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"include" tag accept variables
---TEMPLATE--
-{% include "foo.twig" with {'foo': 'bar'} %}
-{% include "foo.twig" with vars1 %}
-{% include "foo.twig" with vars2 %}
---TEMPLATE(foo.twig)--
-{{ foo }}
---DATA--
-return ['vars1' => ['foo' => 'bar'], 'vars2' => new ArrayObject(['foo' => 'bar'])]
---EXPECT--
-bar
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test
deleted file mode 100644
index 703b61be..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/basic.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return []
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test
deleted file mode 100644
index 0b82d4cf..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-block_expr
---TEMPLATE--
-{% extends "base.twig" %}
-
-{% block element -%}
-    Element:
-    {{- parent() -}}
-{% endblock %}
---TEMPLATE(base.twig)--
-{% block element -%}
-    <div>
-        {%- if item.children is defined %}
-            {%- for item in item.children %}
-                {{- block('element') -}}
-            {% endfor %}
-        {%- endif -%}
-    </div>
-{%- endblock %}
---DATA--
-return [
-    'item' => [
-        'children' => [
-            null,
-            null,
-        ]
-    ]
-]
---EXPECT--
-Element:<div>Element:<div></div>Element:<div></div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test
deleted file mode 100644
index 18f66041..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/block_expr2.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-block_expr2
---TEMPLATE--
-{% extends "base2.twig" %}
-
-{% block element -%}
-    Element:
-    {{- parent() -}}
-{% endblock %}
---TEMPLATE(base2.twig)--
-{% extends "base.twig" %}
---TEMPLATE(base.twig)--
-{% block element -%}
-    <div>
-        {%- if item.children is defined %}
-            {%- for item in item.children %}
-                {{- block('element') -}}
-            {% endfor %}
-        {%- endif -%}
-    </div>
-{%- endblock %}
---DATA--
-return [
-    'item' => [
-        'children' => [
-            null,
-            null,
-        ]
-    ]
-]
---EXPECT--
-Element:<div>Element:<div></div>Element:<div></div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test
deleted file mode 100644
index bd28248d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/conditional.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends standalone ? foo : 'bar.twig' %}
-
-{% block content %}{{ parent() }}FOO{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}FOO{% endblock %}
---TEMPLATE(bar.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return ['foo' => 'foo.twig', 'standalone' => true]
---EXPECT--
-FOOFOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test
deleted file mode 100644
index e6a0f017..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/dynamic.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}
-FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}{% endblock %}
---DATA--
-return ['foo' => 'foo.twig']
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test
deleted file mode 100644
index ca11bf20..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/empty.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
---TEMPLATE(foo.twig)--
-{% block content %}FOO{% endblock %}
---DATA--
-return []
---EXPECT--
-FOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test
deleted file mode 100644
index 4d2cb6c6..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends ["foo.twig", "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test
deleted file mode 100644
index 51086511..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends ["", "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test
deleted file mode 100644
index c5ee6f19..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends [null, "bar.twig"] %}
---TEMPLATE(bar.twig)--
-{% block content %}
-foo
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test
deleted file mode 100644
index a372ea1c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_block.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag in a block
---TEMPLATE--
-{% block foo %}
-    {% extends "foo.twig" %}
-{% endblock %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Cannot use "extend" in a block in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test
deleted file mode 100644
index dc87b2a8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/extends_in_macro.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"extends" tag in a macro
---TEMPLATE--
-{% macro foo() %}
-    {% extends "foo.twig" %}
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Cannot use "extend" in a macro in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test
deleted file mode 100644
index fc25badd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "layout.twig" %}{% block content %}{{ parent() }}index {% endblock %}
---TEMPLATE(layout.twig)--
-{% extends "base.twig" %}{% block content %}{{ parent() }}layout {% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}base {% endblock %}
---DATA--
-return []
---EXPECT--
-base layout index
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test
deleted file mode 100644
index fa887177..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/multiple_dynamic.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% set foo = 1 %}
-{{ include('parent.twig') }}
-{{ include('parent.twig') }}
-{% set foo = 2 %}
-{{ include('parent.twig') }}
---TEMPLATE(parent.twig)--
-{% extends foo~'_parent.twig' %}{% block content %}{{ parent() }} parent{% endblock %}
---TEMPLATE(1_parent.twig)--
-{% block content %}1{% endblock %}
---TEMPLATE(2_parent.twig)--
-{% block content %}2{% endblock %}
---DATA--
-return []
---EXPECT--
-1 parent
-
-1 parent
-
-2 parent
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test
deleted file mode 100644
index abea2e9d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-    {% block subcontent %}
-        {% block subsubcontent %}
-            SUBSUBCONTENT
-        {% endblock %}
-    {% endblock %}
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}
-    {% block subcontent %}
-        SUBCONTENT
-    {% endblock %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-SUBSUBCONTENT
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test
deleted file mode 100644
index 20b7848f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-"block" tag
---TEMPLATE--
-{% block content %}
-    CONTENT
-    {%- block subcontent -%}
-        SUBCONTENT
-    {%- endblock -%}
-    ENDCONTENT
-{% endblock %}
---TEMPLATE(foo.twig)--
---DATA--
-return []
---EXPECT--
-CONTENTSUBCONTENTENDCONTENT
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test
deleted file mode 100644
index 0b585b48..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/nested_inheritance.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "layout.twig" %}
-{% block inside %}INSIDE{% endblock inside %}
---TEMPLATE(layout.twig)--
-{% extends "base.twig" %}
-{% block body %}
-    {% block inside '' %}
-{% endblock body %}
---TEMPLATE(base.twig)--
-{% block body '' %}
---DATA--
-return []
---EXPECT--
-INSIDE
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test
deleted file mode 100644
index 73f4c0ec..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}{{ parent() }}FOO{{ parent() }}{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return []
---EXPECT--
-BARFOOBAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test
deleted file mode 100644
index 1aaed556..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_as_template_wrapper.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"extends" tag with a parent as a Twig_TemplateWrapper instance
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}New{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}Default{% endblock %}
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-New
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test
deleted file mode 100644
index 01bd544f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_change.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends foo ? 'foo.twig' : 'bar.twig' %}
---TEMPLATE(foo.twig)--
-FOO
---TEMPLATE(bar.twig)--
-BAR
---DATA--
-return ['foo' => true]
---EXPECT--
-FOO
---DATA--
-return ['foo' => false]
---EXPECT--
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test
deleted file mode 100644
index 58a37bd9..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_isolation.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "base.twig" %}
-{% block content %}{% include "included.twig" %}{% endblock %}
-
-{% block footer %}Footer{% endblock %}
---TEMPLATE(included.twig)--
-{% extends "base.twig" %}
-{% block content %}Included Content{% endblock %}
---TEMPLATE(base.twig)--
-{% block content %}Default Content{% endblock %}
-
-{% block footer %}Default Footer{% endblock %}
---DATA--
-return []
---EXPECT--
-Included Content
-Default Footer
-Footer
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test
deleted file mode 100644
index d4347bac..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_nested.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"extends" tag
---TEMPLATE--
-{% extends "foo.twig" %}
-
-{% block content %}
-  {% block inside %}
-    INSIDE OVERRIDDEN
-  {% endblock %}
-
-  BEFORE
-  {{ parent() }}
-  AFTER
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}
-  BAR
-{% endblock %}
---DATA--
-return []
---EXPECT--
-
-INSIDE OVERRIDDEN
-  
-  BEFORE
-    BAR
-
-  AFTER
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test
deleted file mode 100644
index 6d988915..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"parent" tag
---TEMPLATE--
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---EXCEPTION--
-Twig\Error\SyntaxError: Calling "parent" on a template that does not extend nor "use" another template is forbidden in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test
deleted file mode 100644
index 39882b8b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"parent" tag
---TEMPLATE--
-{% use 'foo.twig' %}
-
-{% block content %}
-    {{ parent() }}
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return []
---EXPECT--
-BAR
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test
deleted file mode 100644
index a5a22388..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/template_instance.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"extends" tag accepts Twig_Template instance
---TEMPLATE--
-{% extends foo %}
-
-{% block content %}
-{{ parent() }}FOO
-{% endblock %}
---TEMPLATE(foo.twig)--
-{% block content %}BAR{% endblock %}
---DATA--
-return ['foo' => $twig->load('foo.twig')]
---EXPECT--
-BARFOO
diff --git a/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test b/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test
deleted file mode 100644
index 4df32ee9..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/inheritance/use.test
+++ /dev/null
@@ -1,44 +0,0 @@
---TEST--
-"parent" function
---TEMPLATE--
-{% extends "parent.twig" %}
-
-{% use "use1.twig" %}
-{% use "use2.twig" %}
-
-{% block content_parent %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content_use1 %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content_use2 %}
-    {{ parent() }}
-{% endblock %}
-
-{% block content %}
-    {{ block('content_use1_only') }}
-    {{ block('content_use2_only') }}
-{% endblock %}
---TEMPLATE(parent.twig)--
-{% block content_parent 'content_parent' %}
-{% block content_use1 'content_parent' %}
-{% block content_use2 'content_parent' %}
-{% block content '' %}
---TEMPLATE(use1.twig)--
-{% block content_use1 'content_use1' %}
-{% block content_use2 'content_use1' %}
-{% block content_use1_only 'content_use1_only' %}
---TEMPLATE(use2.twig)--
-{% block content_use2 'content_use2' %}
-{% block content_use2_only 'content_use2_only' %}
---DATA--
-return []
---EXPECT--
-    content_parent
-    content_use1
-    content_use2
-    content_use1_only
-    content_use2_only
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test b/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test
deleted file mode 100644
index ae090f9a..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/basic.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.input('username') }}
-{{ macros.input('password', null, 'password', 1) }}
-
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test
deleted file mode 100644
index 3f3caf77..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/endmacro_name.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-"macro" tag supports name for endmacro
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.foo() }}
-{{ macros.bar() }}
-
-{% macro foo() %}foo{% endmacro %}
-{% macro bar() %}bar{% endmacro bar %}
---DATA--
-return []
---EXPECT--
-foo
-bar
-
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/external.test b/vendor/twig/twig/tests/Fixtures/tags/macro/external.test
deleted file mode 100644
index b28ca19f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/external.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import 'forms.twig' as forms %}
-
-{{ forms.input('username') }}
-{{ forms.input('password', null, 'password', 1) }}
---TEMPLATE(forms.twig)--
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from.test
deleted file mode 100644
index 8b9aae87..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% from 'forms.twig' import foo %}
-{% from 'forms.twig' import foo as foobar, bar %}
-
-{{ foo('foo') }}
-{{ foobar('foo') }}
-{{ bar('foo') }}
---TEMPLATE(forms.twig)--
-{% macro foo(name) %}foo{{ name }}{% endmacro %}
-{% macro bar(name) %}bar{{ name }}{% endmacro %}
---DATA--
-return []
---EXPECT--
-foofoo
-foofoo
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test
deleted file mode 100644
index 0c89ce62..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_in_block_is_local.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- from _self import input as linput %}
-{% endblock %}
-
-{% block bar %}
-    {{- linput('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "linput" function in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test
deleted file mode 100644
index 27bfbaee..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_local_override.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- from _self import input %}
-
-{% block foo %}
-    {%- from "macros" import input %}
-    {{- input('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---TEMPLATE(macros)--
-{% macro input(name) %}
-    <input name="{{ name }}" value="local">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username" value="local">
-
-
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test
deleted file mode 100644
index 87ac25c3..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_macro_in_a_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"from" tag with syntax error
---TEMPLATE--
-{% from _self import another, foo %}
-
-{{ foo() }}
-
-{% macro foo() %}
-    {{ another() }}
-{% endmacro %}
-
-{% macro another() %}
-    OK
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "another" function in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test
deleted file mode 100644
index 8ede5db5..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- from _self import input as linput %}
-
-    {% block bar %}
-        {{- linput('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "linput" function in "index.twig" at line 6.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test
deleted file mode 100644
index f737bf0d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_nested_blocks_with_global_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- from _self import input %}
-
-{% block foo %}
-    {% block bar %}
-        {{- input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unknown "input" function in "index.twig" at line 6.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test
deleted file mode 100644
index 6223cfe9..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_syntax_error.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"from" tag with syntax error
---TEMPLATE--
-{% from 'forms.twig' %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "end of statement block" ("name" expected with value "import") in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test
deleted file mode 100644
index 19adb9df..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/from_with_reserved_name.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% from 'forms.twig' import templateName %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "templateName" cannot be an imported macro as it is a reserved keyword in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/global.test b/vendor/twig/twig/tests/Fixtures/tags/macro/global.test
deleted file mode 100644
index 832740ea..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/global.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% from 'forms.twig' import foo %}
-
-{{ foo('foo') }}
-{{ foo() }}
---TEMPLATE(forms.twig)--
-{% macro foo(name) %}{{ name|default('foo') }}{{ global }}{% endmacro %}
---DATA--
-return []
---EXPECT--
-fooglobal
-fooglobal
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test
deleted file mode 100644
index 721f5506..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_and_blocks.test
+++ /dev/null
@@ -1,36 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as macros %}
-{% from _self import input %}
-
-{% block foo %}
-    {{- macros.input('username') }}
-    {{- input('username') }}
-
-    {%- import _self as lmacros %}
-    {%- from _self import input as linput %}
-
-    {{- lmacros.input('username') }}
-    {{- linput('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- macros.input('username') }}
-    {{- input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
-<input name="username">
-<input name="username">
-<input name="username">
-
-
-<input name="username">
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test
deleted file mode 100644
index 6c1817be..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_from_string_template.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"import" tag with a template as string
---TEMPLATE--
-{% import template_from_string("{% macro test() %}ok{% endmacro %}") as m %}
-{{ m.test() }}
---TEMPLATE(forms.twig)--
---DATA--
-return []
---EXPECT--
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test
deleted file mode 100644
index 9443e122..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_in_block_is_local.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- import _self as lmacros %}
-{% endblock %}
-
-{% block bar %}
-    {{- lmacros.input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "lmacros" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test
deleted file mode 100644
index 7cf0552f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_local_override.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- import _self as macros %}
-
-{% block foo %}
-    {%- import "macros" as macros %}
-    {{- macros.input('username') }}
-{% endblock %}
-
-{% block bar %}
-    {{- macros.input('username') }}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---TEMPLATE(macros)--
-{% macro input(name) %}
-    <input name="{{ name }}" value="local">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username" value="local">
-
-
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test
deleted file mode 100644
index d224482e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_macro_in_a_macro.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"import" tag with syntax error
---TEMPLATE--
-{% import _self as foo %}
-
-{{ foo.foo() }}
-
-{% macro foo() %}
-    {{ foo.another() }}
-{% endmacro %}
-
-{% macro another() %}
-    OK
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "foo" does not exist in "index.twig" at line 7.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test
deleted file mode 100644
index e822c7ff..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% block foo %}
-    {%- import _self as lmacros %}
-
-    {% block bar %}
-        {{- lmacros.input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test
deleted file mode 100644
index 697d665f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_nested_blocks_with_global_macro.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{%- import _self as macros %}
-
-{% block foo %}
-    {% block bar %}
-        {{- macros.input('username') }}
-    {% endblock %}
-{% endblock %}
-
-{% macro input(name) -%}
-    <input name="{{ name }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-<input name="username">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test
deleted file mode 100644
index 24a8cdb5..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_self_parent.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% extends "parent" %}
-{% import _self as me %}
-
-{% block test %}
-    {{ me.hello() }}
-{% endblock test %}
---TEMPLATE(parent)--
-{% import _self as me %}
-
-{% block test %}
-Hello
-{% endblock test %}
-
-{% macro hello() %}
-    Test
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-Test
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test
deleted file mode 100644
index b9817f0e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_syntax_error.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"import" tag with reserved name
---TEMPLATE--
-{% import 'forms.twig' %}
-
-{{ macros.parent() }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected token "end of statement block" ("name" expected with value "as") in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test
deleted file mode 100644
index 34b8d43a..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/import_with_reserved_name.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"from" tag with reserved name
---TEMPLATE--
-{% import 'forms.twig' as macros %}
-
-{{ macros.parent() }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "parent" cannot be called as macro as it is a reserved keyword in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test b/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test
deleted file mode 100644
index e58dd7ca..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/reserved_name.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"macro" tag with reserved name
---TEMPLATE--
-{% macro parent(arg1, arg2) %}
-    parent
-{% endmacro %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: "parent" cannot be used as a macro name as it is a reserved keyword in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test b/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test
deleted file mode 100644
index ca3157dd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/self_import.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"macro" tag
---TEMPLATE--
-{% import _self as forms %}
-
-{{ forms.input('username') }}
-{{ forms.input('password', null, 'password', 1) }}
-
-{% macro input(name, value, type, size) %}
-  <input type="{{ type|default("text") }}" name="{{ name }}" value="{{ value|e|default('') }}" size="{{ size|default(20) }}">
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-  <input type="text" name="username" value="" size="20">
-
-  <input type="password" name="password" value="" size="1">
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test
deleted file mode 100644
index 491e91e8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/special_chars.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"§" as a macro name
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.§('foo') }}
-
-{% macro §(foo) %}
-  §{{ foo }}§
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-§foo§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test b/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test
deleted file mode 100644
index 643697ce..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/macro/super_globals.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Super globals as macro arguments
---TEMPLATE--
-{% import _self as macros %}
-
-{{ macros.foo('foo') }}
-
-{% macro foo(GET) %}
-    {{ GET }}
-{% endmacro %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test
deleted file mode 100644
index 7875b2af..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/basic.legacy.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-{% raw %}
-{{ foo }}
-{% endraw %}
---DATA--
-return []
---EXPECT--
-{{ foo }}
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test
deleted file mode 100644
index d4c8dd2c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-{% raw %}
-{{ foo }}
-{% endverbatim %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected end of file: Unclosed "raw" block in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test b/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test
deleted file mode 100644
index 11f42025..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/raw/whitespace_control.legacy.test
+++ /dev/null
@@ -1,56 +0,0 @@
---TEST--
-"raw" tag
---TEMPLATE--
-1***
-
-{%- raw %}
-    {{ 'bla' }}
-{% endraw %}
-
-1***
-2***
-
-{%- raw -%}
-    {{ 'bla' }}
-{% endraw %}
-
-2***
-3***
-
-{%- raw -%}
-    {{ 'bla' }}
-{% endraw -%}
-
-3***
-4***
-
-{%- raw -%}
-    {{ 'bla' }}
-{%- endraw %}
-
-4***
-5***
-
-{%- raw -%}
-    {{ 'bla' }}
-{%- endraw -%}
-
-5***
---DATA--
-return []
---EXPECT--
-1***
-    {{ 'bla' }}
-
-
-1***
-2***{{ 'bla' }}
-
-
-2***
-3***{{ 'bla' }}
-3***
-4***{{ 'bla' }}
-
-4***
-5***{{ 'bla' }}5***
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test
deleted file mode 100644
index b432427e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/array.test
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-{{ [a][0] }}
-{{ dump([a][0]) }}
---DATA--
-return ['a' => 'b']
---CONFIG--
-return ['autoescape' => false, 'debug' => true]
---EXPECT--
-b
-string(1) "b"
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test
deleted file mode 100644
index e26a78bc..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid1.test
+++ /dev/null
@@ -1,11 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-    a
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---EXCEPTION--
-Twig\Error\SyntaxError: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 4.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test
deleted file mode 100644
index bb2a3297..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/not_valid2.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-
-    {% if 1 %}
-        {%- include "foo.twig" %}
-    {% endif %}
-{%- endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---EXCEPTION--
-Twig\Error\SyntaxError: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 5.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test b/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test
deleted file mode 100644
index 4d232d8b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/sandbox/simple.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-sandbox tag
---TEMPLATE--
-{%- sandbox %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
-
-{%- sandbox %}
-    {%- include "foo.twig" %}
-    {%- include "foo.twig" %}
-{%- endsandbox %}
-
-{%- sandbox %}{% include "foo.twig" %}{% endsandbox %}
---TEMPLATE(foo.twig)--
-foo
---DATA--
-return []
---EXPECT--
-foo
-foo
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/basic.test b/vendor/twig/twig/tests/Fixtures/tags/set/basic.test
deleted file mode 100644
index aae1427e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/basic.test
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo = 'foo' %}
-{% set bar = 'foo<br />' %}
-
-{{ foo }}
-{{ bar }}
-
-{% set foo, bar = 'foo', 'bar' %}
-
-{{ foo }}{{ bar }}
---DATA--
-return []
---EXPECT--
-foo
-foo&lt;br /&gt;
-
-
-foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test
deleted file mode 100644
index 97fc43cc..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture-empty.test
+++ /dev/null
@@ -1,9 +0,0 @@
---TEST--
-"set" tag block empty capture
---TEMPLATE--
-{% set foo %}{% endset %}
-
-{% if foo %}FAIL{% endif %}
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture.test
deleted file mode 100644
index c3faf250..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"set" tag block capture
---TEMPLATE--
-{% set foo %}f<br />o<br />o{% endset %}
-
-{{ foo }}
---DATA--
-return []
---EXPECT--
-f<br />o<br />o
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test b/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test
deleted file mode 100644
index bb2bbeba..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/capture_scope.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"set" tag block capture
---TEMPLATE--
-{% set foo %}{{ foo }}{% endset %}
-
-{{ foo }}
---DATA--
-return ['foo' => 'foo']
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/expression.test b/vendor/twig/twig/tests/Fixtures/tags/set/expression.test
deleted file mode 100644
index bd472771..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/expression.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo, bar = 'foo' ~ 'bar', 'bar' ~ 'foo' %}
-
-{{ foo }}
-{{ bar }}
---DATA--
-return []
---EXPECT--
-foobar
-barfoo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test
deleted file mode 100644
index 79e89ce7..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"set" tag with inheritance
---TEMPLATE--
-{% extends "layout.twig" %}
-
-{% set bar %}bar{% endset %}
-
-{% block var_from_child %}
-    {{- bar -}}
-{% endblock %}
---TEMPLATE(layout.twig)--
-{% set foo %}foo{% endset %}
-
-{% block var_from_layout %}
-    {{- foo -}}
-{% endblock %}
-
-{% block var_from_child %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test b/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test
deleted file mode 100644
index 2d23c83a..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/inheritance_overriding.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"set" tag with inheritance
---TEMPLATE--
-{% extends "layout.twig" %}
-
-{% set foo %}bar{% endset %}
-
-{% block var_from_child %}
-    {{- foo -}}
-{% endblock %}
---TEMPLATE(layout.twig)--
-{% set foo %}foo{% endset %}
-
-{% block var_from_layout %}
-    {{- foo -}}
-{% endblock %}
-
-{% block var_from_child %}
-{% endblock %}
---DATA--
-return []
---EXPECT--
-foo
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test b/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test
deleted file mode 100644
index ae388bb8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/set/mutating.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"set" tag
---TEMPLATE--
-{% set foo = "foo" %}
-
-{% set bar %}
-    {%- set foo = "bar" -%}
-    bar
-{% endset %}
-
-{{ foo }}
-{{ bar }}
---DATA--
-return []
---EXPECT--
-bar
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test b/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test
deleted file mode 100644
index 98bd27a1..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/spaceless/simple.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"spaceless" tag removes whites between HTML tags
---TEMPLATE--
-{% spaceless %}
-
-    <div>   <div>   foo   </div>   </div>
-
-{% endspaceless %}
---DATA--
-return []
---EXPECT--
-<div><div>   foo   </div></div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/special_chars.test b/vendor/twig/twig/tests/Fixtures/tags/special_chars.test
deleted file mode 100644
index 64ffd1d7..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/special_chars.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"§" custom tag
---TEMPLATE--
-{% § %}
---DATA--
-return []
---EXPECT--
-§
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test b/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test
deleted file mode 100644
index b6b1d5c6..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/aliases.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "blocks.twig" with content as foo %}
-
-{{ block('foo') }}
---TEMPLATE(blocks.twig)--
-{% block content 'foo' %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/basic.test b/vendor/twig/twig/tests/Fixtures/tags/use/basic.test
deleted file mode 100644
index be622a10..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/basic.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "blocks.twig" %}
-
-{{ block('content') }}
---TEMPLATE(blocks.twig)--
-{% block content 'foo' %}
---DATA--
-return []
---EXPECT--
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/deep.test b/vendor/twig/twig/tests/Fixtures/tags/use/deep.test
deleted file mode 100644
index 771ba642..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/deep.test
+++ /dev/null
@@ -1,22 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
---TEMPLATE(foo.twig)--
-{% use "bar.twig" %}
-
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-foo
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test b/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test
deleted file mode 100644
index f14ce83d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/deep_empty.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
---TEMPLATE(foo.twig)--
-{% use "bar.twig" %}
---TEMPLATE(bar.twig)--
---DATA--
-return []
---EXPECT--
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test b/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test
deleted file mode 100644
index 1edeaa11..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance.test
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "parent.twig" %}
-
-{{ block('container') }}
---TEMPLATE(parent.twig)--
-{% use "ancestor.twig" %}
-
-{% block sub_container %}
-    <div class="overridden_sub_container">overridden sub_container</div>
-{% endblock %}
---TEMPLATE(ancestor.twig)--
-{% block container %}
-    <div class="container">{{ block('sub_container') }}</div>
-{% endblock %}
-
-{% block sub_container %}
-    <div class="sub_container">sub_container</div>
-{% endblock %}
---DATA--
-return []
---EXPECT--
-<div class="container">    <div class="overridden_sub_container">overridden sub_container</div>
-</div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test b/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test
deleted file mode 100644
index accec509..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/inheritance2.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "ancestor.twig" %}
-{% use "parent.twig" %}
-
-{{ block('container') }}
---TEMPLATE(parent.twig)--
-{% block sub_container %}
-    <div class="overridden_sub_container">overridden sub_container</div>
-{% endblock %}
---TEMPLATE(ancestor.twig)--
-{% block container %}
-    <div class="container">{{ block('sub_container') }}</div>
-{% endblock %}
-
-{% block sub_container %}
-    <div class="sub_container">sub_container</div>
-{% endblock %}
---DATA--
-return []
---EXPECT--
-<div class="container">    <div class="overridden_sub_container">overridden sub_container</div>
-</div>
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test b/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test
deleted file mode 100644
index 85a63958..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/multiple.test
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" %}
-{% use "bar.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
---TEMPLATE(foo.twig)--
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-bar
-foo
-bar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test b/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test
deleted file mode 100644
index 413bdfa4..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/multiple_aliases.test
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use "foo.twig" with content as foo_content %}
-{% use "bar.twig" %}
-
-{{ block('content') }}
-{{ block('foo') }}
-{{ block('bar') }}
-{{ block('foo_content') }}
---TEMPLATE(foo.twig)--
-{% block content 'foo' %}
-{% block foo 'foo' %}
---TEMPLATE(bar.twig)--
-{% block content 'bar' %}
-{% block bar 'bar' %}
---DATA--
-return []
---EXPECT--
-bar
-foo
-bar
-foo
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test
deleted file mode 100644
index 49328f6e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig' with foobar as base_base_foobar %}
-{% block foobar %}
-    {{- block('base_base_foobar') -}}
-    Content of block (second override)
-{% endblock foobar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' with foobar as base_foobar %}
-{% block foobar %}
-    {{- block('base_foobar') -}}
-    Content of block (first override)
-{% endblock foobar %}
---TEMPLATE(file1.html.twig)--
-{% block foobar -%}
-    Content of block
-{% endblock foobar %}
---DATA--
-return []
---EXPECT--
-Content of block
-Content of block (first override)
-Content of block (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test
deleted file mode 100644
index 274baa82..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block2.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig'%}
-{% block foobar %}
-    {{- parent() -}}
-    Content of block (second override)
-{% endblock foobar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' %}
-{% block foobar %}
-    {{- parent() -}}
-    Content of block (first override)
-{% endblock foobar %}
---TEMPLATE(file1.html.twig)--
-{% block foobar -%}
-    Content of block
-{% endblock foobar %}
---DATA--
-return []
---EXPECT--
-Content of block
-Content of block (first override)
-Content of block (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test b/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test
deleted file mode 100644
index f6f22127..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/parent_block3.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"use" tag
---TEMPLATE--
-{% use 'file2.html.twig' %}
-{% use 'file1.html.twig' with foo %}
-{% block foo %}
-    {{- parent() -}}
-    Content of foo (second override)
-{% endblock foo %}
-{% block bar %}
-    {{- parent() -}}
-    Content of bar (second override)
-{% endblock bar %}
---TEMPLATE(file2.html.twig)--
-{% use 'file1.html.twig' %}
-{% block foo %}
-    {{- parent() -}}
-    Content of foo (first override)
-{% endblock foo %}
-{% block bar %}
-    {{- parent() -}}
-    Content of bar (first override)
-{% endblock bar %}
---TEMPLATE(file1.html.twig)--
-{% block foo -%}
-    Content of foo
-{% endblock foo %}
-{% block bar -%}
-    Content of bar
-{% endblock bar %}
---DATA--
-return []
---EXPECT--
-Content of foo
-Content of foo (first override)
-Content of foo (second override)
-Content of bar
-Content of bar (second override)
diff --git a/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test b/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test
deleted file mode 100644
index fad9a2d1..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/use/use_with_parent.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-"use" tag with a parent block
---TEMPLATE--
-{% extends "parent.twig" %}
-
-{% use 'blocks.twig' %}
-
-{% block body %}
-    {{ parent() -}}
-    CHILD
-    {{ block('content') }}
-{% endblock %}
---TEMPLATE(parent.twig)--
-{% block body %}
-    PARENT
-{% endblock %}
---TEMPLATE(blocks.twig)--
-{% block content 'BLOCK' %}
---DATA--
-return []
---EXPECT--
-PARENT
-CHILD
-    BLOCK
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test
deleted file mode 100644
index 9b60abc4..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/basic.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-{% verbatim %}
-{{ foo }}
-{% endverbatim %}
---DATA--
-return []
---EXPECT--
-{{ foo }}
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
deleted file mode 100644
index 2177538d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-{% verbatim %}
-{{ foo }}
-{% endraw %}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: Unexpected end of file: Unclosed "verbatim" block in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test b/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test
deleted file mode 100644
index 501922bd..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/verbatim/whitespace_control.test
+++ /dev/null
@@ -1,56 +0,0 @@
---TEST--
-"verbatim" tag
---TEMPLATE--
-1***
-
-{%- verbatim %}
-    {{ 'bla' }}
-{% endverbatim %}
-
-1***
-2***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{% endverbatim %}
-
-2***
-3***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{% endverbatim -%}
-
-3***
-4***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{%- endverbatim %}
-
-4***
-5***
-
-{%- verbatim -%}
-    {{ 'bla' }}
-{%- endverbatim -%}
-
-5***
---DATA--
-return []
---EXPECT--
-1***
-    {{ 'bla' }}
-
-
-1***
-2***{{ 'bla' }}
-
-
-2***
-3***{{ 'bla' }}
-3***
-4***{{ 'bla' }}
-
-4***
-5***{{ 'bla' }}5***
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/basic.test b/vendor/twig/twig/tests/Fixtures/tags/with/basic.test
deleted file mode 100644
index 7c2abd0f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/basic.test
+++ /dev/null
@@ -1,13 +0,0 @@
---TEST--
-"with" tag
---TEMPLATE--
-{% with %}
-    {% set bar = 'BAZ' %}
-    {{ foo }}{{ bar }}
-{% endwith %}
-{{ foo }}{{ bar }}
---DATA--
-return ['foo' => 'foo', 'bar' => 'bar']
---EXPECT--
-fooBAZ
-foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/expression.test b/vendor/twig/twig/tests/Fixtures/tags/with/expression.test
deleted file mode 100644
index e4433d44..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/expression.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with expression
---TEMPLATE--
-{% with {foo: 'foo', bar: 'BAZ'} %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['foo' => 'baz']
---EXPECT--
-fooBAZ
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/globals.test b/vendor/twig/twig/tests/Fixtures/tags/with/globals.test
deleted file mode 100644
index b030e7ef..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/globals.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag
---TEMPLATE--
-{% with [] only %}
-    {{ global }}
-{% endwith %}
---DATA--
-return []
---EXPECT--
-global
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test b/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test
deleted file mode 100644
index 1b0cbc63..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/iterable.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with an iterable expression
---TEMPLATE--
-{% with vars %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['vars' => new ArrayObject(['foo' => 'baz', 'bar' => 'qux'])]
---EXPECT--
-bazqux
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/nested.test b/vendor/twig/twig/tests/Fixtures/tags/with/nested.test
deleted file mode 100644
index 33ca390b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/nested.test
+++ /dev/null
@@ -1,15 +0,0 @@
---TEST--
-nested "with" tags
---TEMPLATE--
-{% set foo, bar = 'foo', 'bar' %}
-{% with {bar: 'BAZ'} %}
-    {% with {foo: 'FOO'} %}
-        {{ foo }}{{ bar }}
-    {% endwith %}
-{% endwith %}
-{{ foo }}{{ bar }}
---DATA--
-return []
---EXPECT--
-FOOBAZ
-    foobar
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test b/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test
deleted file mode 100644
index 7083050b..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/with_no_hash.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with an expression that is not a hash
---TEMPLATE--
-{% with vars %}
-    {{ foo }}{{ bar }}
-{% endwith %}
---DATA--
-return ['vars' => 'no-hash']
---EXCEPTION--
-Twig\Error\RuntimeError: Variables passed to the "with" tag must be a hash in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test b/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test
deleted file mode 100644
index 1aca34fc..00000000
--- a/vendor/twig/twig/tests/Fixtures/tags/with/with_only.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"with" tag with expression and only
---TEMPLATE--
-{% with {foo: 'foo', bar: 'BAZ'} only %}
-    {{ foo }}{{ bar }}{{ baz }}
-{% endwith %}
---DATA--
-return ['foo' => 'baz', 'baz' => 'baz']
---EXCEPTION--
-Twig\Error\RuntimeError: Variable "baz" does not exist in "index.twig" at line 3.
diff --git a/vendor/twig/twig/tests/Fixtures/tests/array.test b/vendor/twig/twig/tests/Fixtures/tests/array.test
deleted file mode 100644
index 7c9a6c80..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/array.test
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-array index test
---TEMPLATE--
-{% for key, value in days %}
-{{ key }}
-{% endfor %}
---DATA--
-return ['days' => [
-    1  => ['money' => 9],
-    2  => ['money' => 21],
-    3  => ['money' => 38],
-    4  => ['money' => 6],
-    18 => ['money' => 6],
-    19 => ['money' => 3],
-    31 => ['money' => 11],
-]]
---EXPECT--
-1
-2
-3
-4
-18
-19
-31
diff --git a/vendor/twig/twig/tests/Fixtures/tests/constant.test b/vendor/twig/twig/tests/Fixtures/tests/constant.test
deleted file mode 100644
index d4a9be77..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/constant.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"const" test
---TEMPLATE--
-{{ 8 is constant('E_NOTICE') ? 'ok' : 'no' }}
-{{ 'bar' is constant('Twig\\Tests\\TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }}
-{{ value is constant('Twig\\Tests\\TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }}
-{{ 2 is constant('ARRAY_AS_PROPS', object) ? 'ok' : 'no' }}
---DATA--
-return ['value' => 'bar', 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-ok
-ok
-ok
-ok
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined.test b/vendor/twig/twig/tests/Fixtures/tests/defined.test
deleted file mode 100644
index 1648c66f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined.test
+++ /dev/null
@@ -1,129 +0,0 @@
---TEST--
-"defined" test
---TEMPLATE--
-{{ definedVar                     is     defined ? 'ok' : 'ko' }}
-{{ definedVar                     is not defined ? 'ko' : 'ok' }}
-{{ undefinedVar                   is     defined ? 'ko' : 'ok' }}
-{{ undefinedVar                   is not defined ? 'ok' : 'ko' }}
-{{ zeroVar                        is     defined ? 'ok' : 'ko' }}
-{{ nullVar                        is     defined ? 'ok' : 'ko' }}
-{{ nested.definedVar              is     defined ? 'ok' : 'ko' }}
-{{ nested['definedVar']           is     defined ? 'ok' : 'ko' }}
-{{ nested.definedVar              is not defined ? 'ko' : 'ok' }}
-{{ nested.undefinedVar            is     defined ? 'ko' : 'ok' }}
-{{ nested['undefinedVar']         is     defined ? 'ko' : 'ok' }}
-{{ nested.undefinedVar            is not defined ? 'ok' : 'ko' }}
-{{ nested.zeroVar                 is     defined ? 'ok' : 'ko' }}
-{{ nested.nullVar                 is     defined ? 'ok' : 'ko' }}
-{{ nested.definedArray.0          is     defined ? 'ok' : 'ko' }}
-{{ nested['definedArray'][0]      is     defined ? 'ok' : 'ko' }}
-{{ object.foo                     is     defined ? 'ok' : 'ko' }}
-{{ object.undefinedMethod         is     defined ? 'ko' : 'ok' }}
-{{ object.getFoo()                is     defined ? 'ok' : 'ko' }}
-{{ object.getFoo('a')             is     defined ? 'ok' : 'ko' }}
-{{ object.undefinedMethod()       is     defined ? 'ko' : 'ok' }}
-{{ object.undefinedMethod('a')    is     defined ? 'ko' : 'ok' }}
-{{ object.self.foo                is     defined ? 'ok' : 'ko' }}
-{{ object.self.undefinedMethod    is     defined ? 'ko' : 'ok' }}
-{{ object.undefinedMethod.self    is     defined ? 'ko' : 'ok' }}
-{{ 0                              is     defined ? 'ok' : 'ko' }}
-{{ "foo"                          is     defined ? 'ok' : 'ko' }}
-{{ true                           is     defined ? 'ok' : 'ko' }}
-{{ false                          is     defined ? 'ok' : 'ko' }}
-{{ null                           is     defined ? 'ok' : 'ko' }}
-{{ [1, 2]                         is     defined ? 'ok' : 'ko' }}
-{{ { foo: "bar" }                 is     defined ? 'ok' : 'ko' }}
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'nullVar'    => null,
-    'nested'      => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'definedVar' => 'defined',
-    'zeroVar'    => 0,
-    'nullVar'    => null,
-    'nested'      => [
-        'definedVar'   => 'defined',
-        'zeroVar'      => 0,
-        'nullVar'      => null,
-        'definedArray' => [0],
-    ],
-    'object' => new Twig\Tests\TwigTestFoo(),
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test
deleted file mode 100644
index 5fd2fe3f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_attribute.test
+++ /dev/null
@@ -1,35 +0,0 @@
---TEST--
-"defined" support for attribute
---TEMPLATE--
-{{ attribute(nested, "definedVar")     is     defined ? 'ok' : 'ko' }}
-{{ attribute(nested, "undefinedVar")   is not defined ? 'ok' : 'ko' }}
-{{ attribute(nested, definedVarName)   is     defined ? 'ok' : 'ko' }}
-{{ attribute(nested, undefinedVarName) is not defined ? 'ok' : 'ko' }}
---DATA--
-return [
-    'nested' => [
-        'definedVar' => 'defined',
-    ],
-    'definedVarName' => 'definedVar',
-    'undefinedVarName' => 'undefinedVar',
-]
---EXPECT--
-ok
-ok
-ok
-ok
---DATA--
-return [
-    'nested' => [
-        'definedVar' => 'defined',
-    ],
-    'definedVarName' => 'definedVar',
-    'undefinedVarName' => 'undefinedVar',
-]
---CONFIG--
-return ['strict_variables' => false]
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test
deleted file mode 100644
index c8b90f8c..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks.test
+++ /dev/null
@@ -1,38 +0,0 @@
---TEST--
-"defined" support for blocks
---TEMPLATE--
-{% extends 'parent' %}
-{% block icon %}icon{% endblock %}
-{% block body %}
-    {{ parent() }}
-    {{ block('foo') is defined ? 'ok' : 'ko' }}
-    {{ block('footer') is defined ? 'ok' : 'ko' }}
-    {{ block('icon') is defined ? 'ok' : 'ko' }}
-    {{ block('block1') is defined ? 'ok' : 'ko' }}
-    {%- embed 'embed' %}
-        {% block content %}content{% endblock %}
-    {% endembed %}
-{% endblock %}
-{% use 'blocks' %}
---TEMPLATE(parent)--
-{% block body %}
-  {{ block('icon') is defined ? 'ok' : 'ko' -}}
-{% endblock %}
-{% block footer %}{% endblock %}
---TEMPLATE(embed)--
-{{ block('icon') is defined ? 'ok' : 'ko' }}
-{{ block('content') is defined ? 'ok' : 'ko' }}
-{{ block('block1') is defined ? 'ok' : 'ko' }}
---TEMPLATE(blocks)--
-{% block block1 %}{%endblock %}
---DATA--
-return []
---EXPECT--
-ok
-    ko
-    ok
-    ok
-    ok
-ko
-ok
-ko
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test
deleted file mode 100644
index 68540de7..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_blocks_with_template.test
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-"defined" support for blocks with a template argument
---TEMPLATE--
-{{ block('foo', 'included.twig') is defined ? 'ok' : 'ko' }}
-{{ block('foo', included_loaded) is defined ? 'ok' : 'ko' }}
-{{ block('foo', included_loaded_internal) is defined ? 'ok' : 'ko' }}
---TEMPLATE(included.twig)--
-{% block foo %}FOO{% endblock %}
---DATA--
-return [
-    'included_loaded' => $twig->load('included.twig'),
-    'included_loaded_internal' => $twig->load('included.twig'),
-]
---EXPECT--
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test b/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test
deleted file mode 100644
index 62172e4f..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_for_constants.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"defined" support for constants
---TEMPLATE--
-{{ constant('DATE_W3C') is defined ? 'ok' : 'ko' }}
-{{ constant('ARRAY_AS_PROPS', object) is defined ? 'ok' : 'ko' }}
-{{ constant('FOOBAR') is not defined ? 'ok' : 'ko' }}
-{{ constant('FOOBAR', object) is not defined ? 'ok' : 'ko' }}
---DATA--
-return ['expect' => DATE_W3C, 'object' => new \ArrayObject(['hi'])]
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test b/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test
deleted file mode 100644
index 2d061583..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/defined_on_complex_expr.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-"defined" support for "complex" expressions
---TEMPLATE--
-{{ (1 + 2) is defined ? 'ok' : 'ko' }}
---DATA--
-return []
---EXCEPTION--
-Twig\Error\SyntaxError: The "defined" test only works with simple variables in "index.twig" at line 2.
diff --git a/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test b/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test
deleted file mode 100644
index 41625f6a..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/dynamic_test.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-dynamic test
---TEMPLATE--
-{{ 'bar' is test_bar ? '1' :'0' }}
-{{ 'foo' is test_foo ? '1' :'0' }}
-{{ 'bar' is test_foo ? '1' :'0' }}
-{{ 'foo' is test_bar ? '1' :'0' }}
---DATA--
-return []
---EXPECT--
-1
-1
-0
-0
diff --git a/vendor/twig/twig/tests/Fixtures/tests/empty.test b/vendor/twig/twig/tests/Fixtures/tests/empty.test
deleted file mode 100644
index ffcd5187..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/empty.test
+++ /dev/null
@@ -1,54 +0,0 @@
---TEST--
-"empty" test
---TEMPLATE--
-{{ string_empty is empty ? 'ok' : 'ko' }}
-{{ string_zero is empty ? 'ko' : 'ok' }}
-{{ value_null is empty ? 'ok' : 'ko' }}
-{{ value_false is empty ? 'ok' : 'ko' }}
-{{ value_int_zero is empty ? 'ko' : 'ok' }}
-{{ array_empty is empty ? 'ok' : 'ko' }}
-{{ array_not_empty is empty ? 'ko' : 'ok' }}
-{{ magically_callable is empty ? 'ko' : 'ok' }}
-{{ countable_empty is empty ? 'ok' : 'ko' }}
-{{ countable_not_empty is empty ? 'ko' : 'ok' }}
-{{ tostring_empty is empty ? 'ok' : 'ko' }}
-{{ tostring_not_empty is empty ? 'ko' : 'ok' }}
-{{ markup_empty is empty ? 'ok' : 'ko' }}
-{{ markup_not_empty is empty ? 'ko' : 'ok' }}
-{{ iterator is empty ? 'ko' : 'ok' }}
-{{ empty_iterator is empty ? 'ok' : 'ko' }}
-{{ callback_iterator is empty ? 'ko' : 'ok' }}
-{{ empty_callback_iterator is empty ? 'ok' : 'ko' }}
---DATA--
-return [
-    'string_empty' => '', 'string_zero' => '0',
-    'value_null' => null, 'value_false' => false, 'value_int_zero' => 0,
-    'array_empty' => [], 'array_not_empty' => [1, 2],
-    'magically_callable' => new \Twig\Tests\MagicCallStub(),
-    'countable_empty' => new \Twig\Tests\CountableStub([]), 'countable_not_empty' => new \Twig\Tests\CountableStub([1, 2]),
-    'tostring_empty' => new \Twig\Tests\ToStringStub(''), 'tostring_not_empty' => new \Twig\Tests\ToStringStub('0' /* edge case of using "0" as the string */),
-    'markup_empty' => new \Twig\Markup('', 'UTF-8'), 'markup_not_empty' => new \Twig\Markup('test', 'UTF-8'),
-    'iterator' => $iter = new \ArrayIterator(['bar', 'foo']),
-    'empty_iterator' => new \ArrayIterator(),
-    'callback_iterator' => new \CallbackFilterIterator($iter, function ($el) { return true; }),
-    'empty_callback_iterator' => new \CallbackFilterIterator($iter, function ($el) { return false; }),
-]
---EXPECT--
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/even.test b/vendor/twig/twig/tests/Fixtures/tests/even.test
deleted file mode 100644
index 5c73b01e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/even.test
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-"even" test
---TEMPLATE--
-{{ 1 is even ? 'ko' : 'ok' }}
-{{ 2 is even ? 'ok' : 'ko' }}
-{{ 1 is not even ? 'ok' : 'ko' }}
-{{ 2 is not even ? 'ko' : 'ok' }}
---DATA--
-return []
---EXPECT--
-ok
-ok
-ok
-ok
diff --git a/vendor/twig/twig/tests/Fixtures/tests/in.test b/vendor/twig/twig/tests/Fixtures/tests/in.test
deleted file mode 100644
index f7b172e8..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/in.test
+++ /dev/null
@@ -1,118 +0,0 @@
---TEST--
-Twig supports the in operator
---TEMPLATE--
-{{ bar in foo ? 'OK' : 'KO' }}
-{{ not (bar in foo) ? 'KO' : 'OK' }}
-{{ bar not in foo ? 'KO' : 'OK' }}
-{{ 'a' in bar ? 'OK' : 'KO' }}
-{{ 'c' not in bar ? 'OK' : 'KO' }}
-{{ '' in bar ? 'OK' : 'KO' }}
-{{ '' in '' ? 'OK' : 'KO' }}
-{{ '0' not in '' ? 'OK' : 'KO' }}
-{{ 'a' not in '0' ? 'OK' : 'KO' }}
-{{ '0' in '0' ? 'OK' : 'KO' }}
-
-{{ false in [0, 1] ? 'OK' : 'KO' }}
-{{ true in [0, 1] ? 'OK' : 'KO' }}
-{{ '0' in [0, 1] ? 'OK' : 'KO' }}
-{{ '0' in [1, 0] ? 'OK' : 'KO' }}
-{{ '' in [0, 1] ? 'OK' : 'KO' }}
-{{ '' in [1, 0] ? 'OK' : 'KO' }}
-{{ 0 in ['', 1] ? 'OK' : 'KO' }}
-{{ 0 in [1, ''] ? 'OK' : 'KO' }}
-
-{{ '' in 'foo' ? 'OK' : 'KO' }}
-{{ 0 in 'foo' ? 'KO' : 'OK' }}
-{{ false in 'foo' ? 'KO' : 'OK' }}
-{{ false in '100' ? 'KO' : 'OK' }}
-{{ true in '100' ? 'KO' : 'OK' }}
-
-{{ [] in [true, false] ? 'OK' : 'KO' }}
-{{ [] in [true, ''] ? 'KO' : 'OK' }}
-{{ [] in [true, []] ? 'OK' : 'KO' }}
-
-{{ resource ? 'OK' : 'KO' }}
-{{ resource in 'foo'~resource ? 'KO' : 'OK' }}
-{{ object in 'stdClass' ? 'KO' : 'OK' }}
-{{ [] in 'Array' ? 'KO' : 'OK' }}
-{{ dir_object in 'foo'~dir_object ? 'KO' : 'OK' }}
-
-{{ ''~resource in resource ? 'KO' : 'OK' }}
-{{ 'stdClass' in object ? 'KO' : 'OK' }}
-{{ 'Array' in [] ? 'KO' : 'OK' }}
-{{ ''~dir_object in dir_object ? 'KO' : 'OK' }}
-
-{{ resource in [''~resource] ? 'KO' : 'OK' }}
-{{ resource in [resource + 1 - 1] ? 'KO' : 'OK' }}
-{{ dir_object in [''~dir_object] ? 'KO' : 'OK' }}
-
-{{ 5 in 125 ? 'KO' : 'OK' }}
-{{ 5 in '125' ? 'OK' : 'KO' }}
-{{ '5' in 125 ? 'KO' : 'OK' }}
-{{ '5' in '125' ? 'OK' : 'KO' }}
-
-{{ 5.5 in 125.5 ? 'KO' : 'OK' }}
-{{ 5.5 in '125.5' ? 'OK' : 'KO' }}
-{{ '5.5' in 125.5 ? 'KO' : 'OK' }}
-
-{{ safe in ['foo', 'bar'] ? 'OK' : 'KO' }}
-{{ 'fo' in safe ? 'OK' : 'KO' }}
---DATA--
-return ['bar' => 'bar', 'foo' => ['bar' => 'bar'], 'dir_object' => new \SplFileInfo(dirname(__FILE__)), 'object' => new \stdClass(), 'resource' => opendir(dirname(__FILE__)), 'safe' => new \Twig\Markup('foo', 'UTF-8')]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
-OK
-OK
-
-OK
-OK
-OK
-
-OK
-OK
diff --git a/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test b/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test
deleted file mode 100644
index 1f9fc639..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/in_with_objects.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-Twig supports the in operator when using objects
---TEMPLATE--
-{% if object in object_list %}
-TRUE
-{% endif %}
---DATA--
-$foo = new Twig\Tests\TwigTestFoo();
-$foo1 = new Twig\Tests\TwigTestFoo();
-
-$foo->position = $foo1;
-$foo1->position = $foo;
-
-return [
-    'object'      => $foo,
-    'object_list' => [$foo1, $foo],
-]
---EXPECT--
-TRUE
diff --git a/vendor/twig/twig/tests/Fixtures/tests/iterable.test b/vendor/twig/twig/tests/Fixtures/tests/iterable.test
deleted file mode 100644
index 75b5756e..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/iterable.test
+++ /dev/null
@@ -1,19 +0,0 @@
---TEST--
-"iterable" test
---TEMPLATE--
-{{ foo is iterable ? 'ok' : 'ko' }}
-{{ traversable is iterable ? 'ok' : 'ko' }}
-{{ obj is iterable ? 'ok' : 'ko' }}
-{{ val is iterable ? 'ok' : 'ko' }}
---DATA--
-return [
-    'foo' => [],
-    'traversable' => new \ArrayIterator([]),
-    'obj' => new \stdClass(),
-    'val' => 'test',
-]
---EXPECT--
-ok
-ok
-ko
-ko
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test b/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test
deleted file mode 100644
index 7af3255d..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/null_coalesce.test
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-Twig supports the ?? operator
---TEMPLATE--
-{{ 'OK' ?? 'KO' }}
-{{ null ?? 'OK' }}
-{{ bar ?? 'KO' }}
-{{ baz ?? 'OK' }}
-{{ foo.bar ?? 'KO' }}
-{{ foo.missing ?? 'OK' }}
-{{ foo.bar.baz.missing ?? 'OK' }}
-{{ foo['bar'] ?? 'KO' }}
-{{ foo['missing'] ?? 'OK' }}
-{{ nope ?? nada ?? 'OK' }}
-{{ 1 + nope ?? nada ?? 2 }}
-{{ 1 + nope ?? 3 + nada ?? 2 }}
---DATA--
-return ['bar' => 'OK', 'foo' => ['bar' => 'OK']]
---EXPECT--
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-3
-6
diff --git a/vendor/twig/twig/tests/Fixtures/tests/odd.test b/vendor/twig/twig/tests/Fixtures/tests/odd.test
deleted file mode 100644
index ec88bb51..00000000
--- a/vendor/twig/twig/tests/Fixtures/tests/odd.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-"odd" test
---TEMPLATE--
-{{ 1 is odd ? 'ok' : 'ko' }}
-{{ 2 is odd ? 'ko' : 'ok' }}
---DATA--
-return []
---EXPECT--
-ok
-ok
\ No newline at end of file
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test
deleted file mode 100644
index 346a1107..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_block.test
+++ /dev/null
@@ -1,68 +0,0 @@
---TEST--
-Whitespace trimming on tags.
---TEMPLATE--
-Trim on control tag:
-{% for i in range(1, 9) -%}
-	{{ i }}
-{%- endfor %}
-
-
-Trim on output tag:
-{% for i in range(1, 9) %}
-	{{- i -}}
-{% endfor %}
-
-
-Trim comments:
-      
-{#- Invisible -#}
-       
-After the comment.
-
-Trim leading space:
-{% if leading %}
-
-		{{- leading }}
-{% endif %}
-
-{%- if leading %}
-	{{- leading }}
-
-{%- endif %}
-
-
-Trim trailing space:
-{% if trailing -%}          
-	{{ trailing -}}
-
-{% endif -%}
-
-Combined:
-
-{%- if both -%}
-<ul>
-	<li>    {{- both -}}   </li>
-</ul>
-
-{%- endif -%}
-
-end
---DATA--
-return ['leading' => 'leading space', 'trailing' => 'trailing space', 'both' => 'both']
---EXPECT--
-Trim on control tag:
-123456789
-
-Trim on output tag:
-123456789
-
-Trim comments:After the comment.
-
-Trim leading space:
-leading space
-leading space
-
-Trim trailing space:
-trailing spaceCombined:<ul>
-	<li>both</li>
-</ul>end
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test
deleted file mode 100644
index a58818dd..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_delimiter_as_strings.test
+++ /dev/null
@@ -1,10 +0,0 @@
---TEST--
-Whitespace trimming as strings.
---TEMPLATE--
-{{ 5 * '{#-'|length }}
-{{ '{{-'|length * 5 + '{%-'|length }}
---DATA--
-return []
---EXPECT--
-15
-18
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test
deleted file mode 100644
index 75d0f803..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_left.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-Whitespace trimming on tags (left side).
---TEMPLATE--
-**{% if true %}
-foo
-    
-    	    {%- endif %}**
-
-**
-
-	    {{- 'foo' }}**
-
-**
-    
-	
-{#- comment #}**
-
-**{% verbatim %}
-foo
-    
-    	    {%- endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo**
-
-**foo**
-
-****
-
-**
-foo**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test
deleted file mode 100644
index e5e845f0..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_left.test
+++ /dev/null
@@ -1,33 +0,0 @@
---TEST--
-Line whitespace trimming on tags (left side).
---TEMPLATE--
-**{% if true %}
-foo
-    	    {%~ endif %}**
-
-**
-	    {{~ 'foo' }}**
-
-**
-	{#~ comment #}**
-
-**{% verbatim %}
-foo
-    
-    	    {%~ endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo
-**
-
-**
-foo**
-
-**
-**
-
-**
-foo
-    
-**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test
deleted file mode 100644
index e7b510c8..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_line_right.test
+++ /dev/null
@@ -1,32 +0,0 @@
---TEST--
-Line whitespace trimming on tags (right side).
---TEMPLATE--
-**{% if true ~%}    	    
-foo{% endif %}**
-
-**{{ 'foo' ~}}    	    
-foo
-**
-
-**{# comment ~#}	    
-	foo
-**
-
-**{% verbatim ~%}	    
-    foo{% endverbatim %}**
---DATA--
-return []
---EXPECT--
-**
-foo**
-
-**foo
-foo
-**
-
-**
-	foo
-**
-
-**
-    foo**
diff --git a/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test b/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test
deleted file mode 100644
index 0ec3b0ce..00000000
--- a/vendor/twig/twig/tests/Fixtures/whitespace/trim_right.test
+++ /dev/null
@@ -1,28 +0,0 @@
---TEST--
-Whitespace trimming on tags (right side).
---TEMPLATE--
-**{% if true -%}
-    
-    	    foo{% endif %}**
-
-**{{ 'foo' -}}
-	    
-**
-
-**{# comment -#}    
-	
-**
-
-**{% verbatim -%}    
-    	    
-foo{% endverbatim %}**
---DATA--
-return []
---EXPECT--
-**foo**
-
-**foo**
-
-****
-
-**foo**
diff --git a/vendor/twig/twig/tests/IntegrationTest.php b/vendor/twig/twig/tests/IntegrationTest.php
deleted file mode 100644
index 243aadb2..00000000
--- a/vendor/twig/twig/tests/IntegrationTest.php
+++ /dev/null
@@ -1,386 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\AbstractExtension;
-use Twig\Extension\DebugExtension;
-use Twig\Extension\SandboxExtension;
-use Twig\Extension\StringLoaderExtension;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\PrintNode;
-use Twig\Sandbox\SecurityPolicy;
-use Twig\Test\IntegrationTestCase;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TwigFilter;
-use Twig\TwigFunction;
-use Twig\TwigTest;
-
-// This function is defined to check that escaping strategies
-// like html works even if a function with the same name is defined.
-function html()
-{
-    return 'foo';
-}
-
-class IntegrationTest extends IntegrationTestCase
-{
-    public function getExtensions()
-    {
-        $policy = new SecurityPolicy([], [], [], [], ['dump']);
-
-        return [
-            new DebugExtension(),
-            new SandboxExtension($policy, false),
-            new StringLoaderExtension(),
-            new TwigTestExtension(),
-        ];
-    }
-
-    public function getFixturesDir()
-    {
-        return __DIR__.'/Fixtures/';
-    }
-}
-
-function test_foo($value = 'foo')
-{
-    return $value;
-}
-
-class TwigTestFoo implements \Iterator
-{
-    const BAR_NAME = 'bar';
-
-    public $position = 0;
-    public $array = [1, 2];
-
-    public function bar($param1 = null, $param2 = null)
-    {
-        return 'bar'.($param1 ? '_'.$param1 : '').($param2 ? '-'.$param2 : '');
-    }
-
-    public function getFoo()
-    {
-        return 'foo';
-    }
-
-    public function getSelf()
-    {
-        return $this;
-    }
-
-    public function is()
-    {
-        return 'is';
-    }
-
-    public function in()
-    {
-        return 'in';
-    }
-
-    public function not()
-    {
-        return 'not';
-    }
-
-    public function strToLower($value)
-    {
-        return strtolower($value);
-    }
-
-    public function rewind()
-    {
-        $this->position = 0;
-    }
-
-    public function current()
-    {
-        return $this->array[$this->position];
-    }
-
-    public function key()
-    {
-        return 'a';
-    }
-
-    public function next()
-    {
-        ++$this->position;
-    }
-
-    public function valid()
-    {
-        return isset($this->array[$this->position]);
-    }
-}
-
-class TwigTestTokenParser_§ extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new PrintNode(new ConstantExpression('§', -1), -1);
-    }
-
-    public function getTag()
-    {
-        return '§';
-    }
-}
-
-class TwigTestExtension extends AbstractExtension
-{
-    public function getTokenParsers()
-    {
-        return [
-            new TwigTestTokenParser_§(),
-        ];
-    }
-
-    public function getFilters()
-    {
-        return [
-            new TwigFilter('§', [$this, '§Filter']),
-            new TwigFilter('escape_and_nl2br', [$this, 'escape_and_nl2br'], ['needs_environment' => true, 'is_safe' => ['html']]),
-            new TwigFilter('nl2br', [$this, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]),
-            new TwigFilter('escape_something', [$this, 'escape_something'], ['is_safe' => ['something']]),
-            new TwigFilter('preserves_safety', [$this, 'preserves_safety'], ['preserves_safety' => ['html']]),
-            new TwigFilter('static_call_string', 'Twig\Tests\TwigTestExtension::staticCall'),
-            new TwigFilter('static_call_array', ['Twig\Tests\TwigTestExtension', 'staticCall']),
-            new TwigFilter('magic_call', [$this, 'magicCall']),
-            new TwigFilter('magic_call_string', 'Twig\Tests\TwigTestExtension::magicStaticCall'),
-            new TwigFilter('magic_call_array', ['Twig\Tests\TwigTestExtension', 'magicStaticCall']),
-            new TwigFilter('*_path', [$this, 'dynamic_path']),
-            new TwigFilter('*_foo_*_bar', [$this, 'dynamic_foo']),
-        ];
-    }
-
-    public function getFunctions()
-    {
-        return [
-            new TwigFunction('§', [$this, '§Function']),
-            new TwigFunction('safe_br', [$this, 'br'], ['is_safe' => ['html']]),
-            new TwigFunction('unsafe_br', [$this, 'br']),
-            new TwigFunction('static_call_string', 'Twig\Tests\TwigTestExtension::staticCall'),
-            new TwigFunction('static_call_array', ['Twig\Tests\TwigTestExtension', 'staticCall']),
-            new TwigFunction('*_path', [$this, 'dynamic_path']),
-            new TwigFunction('*_foo_*_bar', [$this, 'dynamic_foo']),
-        ];
-    }
-
-    public function getTests()
-    {
-        return [
-            new TwigTest('multi word', [$this, 'is_multi_word']),
-            new TwigTest('test_*', [$this, 'dynamic_test']),
-        ];
-    }
-
-    public function §Filter($value)
-    {
-        return "§{$value}§";
-    }
-
-    public function §Function($value)
-    {
-        return "§{$value}§";
-    }
-
-    /**
-     * nl2br which also escapes, for testing escaper filters.
-     */
-    public function escape_and_nl2br($env, $value, $sep = '<br />')
-    {
-        return $this->nl2br(twig_escape_filter($env, $value, 'html'), $sep);
-    }
-
-    /**
-     * nl2br only, for testing filters with pre_escape.
-     */
-    public function nl2br($value, $sep = '<br />')
-    {
-        // not secure if $value contains html tags (not only entities)
-        // don't use
-        return str_replace("\n", "$sep\n", $value);
-    }
-
-    public function dynamic_path($element, $item)
-    {
-        return $element.'/'.$item;
-    }
-
-    public function dynamic_foo($foo, $bar, $item)
-    {
-        return $foo.'/'.$bar.'/'.$item;
-    }
-
-    public function dynamic_test($element, $item)
-    {
-        return $element === $item;
-    }
-
-    public function escape_something($value)
-    {
-        return strtoupper($value);
-    }
-
-    public function preserves_safety($value)
-    {
-        return strtoupper($value);
-    }
-
-    public static function staticCall($value)
-    {
-        return "*$value*";
-    }
-
-    public function br()
-    {
-        return '<br />';
-    }
-
-    public function is_multi_word($value)
-    {
-        return false !== strpos($value, ' ');
-    }
-
-    public function __call($method, $arguments)
-    {
-        if ('magicCall' !== $method) {
-            throw new \BadMethodCallException('Unexpected call to __call');
-        }
-
-        return 'magic_'.$arguments[0];
-    }
-
-    public static function __callStatic($method, $arguments)
-    {
-        if ('magicStaticCall' !== $method) {
-            throw new \BadMethodCallException('Unexpected call to __callStatic');
-        }
-
-        return 'static_magic_'.$arguments[0];
-    }
-}
-
-/**
- * This class is used in tests for the "length" filter and "empty" test. It asserts that __call is not
- * used to convert such objects to strings.
- */
-class MagicCallStub
-{
-    public function __call($name, $args)
-    {
-        throw new \Exception('__call shall not be called');
-    }
-}
-
-class ToStringStub
-{
-    /**
-     * @var string
-     */
-    private $string;
-
-    public function __construct($string)
-    {
-        $this->string = $string;
-    }
-
-    public function __toString()
-    {
-        return $this->string;
-    }
-}
-
-/**
- * This class is used in tests for the length filter and empty test to show
- * that when \Countable is implemented, it is preferred over the __toString()
- * method.
- */
-class CountableStub implements \Countable
-{
-    private $count;
-
-    public function __construct($count)
-    {
-        $this->count = $count;
-    }
-
-    public function count()
-    {
-        return $this->count;
-    }
-
-    public function __toString()
-    {
-        throw new \Exception('__toString shall not be called on \Countables');
-    }
-}
-
-/**
- * This class is used in tests for the length filter.
- */
-class IteratorAggregateStub implements \IteratorAggregate
-{
-    private $data;
-
-    public function __construct(array $data)
-    {
-        $this->data = $data;
-    }
-
-    public function getIterator()
-    {
-        return new \ArrayIterator($this->data);
-    }
-}
-
-class SimpleIteratorForTesting implements \Iterator
-{
-    private $data = [1, 2, 3, 4, 5, 6, 7];
-    private $key = 0;
-
-    public function current()
-    {
-        return $this->key;
-    }
-
-    public function next()
-    {
-        ++$this->key;
-    }
-
-    public function key()
-    {
-        return $this->key;
-    }
-
-    public function valid()
-    {
-        return isset($this->data[$this->key]);
-    }
-
-    public function rewind()
-    {
-        $this->key = 0;
-    }
-
-    public function __toString()
-    {
-        // for testing, make sure string length returned is not the same as the `iterator_count`
-        return str_repeat('X', iterator_count($this) + 10);
-    }
-}
diff --git a/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test
deleted file mode 100644
index d25f75e8..00000000
--- a/vendor/twig/twig/tests/LegacyFixtures/autoescape/filename.legacy.test
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-"filename" autoescape strategy
---TEMPLATE--
-{{ br -}}
-{{ include('index.html.twig') -}}
-{{ include('index.txt.twig') -}}
---TEMPLATE(index.html.twig)--
-{{ br -}}
---TEMPLATE(index.txt.twig)--
-{{ br -}}
---DATA--
-return ['br' => '<br />']
---CONFIG--
-return ['autoescape' => 'filename']
---EXPECT--
-&lt;br /&gt;
-&lt;br /&gt;
-<br />
diff --git a/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test
deleted file mode 100644
index e52c3b25..00000000
--- a/vendor/twig/twig/tests/LegacyFixtures/functions/undefined_block.legacy.test
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-"block" function with undefined block
---TEMPLATE--
-{% extends "base.twig" %}
-{% block foo %}{{ parent() }}{{ block('unknown') }}{{ block('bar') }}{% endblock %}
---TEMPLATE(base.twig)--
-{% block foo %}Foo{% endblock %}
-{% block bar %}Bar{% endblock %}
---DATA--
-return []
---EXPECT--
-FooBarBar
diff --git a/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test b/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test
deleted file mode 100644
index 4bd1f6ac..00000000
--- a/vendor/twig/twig/tests/LegacyFixtures/test.legacy.test
+++ /dev/null
@@ -1,8 +0,0 @@
---TEST--
-Old test classes usage
---TEMPLATE--
-{{ 'foo' is multi word ? 'yes' : 'no' }}
---DATA--
-return []
---EXPECT--
-no
diff --git a/vendor/twig/twig/tests/LegacyIntegrationTest.php b/vendor/twig/twig/tests/LegacyIntegrationTest.php
deleted file mode 100644
index db556f31..00000000
--- a/vendor/twig/twig/tests/LegacyIntegrationTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Extension\AbstractExtension;
-use Twig\Test\IntegrationTestCase;
-
-class LegacyIntegrationTest extends IntegrationTestCase
-{
-    public function getExtensions()
-    {
-        return [
-            new LegacyTwigTestExtension(),
-        ];
-    }
-
-    public function getFixturesDir()
-    {
-        return __DIR__.'/LegacyFixtures/';
-    }
-
-    public function getTests($name, $legacyTests = false)
-    {
-        if (!$legacyTests) {
-            return [['', '', '', [], '', []]];
-        }
-
-        return parent::getTests($name, true);
-    }
-}
-
-class LegacyTwigTestExtension extends AbstractExtension
-{
-    public function getTests()
-    {
-        return [
-            'multi word' => new \Twig_Test_Method($this, 'is_multi_word'),
-        ];
-    }
-
-    public function is_multi_word($value)
-    {
-        return false !== strpos($value, ' ');
-    }
-
-    public function getName()
-    {
-        return 'legacy_integration_test';
-    }
-}
diff --git a/vendor/twig/twig/tests/LexerTest.php b/vendor/twig/twig/tests/LexerTest.php
deleted file mode 100644
index 8bd2de5c..00000000
--- a/vendor/twig/twig/tests/LexerTest.php
+++ /dev/null
@@ -1,378 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Lexer;
-use Twig\Source;
-use Twig\Token;
-
-class LexerTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testLegacyConstructorSignature()
-    {
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize('{{ foo }}', 'foo');
-        $this->assertEquals('foo', $stream->getFilename());
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-    }
-
-    public function testNameLabelForTag()
-    {
-        $template = '{% § %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $this->assertSame('§', $stream->expect(Token::NAME_TYPE)->getValue());
-    }
-
-    public function testNameLabelForFunction()
-    {
-        $template = '{{ §() }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $stream->expect(Token::VAR_START_TYPE);
-        $this->assertSame('§', $stream->expect(Token::NAME_TYPE)->getValue());
-    }
-
-    public function testBracketsNesting()
-    {
-        $template = '{{ {"a":{"b":"c"}} }}';
-
-        $this->assertEquals(2, $this->countToken($template, Token::PUNCTUATION_TYPE, '{'));
-        $this->assertEquals(2, $this->countToken($template, Token::PUNCTUATION_TYPE, '}'));
-    }
-
-    protected function countToken($template, $type, $value = null)
-    {
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        $count = 0;
-        while (!$stream->isEOF()) {
-            $token = $stream->next();
-            if ($type === $token->getType()) {
-                if (null === $value || $value === $token->getValue()) {
-                    ++$count;
-                }
-            }
-        }
-
-        return $count;
-    }
-
-    public function testLineDirective()
-    {
-        $template = "foo\n"
-            ."bar\n"
-            ."{% line 10 %}\n"
-            ."{{\n"
-            ."baz\n"
-            ."}}\n";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        // foo\nbar\n
-        $this->assertSame(1, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // \n (after {% line %})
-        $this->assertSame(10, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // {{
-        $this->assertSame(11, $stream->expect(Token::VAR_START_TYPE)->getLine());
-        // baz
-        $this->assertSame(12, $stream->expect(Token::NAME_TYPE)->getLine());
-    }
-
-    public function testLineDirectiveInline()
-    {
-        $template = "foo\n"
-            ."bar{% line 10 %}{{\n"
-            ."baz\n"
-            ."}}\n";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-
-        // foo\nbar
-        $this->assertSame(1, $stream->expect(Token::TEXT_TYPE)->getLine());
-        // {{
-        $this->assertSame(10, $stream->expect(Token::VAR_START_TYPE)->getLine());
-        // baz
-        $this->assertSame(11, $stream->expect(Token::NAME_TYPE)->getLine());
-    }
-
-    public function testLongComments()
-    {
-        $template = '{# '.str_repeat('*', 100000).' #}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongVerbatim()
-    {
-        $template = '{% verbatim %}'.str_repeat('*', 100000).'{% endverbatim %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongVar()
-    {
-        $template = '{{ '.str_repeat('x', 100000).' }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testLongBlock()
-    {
-        $template = '{% '.str_repeat('x', 100000).' %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testBigNumbers()
-    {
-        $template = '{{ 922337203685477580700 }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->next();
-        $node = $stream->next();
-        $this->assertEquals('922337203685477580700', $node->getValue());
-    }
-
-    public function testStringWithEscapedDelimiter()
-    {
-        $tests = [
-            "{{ 'foo \' bar' }}" => 'foo \' bar',
-            '{{ "foo \" bar" }}' => 'foo " bar',
-        ];
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        foreach ($tests as $template => $expected) {
-            $stream = $lexer->tokenize(new Source($template, 'index'));
-            $stream->expect(Token::VAR_START_TYPE);
-            $stream->expect(Token::STRING_TYPE, $expected);
-
-            // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-            // can be executed without throwing any exceptions
-            $this->addToAssertionCount(1);
-        }
-    }
-
-    public function testStringWithInterpolation()
-    {
-        $template = 'foo {{ "bar #{ baz + 1 }" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::TEXT_TYPE, 'foo ');
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'baz');
-        $stream->expect(Token::OPERATOR_TYPE, '+');
-        $stream->expect(Token::NUMBER_TYPE, '1');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithEscapedInterpolation()
-    {
-        $template = '{{ "bar \#{baz+1}" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar #{baz+1}');
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithHash()
-    {
-        $template = '{{ "bar # baz" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar # baz');
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithUnterminatedInterpolation()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed """');
-
-        $template = '{{ "bar #{x" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testStringWithNestedInterpolations()
-    {
-        $template = '{{ "bar #{ "foo#{bar}" }" }}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'foo');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'bar');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::VAR_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testStringWithNestedInterpolationsInBlock()
-    {
-        $template = '{% foo "bar #{ "foo#{bar}" }" %}';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'foo');
-        $stream->expect(Token::STRING_TYPE, 'bar ');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::STRING_TYPE, 'foo');
-        $stream->expect(Token::INTERPOLATION_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'bar');
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::INTERPOLATION_END_TYPE);
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testOperatorEndingWithALetterAtTheEndOfALine()
-    {
-        $template = "{{ 1 and\n0}}";
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::NUMBER_TYPE, 1);
-        $stream->expect(Token::OPERATOR_TYPE, 'and');
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-
-    public function testUnterminatedVariable()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed "variable" in "index" at line 3');
-
-        $template = '
-
-{{
-
-bar
-
-
-';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testUnterminatedBlock()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unclosed "block" in "index" at line 3');
-
-        $template = '
-
-{%
-
-bar
-
-
-';
-
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $lexer->tokenize(new Source($template, 'index'));
-    }
-
-    public function testOverridingSyntax()
-    {
-        $template = '[# comment #]{# variable #}/# if true #/true/# endif #/';
-        $lexer = new Lexer(new Environment($this->createMock('\Twig\Loader\LoaderInterface')), [
-            'tag_comment' => ['[#', '#]'],
-            'tag_block' => ['/#', '#/'],
-            'tag_variable' => ['{#', '#}'],
-        ]);
-        $stream = $lexer->tokenize(new Source($template, 'index'));
-        $stream->expect(Token::VAR_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'variable');
-        $stream->expect(Token::VAR_END_TYPE);
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'if');
-        $stream->expect(Token::NAME_TYPE, 'true');
-        $stream->expect(Token::BLOCK_END_TYPE);
-        $stream->expect(Token::TEXT_TYPE, 'true');
-        $stream->expect(Token::BLOCK_START_TYPE);
-        $stream->expect(Token::NAME_TYPE, 'endif');
-        $stream->expect(Token::BLOCK_END_TYPE);
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without throwing any exceptions
-        $this->addToAssertionCount(1);
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/ArrayTest.php b/vendor/twig/twig/tests/Loader/ArrayTest.php
deleted file mode 100644
index ab670b58..00000000
--- a/vendor/twig/twig/tests/Loader/ArrayTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Loader\ArrayLoader;
-
-class ArrayTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testGetSource()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $this->assertEquals('bar', $loader->getSource('foo'));
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetSourceWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getSource('foo');
-    }
-
-    public function testGetSourceContextWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getSourceContext('foo');
-    }
-
-    public function testGetCacheKey()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-    }
-
-    public function testGetCacheKeyWhenTemplateHasDuplicateContent()
-    {
-        $loader = new ArrayLoader([
-            'foo' => 'bar',
-            'baz' => 'bar',
-        ]);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-        $this->assertEquals('baz:bar', $loader->getCacheKey('baz'));
-    }
-
-    public function testGetCacheKeyIsProtectedFromEdgeCollisions()
-    {
-        $loader = new ArrayLoader([
-            'foo__' => 'bar',
-            'foo' => '__bar',
-        ]);
-
-        $this->assertEquals('foo__:bar', $loader->getCacheKey('foo__'));
-        $this->assertEquals('foo:__bar', $loader->getCacheKey('foo'));
-    }
-
-    public function testGetCacheKeyWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->getCacheKey('foo');
-    }
-
-    public function testSetTemplate()
-    {
-        $loader = new ArrayLoader([]);
-        $loader->setTemplate('foo', 'bar');
-
-        $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode());
-    }
-
-    public function testIsFresh()
-    {
-        $loader = new ArrayLoader(['foo' => 'bar']);
-        $this->assertTrue($loader->isFresh('foo', time()));
-    }
-
-    public function testIsFreshWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ArrayLoader([]);
-
-        $loader->isFresh('foo', time());
-    }
-
-    public function testTemplateReference()
-    {
-        $name = new Twig_Test_Loader_TemplateReference('foo');
-        $loader = new ArrayLoader(['foo' => 'bar']);
-
-        $loader->getCacheKey($name);
-        $loader->getSourceContext($name);
-        $loader->isFresh($name, time());
-        $loader->setTemplate($name, 'foo:bar');
-
-        // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above
-        // can be executed without crashing PHP
-        $this->addToAssertionCount(1);
-    }
-}
-
-class Twig_Test_Loader_TemplateReference
-{
-    private $name;
-
-    public function __construct($name)
-    {
-        $this->name = $name;
-    }
-
-    public function __toString()
-    {
-        return $this->name;
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/ChainTest.php b/vendor/twig/twig/tests/Loader/ChainTest.php
deleted file mode 100644
index d89e2cc2..00000000
--- a/vendor/twig/twig/tests/Loader/ChainTest.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\ChainLoader;
-use Twig\Loader\ExistsLoaderInterface;
-use Twig\Loader\FilesystemLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Source;
-
-class ChainTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testGetSource()
-    {
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['foo' => 'foobar', 'bar' => 'foo']),
-        ]);
-
-        $this->assertEquals('bar', $loader->getSource('foo'));
-        $this->assertEquals('foo', $loader->getSource('bar'));
-    }
-
-    public function testGetSourceContext()
-    {
-        $path = __DIR__.'/../Fixtures';
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['errors/index.html' => 'baz']),
-            new FilesystemLoader([$path]),
-        ]);
-
-        $this->assertEquals('foo', $loader->getSourceContext('foo')->getName());
-        $this->assertSame('', $loader->getSourceContext('foo')->getPath());
-
-        $this->assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName());
-        $this->assertSame('', $loader->getSourceContext('errors/index.html')->getPath());
-        $this->assertEquals('baz', $loader->getSourceContext('errors/index.html')->getCode());
-
-        $this->assertEquals('errors/base.html', $loader->getSourceContext('errors/base.html')->getName());
-        $this->assertEquals(realpath($path.'/errors/base.html'), realpath($loader->getSourceContext('errors/base.html')->getPath()));
-        $this->assertNotEquals('baz', $loader->getSourceContext('errors/base.html')->getCode());
-    }
-
-    public function testGetSourceContextWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getSourceContext('foo');
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetSourceWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getSource('foo');
-    }
-
-    public function testGetCacheKey()
-    {
-        $loader = new ChainLoader([
-            new ArrayLoader(['foo' => 'bar']),
-            new ArrayLoader(['foo' => 'foobar', 'bar' => 'foo']),
-        ]);
-
-        $this->assertEquals('foo:bar', $loader->getCacheKey('foo'));
-        $this->assertEquals('bar:foo', $loader->getCacheKey('bar'));
-    }
-
-    public function testGetCacheKeyWhenTemplateDoesNotExist()
-    {
-        $this->expectException('\Twig\Error\LoaderError');
-
-        $loader = new ChainLoader([]);
-
-        $loader->getCacheKey('foo');
-    }
-
-    public function testAddLoader()
-    {
-        $loader = new ChainLoader();
-        $loader->addLoader(new ArrayLoader(['foo' => 'bar']));
-
-        $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode());
-    }
-
-    public function testExists()
-    {
-        $loader1 = $this->createMock('Twig\Tests\Loader\ChainTestLoaderWithExistsInterface');
-        $loader1->expects($this->once())->method('exists')->willReturn(false);
-        $loader1->expects($this->never())->method('getSourceContext');
-
-        // can be removed in 2.0
-        $loader2 = $this->createMock('Twig\Tests\Loader\ChainTestLoaderInterface');
-        //$loader2 = $this->createMock(['\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface']);
-        $loader2->expects($this->once())->method('getSourceContext')->willReturn(new Source('content', 'index'));
-
-        $loader = new ChainLoader();
-        $loader->addLoader($loader1);
-        $loader->addLoader($loader2);
-
-        $this->assertTrue($loader->exists('foo'));
-    }
-}
-
-interface ChainTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
-
-interface ChainTestLoaderWithExistsInterface extends LoaderInterface, ExistsLoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/Loader/FilesystemTest.php b/vendor/twig/twig/tests/Loader/FilesystemTest.php
deleted file mode 100644
index 3307a9b7..00000000
--- a/vendor/twig/twig/tests/Loader/FilesystemTest.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-
-namespace Twig\Tests\Loader;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Loader\FilesystemLoader;
-
-class FilesystemTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetSourceContext()
-    {
-        $path = __DIR__.'/../Fixtures';
-        $loader = new FilesystemLoader([$path]);
-        $this->assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName());
-        $this->assertEquals(realpath($path.'/errors/index.html'), realpath($loader->getSourceContext('errors/index.html')->getPath()));
-    }
-
-    /**
-     * @dataProvider getSecurityTests
-     */
-    public function testSecurity($template)
-    {
-        $loader = new FilesystemLoader([__DIR__.'/../Fixtures']);
-
-        try {
-            $loader->getCacheKey($template);
-            $this->fail();
-        } catch (LoaderError $e) {
-            $this->assertStringNotContainsString('Unable to find template', $e->getMessage());
-        }
-    }
-
-    public function getSecurityTests()
-    {
-        return [
-            ["AutoloaderTest\0.php"],
-            ['..\\AutoloaderTest.php'],
-            ['..\\\\\\AutoloaderTest.php'],
-            ['../AutoloaderTest.php'],
-            ['..////AutoloaderTest.php'],
-            ['./../AutoloaderTest.php'],
-            ['.\\..\\AutoloaderTest.php'],
-            ['././././././../AutoloaderTest.php'],
-            ['.\\./.\\./.\\./../AutoloaderTest.php'],
-            ['foo/../../AutoloaderTest.php'],
-            ['foo\\..\\..\\AutoloaderTest.php'],
-            ['foo/../bar/../../AutoloaderTest.php'],
-            ['foo/bar/../../../AutoloaderTest.php'],
-            ['filters/../../AutoloaderTest.php'],
-            ['filters//..//..//AutoloaderTest.php'],
-            ['filters\\..\\..\\AutoloaderTest.php'],
-            ['filters\\\\..\\\\..\\\\AutoloaderTest.php'],
-            ['filters\\//../\\/\\..\\AutoloaderTest.php'],
-            ['/../AutoloaderTest.php'],
-        ];
-    }
-
-    /**
-     * @dataProvider getBasePaths
-     */
-    public function testPaths($basePath, $cacheKey, $rootPath)
-    {
-        $loader = new FilesystemLoader([$basePath.'/normal', $basePath.'/normal_bis'], $rootPath);
-        $loader->setPaths([$basePath.'/named', $basePath.'/named_bis'], 'named');
-        $loader->addPath($basePath.'/named_ter', 'named');
-        $loader->addPath($basePath.'/normal_ter');
-        $loader->prependPath($basePath.'/normal_final');
-        $loader->prependPath($basePath.'/named/../named_quater', 'named');
-        $loader->prependPath($basePath.'/named_final', 'named');
-
-        $this->assertEquals([
-            $basePath.'/normal_final',
-            $basePath.'/normal',
-            $basePath.'/normal_bis',
-            $basePath.'/normal_ter',
-        ], $loader->getPaths());
-        $this->assertEquals([
-            $basePath.'/named_final',
-            $basePath.'/named/../named_quater',
-            $basePath.'/named',
-            $basePath.'/named_bis',
-            $basePath.'/named_ter',
-        ], $loader->getPaths('named'));
-
-        // do not use realpath here as it would make the test unuseful
-        $this->assertEquals($cacheKey, str_replace('\\', '/', $loader->getCacheKey('@named/named_absolute.html')));
-        $this->assertEquals("path (final)\n", $loader->getSourceContext('index.html')->getCode());
-        $this->assertEquals("path (final)\n", $loader->getSourceContext('@__main__/index.html')->getCode());
-        $this->assertEquals("named path (final)\n", $loader->getSourceContext('@named/index.html')->getCode());
-    }
-
-    public function getBasePaths()
-    {
-        return [
-            [
-                __DIR__.'/Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                null,
-            ],
-            [
-                __DIR__.'/Fixtures/../Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                null,
-            ],
-            [
-                'tests/Loader/Fixtures',
-                'tests/Loader/Fixtures/named_quater/named_absolute.html',
-                getcwd(),
-            ],
-            [
-                'Fixtures',
-                'Fixtures/named_quater/named_absolute.html',
-                getcwd().'/tests/Loader',
-            ],
-            [
-                'Fixtures',
-                'Fixtures/named_quater/named_absolute.html',
-                getcwd().'/tests/../tests/Loader',
-            ],
-        ];
-    }
-
-    public function testEmptyConstructor()
-    {
-        $loader = new FilesystemLoader();
-        $this->assertEquals([], $loader->getPaths());
-    }
-
-    public function testGetNamespaces()
-    {
-        $loader = new FilesystemLoader(sys_get_temp_dir());
-        $this->assertEquals([FilesystemLoader::MAIN_NAMESPACE], $loader->getNamespaces());
-
-        $loader->addPath(sys_get_temp_dir(), 'named');
-        $this->assertEquals([FilesystemLoader::MAIN_NAMESPACE, 'named'], $loader->getNamespaces());
-    }
-
-    public function testFindTemplateExceptionNamespace()
-    {
-        $basePath = __DIR__.'/Fixtures';
-
-        $loader = new FilesystemLoader([$basePath.'/normal']);
-        $loader->addPath($basePath.'/named', 'named');
-
-        try {
-            $loader->getSourceContext('@named/nowhere.html');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('\Twig\Error\LoaderError', $e);
-            $this->assertStringContainsString('Unable to find template "@named/nowhere.html"', $e->getMessage());
-        }
-    }
-
-    public function testFindTemplateWithCache()
-    {
-        $basePath = __DIR__.'/Fixtures';
-
-        $loader = new FilesystemLoader([$basePath.'/normal']);
-        $loader->addPath($basePath.'/named', 'named');
-
-        // prime the cache for index.html in the named namespace
-        $namedSource = $loader->getSourceContext('@named/index.html')->getCode();
-        $this->assertEquals("named path\n", $namedSource);
-
-        // get index.html from the main namespace
-        $this->assertEquals("path\n", $loader->getSourceContext('index.html')->getCode());
-    }
-
-    public function testLoadTemplateAndRenderBlockWithCache()
-    {
-        $loader = new FilesystemLoader([]);
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme2');
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme1');
-        $loader->addPath(__DIR__.'/Fixtures/themes/theme1', 'default_theme');
-
-        $twig = new Environment($loader);
-
-        $template = $twig->load('blocks.html.twig');
-        $this->assertSame('block from theme 1', $template->renderBlock('b1', []));
-
-        $template = $twig->load('blocks.html.twig');
-        $this->assertSame('block from theme 2', $template->renderBlock('b2', []));
-    }
-
-    public function getArrayInheritanceTests()
-    {
-        return [
-            'valid array inheritance' => ['array_inheritance_valid_parent.html.twig'],
-            'array inheritance with null first template' => ['array_inheritance_null_parent.html.twig'],
-            'array inheritance with empty first template' => ['array_inheritance_empty_parent.html.twig'],
-            'array inheritance with non-existent first template' => ['array_inheritance_nonexistent_parent.html.twig'],
-        ];
-    }
-
-    /**
-     * @dataProvider getArrayInheritanceTests
-     *
-     * @param $templateName string Template name with array inheritance
-     */
-    public function testArrayInheritance($templateName)
-    {
-        $loader = new FilesystemLoader([]);
-        $loader->addPath(__DIR__.'/Fixtures/inheritance');
-
-        $twig = new Environment($loader);
-
-        $template = $twig->load($templateName);
-        $this->assertSame('VALID Child', $template->renderBlock('body', []));
-    }
-
-    /**
-     * @requires PHP 5.3
-     */
-    public function testLoadTemplateFromPhar()
-    {
-        $loader = new FilesystemLoader([]);
-        // phar-sample.phar was created with the following script:
-        // $f = new Phar('phar-test.phar');
-        // $f->addFromString('hello.twig', 'hello from phar');
-        $loader->addPath('phar://'.__DIR__.'/Fixtures/phar/phar-sample.phar');
-        $this->assertSame('hello from phar', $loader->getSourceContext('hello.twig')->getCode());
-    }
-
-    public function testTemplateExistsAlwaysReturnsBool()
-    {
-        $loader = new FilesystemLoader([]);
-        $this->assertFalse($loader->exists("foo\0.twig"));
-        $this->assertFalse($loader->exists('../foo.twig'));
-        $this->assertFalse($loader->exists('@foo'));
-        $this->assertFalse($loader->exists('foo'));
-        $this->assertFalse($loader->exists('@foo/bar.twig'));
-
-        $loader->addPath(__DIR__.'/Fixtures/normal');
-        $this->assertTrue($loader->exists('index.html'));
-        $loader->addPath(__DIR__.'/Fixtures/normal', 'foo');
-        $this->assertTrue($loader->exists('@foo/index.html'));
-    }
-}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig
deleted file mode 100644
index 6977ebf6..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['','parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig
deleted file mode 100644
index 5b50a8b2..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['nonexistent.html.twig','parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig
deleted file mode 100644
index a16b3ade..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends [null,'parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig
deleted file mode 100644
index 4940dad4..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% extends ['parent.html.twig','spare_parent.html.twig'] %}
-
-{% block body %}{{ parent() }} Child{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig
deleted file mode 100644
index d594c0ed..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/parent.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% block body %}VALID{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig
deleted file mode 100644
index 70b7360a..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/inheritance/spare_parent.html.twig
+++ /dev/null
@@ -1 +0,0 @@
-{% block body %}SPARE PARENT{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named/index.html
deleted file mode 100644
index 9e5449c7..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html
deleted file mode 100644
index d3a272b1..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_bis/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (bis)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html
deleted file mode 100644
index 9f05d150..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_final/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (final)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html b/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html
deleted file mode 100644
index b1fb5f5d..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_quater/named_absolute.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (quater)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html b/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html
deleted file mode 100644
index 24fb68ad..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/named_ter/index.html
+++ /dev/null
@@ -1 +0,0 @@
-named path (ter)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html
deleted file mode 100644
index e7a8fd4d..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html
deleted file mode 100644
index bfa91604..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_bis/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (bis)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html
deleted file mode 100644
index 73a089bb..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_final/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (final)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html b/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html
deleted file mode 100644
index b7ad97d8..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/normal_ter/index.html
+++ /dev/null
@@ -1 +0,0 @@
-path (ter)
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar b/vendor/twig/twig/tests/Loader/Fixtures/phar/phar-sample.phar
deleted file mode 100644
index 092bbfae3e4c98b308dc98bf7653ead68ae3ee6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6786
zcmb_hOLN=E5q5IqWh?g_#w@G>Mx-dx&rq@~*-JkvlEqM5ZLJv>0s=!4E4&r}B}(hP
z<eF3dLC(44ma0^xYLCf}$vMZZd_4~c6hV6rE0;^0o_<eH_czquvt*vsYQ`m>u&2!Q
zBabh)K{9u1HGj%1KeC-Pb*?NknLDZ3WLchaC$wigw=YvCNqCxBjRw1SkGX-9Wj0^>
zS)N(uK(g;(@4Ff;dObhNdFt{cf9VJO<sxz+xm(Mi$&cJ%;c+{0^0~CsYqw3d&20PS
zo1?yM<Ky6P^x8h{4-SWiqmv;B<id(z1KOk|L_;5}Xb}WWM!{iA@iGy~x_(m_>@V}w
zadTVhIUOAiN4vF@=ZiGjt$i<Za$xxxytWLuGd$}L$L6sA`!D;aBm2wY8}q$L#wL#A
z{^<3|7mBGugWhLPaT>4sBa?mjz}5||unkU5M`lALde!||Y~|^KBX%S7L!RM;<zd#4
zgCsNA(|y)$)=XD?GIPGn+ezT~kx9gAYLZkkZ*5hPz1*uJ&#Q<*JgXw7Q6)KF=2hIw
ztkNJAGzHs1TquL$vvc7~Ef>DW<2Eh9F$q<Se(212o0gQ1OeRdGiB=%a{HatRS!oIC
zJP##RWE87FQG*TSvS!WhyK!0dvPA?a|0dyOI+im@R(X=1+>o(Np_{kp$|P=Z;JZ%l
z$5DIP`o_6%GB@>;oK%Lsr_$prJU?!WwWLdxx5%-|y&_{t%<+X}#s{Cbzg_t5d5&Tf
zd&&J3MOczVqCA#|5~={jZxP8VJ@M2LltUpRR3*B2Wbm{EHM^{k$mX$oe(7BB))akg
zPJH?5;bJM2ir=M_YC43=(a;h~mJ?MA(gj))6(u25hzg-qvxaM0n{&tGsa1dBxO3im
z5l49%2R#<WEte=w7A~^9mGTQG@I5EzbqHyhLF&vx=Z2Z~YR1ILc;ti}cVB<BbXNrf
z_4vE!=}DYbbR*Hv&_K1M=rQix^HXcJ(-=7q6H+G|xoElNzG);m9LN?EnA&XTr~ARS
zXb=TFvP!<GXvh{dO)`ll+BRtdNe5^W6bUn5k4A%bXS>7h?{wI4e8D|7;A!YYJj#PB
z^Cq?CQ7o@WkI_(CZ^t4}*pV{?wjhf^nA6BG97K+p8HnLlkv7PE@n+b6fvNWO%7Bx4
z#0fzOLQ)|k{dA(1;ov;>G_^vrI4)HlI@%rfVCMmQ8|Un0yofxClDqSm)%U3J?EfKR
zdn7?0*k11E0pF)_eIucW#MsuHdz09^k|OiYJ{f2+Ayr55Bzcq7OY&{72x%n*HDtM7
zN*Q4hN|zr^V+vE9tQxA5v585=qYO<8la!8E2T3;ur`H-?CA`N<1FdwJn&*f|vwSX(
zbczr&|61mh3fJ+7ByH=H6nIEZelbqR#;PaM72=ZPc5NT^_>^_X-{PJ)H&K5|uqy)f
zXY&C6b9>#t>Lj3IH@Ne2<OGmN;67F^zuI@TEXPc7ndl3^cxn}={tVT-TXW+m%h{`U
zIOm;ZXJ=<elb*lp3R<^BJ3c)9ogm&X5d|~@bp^6YwMYH8*m(5l$wM?iWqJy@NkfhS
z6B!cEfoJLj8E?Q{W17%1PS8<wcWg2<ozVT5W}Kf}U;+B&!L-+d0g#O&h%BPSanCLD
z4A5BIbZg>API}dtQVmI=2Lw!w5ZrpxBzWz`C<OT8c-VQ;`E6HLxp6e^yvO~~{Vk+B
zPTQi5DfV?H(P}WcsLyIMB_D(x>Bja`W)LGJ*yWt=wxw+mS-@9K5XOZu$ckZ6v4b!?
zpIc^sI6N8l7#gTQ<!}V;85fLtpT{npjMY(!I1kyjp?TY^GmPCu;IRppyD}~`(mEv`
z#br<nKu9w2wo11VQYcf<#r_xw_Pz2C)O(8i)jM(3Xu|2^FP<l}YbXvdK>?f#|I;*1
zd+a*!C#+~N%+D}>bA};02{0jA6oknNd8@&+au#v!fn^$}LP^Vw!zAVC7#_o$%1JXB
zlzK*#JVn)Sc6D;?ajj|H+sU<`bU*2CS;q#CC)eGNI4mx5aSnNy5C+gSaaZnQLf!Q<
zJPZAta%D+SAj&pF7I6Ehrwb)wWoLj}^34ZL)c#N$03zt0C4LN#-Fk!FMe9`8wY*E(
z1gf|#v{}_wM_Ic|EmT)TS!siYErmisu51*w@<Nm?6-GeVfMeE#Nu1*5GYD}vkMSvw
z>0szR$>{jy>FZ3E^~zEw6%4o2Y!kPVY@6E}eU&?ts3%e=FGiu1bQDC@ZjmFrmEB8^
z4(uR27f}&olkGfy{J6>VBT+a|0xR+W)x}!Pmh^Q4a0$JKay;o)Dj%on4yPPX0X_<o
zmo#)`l{5<vKknjzII?7s+i3MP>6Ltez1B^mjZ>a#xRo3j8g)V~Wo(A#dxoZD$eP?|
z2B{XsN`P%8S|m&YE)}(gd8lS;?JA`o<GPh;H{j?77>WYb7xzf`GS(fE9BW_@U>e-u
z*z)leK?^x)0`7dzIHnq!+NW}*#N@H4a-%b`)P~3i#@aLyQM&Um#zb4s0W3dy^oT5r
ze>M3)SS=nkb48a^Zv<&qeZ@keYqMIn84T!~?qCgG5A2gu9P3wa-U8d-GzNq$Fw}*U
z%97{Ng=LP82jF@}1y)-3Zq|KbAjcFeFd$E{kS^5&%r-?0HRucS{%A@`4&@~=zTP7x
zN~h>tS}7S=brAT!(gh`5)=X}YqP1j|W+MR_H8;!nL_fbm99WYHR01RbPc|@hG?&0G
zCF#xsyuXY9I0dd4^tI9k4TS<4;lOwXYCa`|A{1m$02+c616;DuJ*7J;Rv7O9Kk~wY
z7oWDaDC02BBXDdmE6u17mCY>}-Gv~{96g5Aa}@c|5~Np$C0vD=qCuE3=`32uxKM=K
zDZf>-@hD%Qp%qR!?XyYy%x#}}?K9p!!<Pre3%F#mi-VvviZrZh9^WVBS(4(L)2U^C
zz95iU%~!hzAU#z-o76ofbw&(hF{8k$RCVb{<S~JzD-NoP@8QbPeb}Jw!TSP@5sEL}
z2r^z-$5o98jXu4Sorr21-+WMyCKPSB6q48<lj}8wXbo4i8hVSlW&A8eF=G$P*x03n
zks_36(LF(EX<RNX-Vzg-oI=oePI^%aSprb)?hRxV6xfuuM9*52Rgh2%uK>70eif2a
zY}5~RK6da`w1npMH<9?ph>5S@BPWn}l+lC$>cYd9aRR@1r*9Vz52<b&G^oUeD2sfI
zA_A>J-!82Nj$#F)uGaeJ3q1ba)V<%e^m|15jfyCh>Q8eK-+j5~*&>u~YU3y&d@s+0
zTH(#@$DUn{H4Fue=;e27SQRK?7Q_?F{0(|OfrP29CNWdh-#9=OWQ7yK^Nby&p@3Id
z^w_~73jBzkjz|_A^DSxmtBFRLQr8BEG+n_*YRqa=G@77)9aE^#bg-&a`zwFpz;hU~
zw*C6>Xk@=QIUeB8Eklslv;8M`?%eqW{{Kq-#xMNT@PE#OAl}X|{n=+&{rQLgenr2R
zUq3wj2MORuaIk3_hXVQj>yQ8J|L^Zl{`Bz2U;pj!umAb+FF!2*{Y$XDdVc);|E1Ux
AZ~y=R

diff --git a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig
deleted file mode 100644
index dd0cbc2e..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme1/blocks.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% block b1 %}block from theme 1{% endblock %}
-
-{% block b2 %}block from theme 1{% endblock %}
diff --git a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig b/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig
deleted file mode 100644
index 07cf9db0..00000000
--- a/vendor/twig/twig/tests/Loader/Fixtures/themes/theme2/blocks.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{% use '@default_theme/blocks.html.twig' %}
-
-{% block b2 %}block from theme 2{% endblock %}
diff --git a/vendor/twig/twig/tests/NativeExtensionTest.php b/vendor/twig/twig/tests/NativeExtensionTest.php
deleted file mode 100644
index 3399292e..00000000
--- a/vendor/twig/twig/tests/NativeExtensionTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class NativeExtensionTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testGetProperties()
-    {
-        if (\PHP_VERSION_ID >= 70000) {
-            $this->markTestSkipped('Extension is not available on PHP 7+');
-        }
-
-        $twig = new Environment(new ArrayLoader(['index' => '{{ d1.date }}{{ d2.date }}']), [
-            'debug' => true,
-            'cache' => false,
-            'autoescape' => false,
-        ]);
-
-        $d1 = new \DateTime();
-        $d2 = new \DateTime();
-        $output = $twig->render('index', compact('d1', 'd2'));
-
-        // If it fails, PHP will crash.
-        $this->assertEquals($output, $d1->date.$d2->date);
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/AutoEscapeTest.php b/vendor/twig/twig/tests/Node/AutoEscapeTest.php
deleted file mode 100644
index d0f641c0..00000000
--- a/vendor/twig/twig/tests/Node/AutoEscapeTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\AutoEscapeNode;
-use Twig\Node\Node;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class AutoEscapeTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new Node([new TextNode('foo', 1)]);
-        $node = new AutoEscapeNode(true, $body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertTrue($node->getAttribute('value'));
-    }
-
-    public function getTests()
-    {
-        $body = new Node([new TextNode('foo', 1)]);
-        $node = new AutoEscapeNode(true, $body, 1);
-
-        return [
-            [$node, "// line 1\necho \"foo\";"],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/BlockReferenceTest.php b/vendor/twig/twig/tests/Node/BlockReferenceTest.php
deleted file mode 100644
index 63dc0707..00000000
--- a/vendor/twig/twig/tests/Node/BlockReferenceTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\BlockReferenceNode;
-use Twig\Test\NodeTestCase;
-
-class BlockReferenceTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new BlockReferenceNode('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        return [
-            [new BlockReferenceNode('foo', 1), <<<EOF
-// line 1
-\$this->displayBlock('foo', \$context, \$blocks);
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/BlockTest.php b/vendor/twig/twig/tests/Node/BlockTest.php
deleted file mode 100644
index 235cbaf8..00000000
--- a/vendor/twig/twig/tests/Node/BlockTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\BlockNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class BlockTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new BlockNode('foo', $body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new BlockNode('foo', $body, 1);
-
-        return [
-            [$node, <<<EOF
-// line 1
-public function block_foo(\$context, array \$blocks = [])
-{
-    echo "foo";
-}
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/DeprecatedTest.php b/vendor/twig/twig/tests/Node/DeprecatedTest.php
deleted file mode 100644
index f4d1cb3b..00000000
--- a/vendor/twig/twig/tests/Node/DeprecatedTest.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\DeprecatedNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\IfNode;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFunction;
-
-class DeprecatedTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DeprecatedNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('This section is deprecated', 1);
-        $node = new DeprecatedNode($expr, 1, 'deprecated');
-        $node->setTemplateName('foo.twig');
-
-        $tests[] = [$node, <<<EOF
-// line 1
-@trigger_error("This section is deprecated"." (\"foo.twig\" at line 1).", E_USER_DEPRECATED);
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new DeprecatedNode($expr, 2, 'deprecated'),
-        ], [], 1);
-        $node = new IfNode($t, null, 1);
-        $node->setTemplateName('foo.twig');
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    // line 2
-    @trigger_error("This section is deprecated"." (\"foo.twig\" at line 2).", E_USER_DEPRECATED);
-}
-EOF
-        ];
-
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFunction(new TwigFunction('foo', 'foo', []));
-
-        $expr = new FunctionExpression('foo', new Node(), 1);
-        $node = new DeprecatedNode($expr, 1, 'deprecated');
-        $node->setTemplateName('foo.twig');
-
-        $compiler = $this->getCompiler($environment);
-        $varName = $compiler->getVarName();
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$$varName = foo();
-@trigger_error(\$$varName." (\"foo.twig\" at line 1).", E_USER_DEPRECATED);
-EOF
-        , $environment];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/DoTest.php b/vendor/twig/twig/tests/Node/DoTest.php
deleted file mode 100644
index aaebba5f..00000000
--- a/vendor/twig/twig/tests/Node/DoTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\DoNode;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class DoTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DoNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = new DoNode($expr, 1);
-        $tests[] = [$node, "// line 1\n\"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ArrayTest.php b/vendor/twig/twig/tests/Node/Expression/ArrayTest.php
deleted file mode 100644
index cfd9c67f..00000000
--- a/vendor/twig/twig/tests/Node/Expression/ArrayTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ArrayTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $elements = [new ConstantExpression('foo', 1), $foo = new ConstantExpression('bar', 1)];
-        $node = new ArrayExpression($elements, 1);
-
-        $this->assertEquals($foo, $node->getNode(1));
-    }
-
-    public function getTests()
-    {
-        $elements = [
-            new ConstantExpression('foo', 1),
-            new ConstantExpression('bar', 1),
-
-            new ConstantExpression('bar', 1),
-            new ConstantExpression('foo', 1),
-        ];
-        $node = new ArrayExpression($elements, 1);
-
-        return [
-            [$node, '["foo" => "bar", "bar" => "foo"]'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php b/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php
deleted file mode 100644
index 80dbe94c..00000000
--- a/vendor/twig/twig/tests/Node/Expression/AssignNameTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Test\NodeTestCase;
-
-class AssignNameTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new AssignNameExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $node = new AssignNameExpression('foo', 1);
-
-        return [
-            [$node, '$context["foo"]'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php
deleted file mode 100644
index 5cff2bcf..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/AddTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\AddBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class AddTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AddBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AddBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 + 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php
deleted file mode 100644
index d83aed04..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/AndTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\AndBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class AndTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AndBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new AndBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 && 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php
deleted file mode 100644
index 0eff603b..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/ConcatTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\ConcatBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConcatTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ConcatBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ConcatBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 . 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php
deleted file mode 100644
index 20cf4646..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/DivTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\DivBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class DivTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new DivBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new DivBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 / 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php
deleted file mode 100644
index 82685985..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/FloorDivTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\FloorDivBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class FloorDivTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new FloorDivBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new FloorDivBinary($left, $right, 1);
-
-        return [
-            [$node, '(int) floor((1 / 2))'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php
deleted file mode 100644
index 2069ef08..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/ModTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\ModBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ModTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ModBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new ModBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 % 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php
deleted file mode 100644
index c50dfc12..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/MulTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\MulBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class MulTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new MulBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new MulBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 * 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php
deleted file mode 100644
index 94df7c0b..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/OrTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\OrBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class OrTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new OrBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new OrBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 || 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php b/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php
deleted file mode 100644
index 04eebe29..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Binary/SubTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Binary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\Binary\SubBinary;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class SubTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new SubBinary($left, $right, 1);
-
-        $this->assertEquals($left, $node->getNode('left'));
-        $this->assertEquals($right, $node->getNode('right'));
-    }
-
-    public function getTests()
-    {
-        $left = new ConstantExpression(1, 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new SubBinary($left, $right, 1);
-
-        return [
-            [$node, '(1 - 2)'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/CallTest.php b/vendor/twig/twig/tests/Node/Expression/CallTest.php
deleted file mode 100644
index 1ffb4c7b..00000000
--- a/vendor/twig/twig/tests/Node/Expression/CallTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\CallExpression;
-
-class CallTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetArguments()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $this->assertEquals(['U', null], $node->getArguments('date', ['format' => 'U', 'timestamp' => null]));
-    }
-
-    public function testGetArgumentsWhenPositionalArgumentsAfterNamedArguments()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Positional arguments cannot be used after named arguments for function "date".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['timestamp' => 123456, 'Y-m-d']);
-    }
-
-    public function testGetArgumentsWhenArgumentIsDefinedTwice()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Argument "format" is defined twice for function "date".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'format' => 'U']);
-    }
-
-    public function testGetArgumentsWithWrongNamedArgumentName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown argument "unknown" for function "date(format, timestamp)".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'timestamp' => null, 'unknown' => '']);
-    }
-
-    public function testGetArgumentsWithWrongNamedArgumentNames()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown arguments "unknown1", "unknown2" for function "date(format, timestamp)".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'date']);
-        $node->getArguments('date', ['Y-m-d', 'timestamp' => null, 'unknown1' => '', 'unknown2' => '']);
-    }
-
-    public function testResolveArgumentsWithMissingValueForOptionalArgument()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Argument "case_sensitivity" could not be assigned for function "substr_compare(main_str, str, offset, length, case_sensitivity)" because it is mapped to an internal PHP function which cannot determine default value for optional argument "length".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'substr_compare']);
-        $node->getArguments('substr_compare', ['abcd', 'bc', 'offset' => 1, 'case_sensitivity' => true]);
-    }
-
-    public function testResolveArgumentsOnlyNecessaryArgumentsForCustomFunction()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'custom_function']);
-
-        $this->assertEquals(['arg1'], $node->getArguments([$this, 'customFunction'], ['arg1' => 'arg1']));
-    }
-
-    public function testGetArgumentsForStaticMethod()
-    {
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'custom_static_function']);
-        $this->assertEquals(['arg1'], $node->getArguments(__CLASS__.'::customStaticFunction', ['arg1' => 'arg1']));
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArguments()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessage('The last parameter of "Twig\\Tests\\Node\\Expression\\CallTest::customFunctionWithArbitraryArguments" for function "foo" must be an array with default value, eg. "array $arg = []".');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments([$this, 'customFunctionWithArbitraryArguments'], []);
-    }
-
-    public static function customStaticFunction($arg1, $arg2 = 'default', $arg3 = [])
-    {
-    }
-
-    public function customFunction($arg1, $arg2 = 'default', $arg3 = [])
-    {
-    }
-
-    public function customFunctionWithArbitraryArguments()
-    {
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnFunction()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessageRegExp('#^The last parameter of "Twig\\\\Tests\\\\Node\\\\Expression\\\\custom_Twig_Tests_Node_Expression_CallTest_function" for function "foo" must be an array with default value, eg\\. "array \\$arg \\= \\[\\]"\\.$#');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments('Twig\Tests\Node\Expression\custom_Twig_Tests_Node_Expression_CallTest_function', []);
-    }
-
-    public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnObject()
-    {
-        $this->expectException('\LogicException');
-        $this->expectExceptionMessageRegExp('#^The last parameter of "Twig\\\\Tests\\\\Node\\\\Expression\\\\CallableTestClass\\:\\:__invoke" for function "foo" must be an array with default value, eg\\. "array \\$arg \\= \\[\\]"\\.$#');
-
-        $node = new Node_Expression_Call([], ['type' => 'function', 'name' => 'foo', 'is_variadic' => true]);
-        $node->getArguments(new CallableTestClass(), []);
-    }
-}
-
-class Node_Expression_Call extends CallExpression
-{
-    public function getArguments($callable, $arguments)
-    {
-        return parent::getArguments($callable, $arguments);
-    }
-}
-
-class CallableTestClass
-{
-    public function __invoke($required)
-    {
-    }
-}
-
-function custom_Twig_Tests_Node_Expression_CallTest_function($required)
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php b/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php
deleted file mode 100644
index 004e9c95..00000000
--- a/vendor/twig/twig/tests/Node/Expression/ConditionalTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConditionalTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr1 = new ConstantExpression(1, 1);
-        $expr2 = new ConstantExpression(2, 1);
-        $expr3 = new ConstantExpression(3, 1);
-        $node = new ConditionalExpression($expr1, $expr2, $expr3, 1);
-
-        $this->assertEquals($expr1, $node->getNode('expr1'));
-        $this->assertEquals($expr2, $node->getNode('expr2'));
-        $this->assertEquals($expr3, $node->getNode('expr3'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr1 = new ConstantExpression(1, 1);
-        $expr2 = new ConstantExpression(2, 1);
-        $expr3 = new ConstantExpression(3, 1);
-        $node = new ConditionalExpression($expr1, $expr2, $expr3, 1);
-        $tests[] = [$node, '((1) ? (2) : (3))'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/ConstantTest.php b/vendor/twig/twig/tests/Node/Expression/ConstantTest.php
deleted file mode 100644
index 920892e9..00000000
--- a/vendor/twig/twig/tests/Node/Expression/ConstantTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Test\NodeTestCase;
-
-class ConstantTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new ConstantExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('value'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $node = new ConstantExpression('foo', 1);
-        $tests[] = [$node, '"foo"'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/FilterTest.php b/vendor/twig/twig/tests/Node/Expression/FilterTest.php
deleted file mode 100644
index d7e38f31..00000000
--- a/vendor/twig/twig/tests/Node/Expression/FilterTest.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFilter;
-
-class FilterTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $name = new ConstantExpression('upper', 1);
-        $args = new Node();
-        $node = new FilterExpression($expr, $name, $args, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($name, $node->getNode('filter'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFilter(new TwigFilter('bar', 'bar', ['needs_environment' => true]));
-        $environment->addFilter(new TwigFilter('barbar', 'Twig\Tests\Node\Expression\twig_tests_filter_barbar', ['needs_context' => true, 'is_variadic' => true]));
-
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = $this->createFilter($expr, 'upper');
-        $node = $this->createFilter($node, 'number_format', [new ConstantExpression(2, 1), new ConstantExpression('.', 1), new ConstantExpression(',', 1)]);
-
-        if (\function_exists('mb_get_info')) {
-            $tests[] = [$node, 'twig_number_format_filter($this->env, twig_upper_filter($this->env, "foo"), 2, ".", ",")'];
-        } else {
-            $tests[] = [$node, 'twig_number_format_filter($this->env, strtoupper("foo"), 2, ".", ",")'];
-        }
-
-        // named arguments
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-            'format' => new ConstantExpression('d/m/Y H:i:s P', 1),
-        ]);
-        $tests[] = [$node, 'twig_date_format_filter($this->env, 0, "d/m/Y H:i:s P", "America/Chicago")'];
-
-        // skip an optional argument
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-        ]);
-        $tests[] = [$node, 'twig_date_format_filter($this->env, 0, null, "America/Chicago")'];
-
-        // underscores vs camelCase for named arguments
-        $string = new ConstantExpression('abc', 1);
-        $node = $this->createFilter($string, 'reverse', [
-            'preserve_keys' => new ConstantExpression(true, 1),
-        ]);
-        $tests[] = [$node, 'twig_reverse_filter($this->env, "abc", true)'];
-        $node = $this->createFilter($string, 'reverse', [
-            'preserveKeys' => new ConstantExpression(true, 1),
-        ]);
-        $tests[] = [$node, 'twig_reverse_filter($this->env, "abc", true)'];
-
-        // filter as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createFilter(new ConstantExpression('foo', 1), 'anonymous');
-            $tests[] = [$node, 'call_user_func_array($this->env->getFilter(\'anonymous\')->getCallable(), ["foo"])'];
-        }
-
-        // needs environment
-        $node = $this->createFilter($string, 'bar');
-        $tests[] = [$node, 'bar($this->env, "abc")', $environment];
-
-        $node = $this->createFilter($string, 'bar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'bar($this->env, "abc", "bar")', $environment];
-
-        // arbitrary named arguments
-        $node = $this->createFilter($string, 'barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc")', $environment];
-
-        $node = $this->createFilter($string, 'barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createFilter($string, 'barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", null, "bar")', $environment];
-
-        $node = $this->createFilter($string, 'barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_filter_barbar($context, "abc", "1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        return $tests;
-    }
-
-    public function testCompileWithWrongNamedArgumentName()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown argument "foobar" for filter "date(format, timezone)" at line 1.');
-
-        $date = new ConstantExpression(0, 1);
-        $node = $this->createFilter($date, 'date', [
-            'foobar' => new ConstantExpression('America/Chicago', 1),
-        ]);
-
-        $compiler = $this->getCompiler();
-        $compiler->compile($node);
-    }
-
-    public function testCompileWithMissingNamedArgument()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Value for argument "from" is required for filter "replace" at line 1.');
-
-        $value = new ConstantExpression(0, 1);
-        $node = $this->createFilter($value, 'replace', [
-            'to' => new ConstantExpression('foo', 1),
-        ]);
-
-        $compiler = $this->getCompiler();
-        $compiler->compile($node);
-    }
-
-    protected function createFilter($node, $name, array $arguments = [])
-    {
-        $name = new ConstantExpression($name, 1);
-        $arguments = new Node($arguments);
-
-        return new FilterExpression($node, $name, $arguments, 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/FilterInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_filter_barbar($context, $string, $arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/FunctionTest.php b/vendor/twig/twig/tests/Node/Expression/FunctionTest.php
deleted file mode 100644
index 489f17ab..00000000
--- a/vendor/twig/twig/tests/Node/Expression/FunctionTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\FunctionExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigFunction;
-
-class FunctionTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $name = 'function';
-        $args = new Node();
-        $node = new FunctionExpression($name, $args, 1);
-
-        $this->assertEquals($name, $node->getAttribute('name'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addFunction(new TwigFunction('foo', 'foo', []));
-        $environment->addFunction(new TwigFunction('bar', 'bar', ['needs_environment' => true]));
-        $environment->addFunction(new TwigFunction('foofoo', 'foofoo', ['needs_context' => true]));
-        $environment->addFunction(new TwigFunction('foobar', 'foobar', ['needs_environment' => true, 'needs_context' => true]));
-        $environment->addFunction(new TwigFunction('barbar', 'Twig\Tests\Node\Expression\twig_tests_function_barbar', ['is_variadic' => true]));
-
-        $tests = [];
-
-        $node = $this->createFunction('foo');
-        $tests[] = [$node, 'foo()', $environment];
-
-        $node = $this->createFunction('foo', [new ConstantExpression('bar', 1), new ConstantExpression('foobar', 1)]);
-        $tests[] = [$node, 'foo("bar", "foobar")', $environment];
-
-        $node = $this->createFunction('bar');
-        $tests[] = [$node, 'bar($this->env)', $environment];
-
-        $node = $this->createFunction('bar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'bar($this->env, "bar")', $environment];
-
-        $node = $this->createFunction('foofoo');
-        $tests[] = [$node, 'foofoo($context)', $environment];
-
-        $node = $this->createFunction('foofoo', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'foofoo($context, "bar")', $environment];
-
-        $node = $this->createFunction('foobar');
-        $tests[] = [$node, 'foobar($this->env, $context)', $environment];
-
-        $node = $this->createFunction('foobar', [new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'foobar($this->env, $context, "bar")', $environment];
-
-        // named arguments
-        $node = $this->createFunction('date', [
-            'timezone' => new ConstantExpression('America/Chicago', 1),
-            'date' => new ConstantExpression(0, 1),
-        ]);
-        $tests[] = [$node, 'twig_date_converter($this->env, 0, "America/Chicago")'];
-
-        // arbitrary named arguments
-        $node = $this->createFunction('barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar()', $environment];
-
-        $node = $this->createFunction('barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar(null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createFunction('barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar(null, "bar")', $environment];
-
-        $node = $this->createFunction('barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_function_barbar("1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        // function as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createFunction('anonymous', [new ConstantExpression('foo', 1)]);
-            $tests[] = [$node, 'call_user_func_array($this->env->getFunction(\'anonymous\')->getCallable(), ["foo"])'];
-        }
-
-        return $tests;
-    }
-
-    protected function createFunction($name, array $arguments = [])
-    {
-        return new FunctionExpression($name, new Node($arguments), 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/FunctionInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_function_barbar($arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php b/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php
deleted file mode 100644
index 5f9a0a79..00000000
--- a/vendor/twig/twig/tests/Node/Expression/GetAttrTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Template;
-use Twig\Test\NodeTestCase;
-
-class GetAttrTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new NameExpression('foo', 1);
-        $attr = new ConstantExpression('bar', 1);
-        $args = new ArrayExpression([], 1);
-        $args->addElement(new NameExpression('foo', 1));
-        $args->addElement(new ConstantExpression('bar', 1));
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ARRAY_CALL, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($attr, $node->getNode('attribute'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-        $this->assertEquals(Template::ARRAY_CALL, $node->getAttribute('type'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new NameExpression('foo', 1);
-        $attr = new ConstantExpression('bar', 1);
-        $args = new ArrayExpression([], 1);
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ANY_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [])', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))];
-
-        $node = new GetAttrExpression($expr, $attr, $args, Template::ARRAY_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [], "array")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))];
-
-        $args = new ArrayExpression([], 1);
-        $args->addElement(new NameExpression('foo', 1));
-        $args->addElement(new ConstantExpression('bar', 1));
-        $node = new GetAttrExpression($expr, $attr, $args, Template::METHOD_CALL, 1);
-        $tests[] = [$node, sprintf('%s%s, "bar", [0 => %s, 1 => "bar"], "method")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1), $this->getVariableGetter('foo'))];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/NameTest.php b/vendor/twig/twig/tests/Node/Expression/NameTest.php
deleted file mode 100644
index 738f28ae..00000000
--- a/vendor/twig/twig/tests/Node/Expression/NameTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\NameExpression;
-use Twig\Test\NodeTestCase;
-
-class NameTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new NameExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $node = new NameExpression('foo', 1);
-        $context = new NameExpression('_context', 1);
-
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]);
-        $env1 = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => false]);
-
-        if (\PHP_VERSION_ID >= 70000) {
-            $output = '($context["foo"] ?? $this->getContext($context, "foo"))';
-        } elseif (\PHP_VERSION_ID >= 50400) {
-            $output = '(isset($context["foo"]) ? $context["foo"] : $this->getContext($context, "foo"))';
-        } else {
-            $output = '$this->getContext($context, "foo")';
-        }
-
-        return [
-            [$node, "// line 1\n".$output, $env],
-            [$node, $this->getVariableGetter('foo', 1), $env1],
-            [$context, "// line 1\n\$context"],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php b/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php
deleted file mode 100644
index bbfff576..00000000
--- a/vendor/twig/twig/tests/Node/Expression/NullCoalesceTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Expression\NullCoalesceExpression;
-use Twig\Test\NodeTestCase;
-
-class NullCoalesceTest extends NodeTestCase
-{
-    public function getTests()
-    {
-        $tests = [];
-
-        $left = new NameExpression('foo', 1);
-        $right = new ConstantExpression(2, 1);
-        $node = new NullCoalesceExpression($left, $right, 1);
-        if (\PHP_VERSION_ID >= 70000) {
-            $tests[] = [$node, "((// line 1\n\$context[\"foo\"]) ?? (2))"];
-        } elseif (\PHP_VERSION_ID >= 50400) {
-            $tests[] = [$node, "(((// line 1\n(isset(\$context[\"foo\"]) || array_key_exists(\"foo\", \$context)) &&  !(null === (isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)))) ? ((isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)) : (2))"];
-        } else {
-            $tests[] = [$node, "(((// line 1\n(isset(\$context[\"foo\"]) || array_key_exists(\"foo\", \$context)) &&  !(null === \$this->getContext(\$context, \"foo\")))) ? (\$this->getContext(\$context, \"foo\")) : (2))"];
-        }
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php
deleted file mode 100644
index fc8f5177..00000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/FilterInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addFilter(new \Twig\TwigFilter('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php
deleted file mode 100644
index b364001c..00000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/FunctionInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addFunction(new \Twig\TwigFunction('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php b/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php
deleted file mode 100644
index b2bf2ced..00000000
--- a/vendor/twig/twig/tests/Node/Expression/PHP53/TestInclude.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\PHP53;
-
-$env = new \Twig\Environment(new \Twig\Loader\ArrayLoader([]));
-$env->addTest(new \Twig\TwigTest('anonymous', function () {}));
-
-return $env;
diff --git a/vendor/twig/twig/tests/Node/Expression/ParentTest.php b/vendor/twig/twig/tests/Node/Expression/ParentTest.php
deleted file mode 100644
index 1a67b77f..00000000
--- a/vendor/twig/twig/tests/Node/Expression/ParentTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ParentExpression;
-use Twig\Test\NodeTestCase;
-
-class ParentTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new ParentExpression('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new ParentExpression('foo', 1), '$this->renderParentBlock("foo", $context, $blocks)'];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/TestTest.php b/vendor/twig/twig/tests/Node/Expression/TestTest.php
deleted file mode 100644
index 11e1596c..00000000
--- a/vendor/twig/twig/tests/Node/Expression/TestTest.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Test\NullTest;
-use Twig\Node\Expression\TestExpression;
-use Twig\Node\Node;
-use Twig\Test\NodeTestCase;
-use Twig\TwigTest;
-
-class TestTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $name = new ConstantExpression('null', 1);
-        $args = new Node();
-        $node = new TestExpression($expr, $name, $args, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-        $this->assertEquals($args, $node->getNode('arguments'));
-        $this->assertEquals($name, $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $environment = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $environment->addTest(new TwigTest('barbar', 'Twig\Tests\Node\Expression\twig_tests_test_barbar', ['is_variadic' => true, 'need_context' => true]));
-
-        $tests = [];
-
-        $expr = new ConstantExpression('foo', 1);
-        $node = new NullTest($expr, 'null', new Node([]), 1);
-        $tests[] = [$node, '(null === "foo")'];
-
-        // test as an anonymous function
-        if (\PHP_VERSION_ID >= 50300) {
-            $node = $this->createTest(new ConstantExpression('foo', 1), 'anonymous', [new ConstantExpression('foo', 1)]);
-            $tests[] = [$node, 'call_user_func_array($this->env->getTest(\'anonymous\')->getCallable(), ["foo", "foo"])'];
-        }
-
-        // arbitrary named arguments
-        $string = new ConstantExpression('abc', 1);
-        $node = $this->createTest($string, 'barbar');
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc")', $environment];
-
-        $node = $this->createTest($string, 'barbar', ['foo' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", null, null, ["foo" => "bar"])', $environment];
-
-        $node = $this->createTest($string, 'barbar', ['arg2' => new ConstantExpression('bar', 1)]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", null, "bar")', $environment];
-
-        $node = $this->createTest($string, 'barbar', [
-            new ConstantExpression('1', 1),
-            new ConstantExpression('2', 1),
-            new ConstantExpression('3', 1),
-            'foo' => new ConstantExpression('bar', 1),
-        ]);
-        $tests[] = [$node, 'Twig\Tests\Node\Expression\twig_tests_test_barbar("abc", "1", "2", [0 => "3", "foo" => "bar"])', $environment];
-
-        return $tests;
-    }
-
-    protected function createTest($node, $name, array $arguments = [])
-    {
-        return new TestExpression($node, $name, new Node($arguments), 1);
-    }
-
-    protected function getEnvironment()
-    {
-        if (\PHP_VERSION_ID >= 50300) {
-            return include 'PHP53/TestInclude.php';
-        }
-
-        return parent::getEnvironment();
-    }
-}
-
-function twig_tests_test_barbar($string, $arg1 = null, $arg2 = null, array $args = [])
-{
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php
deleted file mode 100644
index fcbf66ec..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/NegTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\NegUnary;
-use Twig\Test\NodeTestCase;
-
-class NegTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new NegUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new NegUnary($node, 1);
-
-        return [
-            [$node, '-1'],
-            [new NegUnary($node, 1), '- -1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php
deleted file mode 100644
index 8197111e..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/NotTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\NotUnary;
-use Twig\Test\NodeTestCase;
-
-class NotTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new NotUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new NotUnary($node, 1);
-
-        return [
-            [$node, '!1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php b/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php
deleted file mode 100644
index 780e339e..00000000
--- a/vendor/twig/twig/tests/Node/Expression/Unary/PosTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node\Expression\Unary;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\Unary\PosUnary;
-use Twig\Test\NodeTestCase;
-
-class PosTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression(1, 1);
-        $node = new PosUnary($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('node'));
-    }
-
-    public function getTests()
-    {
-        $node = new ConstantExpression(1, 1);
-        $node = new PosUnary($node, 1);
-
-        return [
-            [$node, '+1'],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ForTest.php b/vendor/twig/twig/tests/Node/ForTest.php
deleted file mode 100644
index d960ed61..00000000
--- a/vendor/twig/twig/tests/Node/ForTest.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\ForNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class ForTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $keyTarget = new AssignNameExpression('key', 1);
-        $valueTarget = new AssignNameExpression('item', 1);
-        $seq = new NameExpression('items', 1);
-        $ifexpr = new ConstantExpression(true, 1);
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-
-        $this->assertEquals($keyTarget, $node->getNode('key_target'));
-        $this->assertEquals($valueTarget, $node->getNode('value_target'));
-        $this->assertEquals($seq, $node->getNode('seq'));
-        $this->assertTrue($node->getAttribute('ifexpr'));
-        $this->assertInstanceOf('\Twig\Node\IfNode', $node->getNode('body'));
-        $this->assertEquals($body, $node->getNode('body')->getNode('tests')->getNode(1)->getNode(0));
-        $this->assertFalse($node->hasNode('else'));
-
-        $else = new PrintNode(new NameExpression('foo', 1), 1);
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-        $this->assertEquals($else, $node->getNode('else'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $keyTarget = new AssignNameExpression('key', 1);
-        $valueTarget = new AssignNameExpression('item', 1);
-        $seq = new NameExpression('items', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', false);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('items')});
-foreach (\$context['_seq'] as \$context["key"] => \$context["item"]) {
-    echo {$this->getVariableGetter('foo')};
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['key'], \$context['item'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {
-    \$length = count(\$context['_seq']);
-    \$context['loop']['revindex0'] = \$length - 1;
-    \$context['loop']['revindex'] = \$length;
-    \$context['loop']['length'] = \$length;
-    \$context['loop']['last'] = 1 === \$length;
-}
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    echo {$this->getVariableGetter('foo')};
-    ++\$context['loop']['index0'];
-    ++\$context['loop']['index'];
-    \$context['loop']['first'] = false;
-    if (isset(\$context['loop']['length'])) {
-        --\$context['loop']['revindex0'];
-        --\$context['loop']['revindex'];
-        \$context['loop']['last'] = 0 === \$context['loop']['revindex0'];
-    }
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = new ConstantExpression(true, 1);
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = null;
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    if (true) {
-        echo {$this->getVariableGetter('foo')};
-        ++\$context['loop']['index0'];
-        ++\$context['loop']['index'];
-        \$context['loop']['first'] = false;
-    }
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        $keyTarget = new AssignNameExpression('k', 1);
-        $valueTarget = new AssignNameExpression('v', 1);
-        $seq = new NameExpression('values', 1);
-        $ifexpr = null;
-        $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1);
-        $else = new PrintNode(new NameExpression('foo', 1), 1);
-        $node = new ForNode($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1);
-        $node->setAttribute('with_loop', true);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context['_parent'] = \$context;
-\$context['_seq'] = twig_ensure_traversable({$this->getVariableGetter('values')});
-\$context['_iterated'] = false;
-\$context['loop'] = [
-  'parent' => \$context['_parent'],
-  'index0' => 0,
-  'index'  => 1,
-  'first'  => true,
-];
-if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof \Countable)) {
-    \$length = count(\$context['_seq']);
-    \$context['loop']['revindex0'] = \$length - 1;
-    \$context['loop']['revindex'] = \$length;
-    \$context['loop']['length'] = \$length;
-    \$context['loop']['last'] = 1 === \$length;
-}
-foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) {
-    echo {$this->getVariableGetter('foo')};
-    \$context['_iterated'] = true;
-    ++\$context['loop']['index0'];
-    ++\$context['loop']['index'];
-    \$context['loop']['first'] = false;
-    if (isset(\$context['loop']['length'])) {
-        --\$context['loop']['revindex0'];
-        --\$context['loop']['revindex'];
-        \$context['loop']['last'] = 0 === \$context['loop']['revindex0'];
-    }
-}
-if (!\$context['_iterated']) {
-    echo {$this->getVariableGetter('foo')};
-}
-\$_parent = \$context['_parent'];
-unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']);
-\$context = array_intersect_key(\$context, \$_parent) + \$_parent;
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/IfTest.php b/vendor/twig/twig/tests/Node/IfTest.php
deleted file mode 100644
index d5a6eac8..00000000
--- a/vendor/twig/twig/tests/Node/IfTest.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\IfNode;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class IfTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $this->assertEquals($t, $node->getNode('tests'));
-        $this->assertFalse($node->hasNode('else'));
-
-        $else = new PrintNode(new NameExpression('bar', 1), 1);
-        $node = new IfNode($t, $else, 1);
-        $this->assertEquals($else, $node->getNode('else'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-}
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-            new ConstantExpression(false, 1),
-            new PrintNode(new NameExpression('bar', 1), 1),
-        ], [], 1);
-        $else = null;
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-} elseif (false) {
-    echo {$this->getVariableGetter('bar')};
-}
-EOF
-        ];
-
-        $t = new Node([
-            new ConstantExpression(true, 1),
-            new PrintNode(new NameExpression('foo', 1), 1),
-        ], [], 1);
-        $else = new PrintNode(new NameExpression('bar', 1), 1);
-        $node = new IfNode($t, $else, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (true) {
-    echo {$this->getVariableGetter('foo')};
-} else {
-    echo {$this->getVariableGetter('bar')};
-}
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ImportTest.php b/vendor/twig/twig/tests/Node/ImportTest.php
deleted file mode 100644
index dbb49ab9..00000000
--- a/vendor/twig/twig/tests/Node/ImportTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\ImportNode;
-use Twig\Test\NodeTestCase;
-
-class ImportTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $macro = new ConstantExpression('foo.twig', 1);
-        $var = new AssignNameExpression('macro', 1);
-        $node = new ImportNode($macro, $var, 1);
-
-        $this->assertEquals($macro, $node->getNode('expr'));
-        $this->assertEquals($var, $node->getNode('var'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $macro = new ConstantExpression('foo.twig', 1);
-        $var = new AssignNameExpression('macro', 1);
-        $node = new ImportNode($macro, $var, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["macro"] = \$this->loadTemplate("foo.twig", null, 1)->unwrap();
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/IncludeTest.php b/vendor/twig/twig/tests/Node/IncludeTest.php
deleted file mode 100644
index ab1fdf0b..00000000
--- a/vendor/twig/twig/tests/Node/IncludeTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ArrayExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\IncludeNode;
-use Twig\Test\NodeTestCase;
-
-class IncludeTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo.twig', 1);
-        $node = new IncludeNode($expr, null, false, false, 1);
-
-        $this->assertFalse($node->hasNode('variables'));
-        $this->assertEquals($expr, $node->getNode('expr'));
-        $this->assertFalse($node->getAttribute('only'));
-
-        $vars = new ArrayExpression([new ConstantExpression('foo', 1), new ConstantExpression(true, 1)], 1);
-        $node = new IncludeNode($expr, $vars, true, false, 1);
-        $this->assertEquals($vars, $node->getNode('variables'));
-        $this->assertTrue($node->getAttribute('only'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $expr = new ConstantExpression('foo.twig', 1);
-        $node = new IncludeNode($expr, null, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(\$context);
-EOF
-        ];
-
-        $expr = new ConditionalExpression(
-                        new ConstantExpression(true, 1),
-                        new ConstantExpression('foo', 1),
-                        new ConstantExpression('foo', 1),
-                        0
-                    );
-        $node = new IncludeNode($expr, null, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate(((true) ? ("foo") : ("foo")), null, 1)->display(\$context);
-EOF
-        ];
-
-        $expr = new ConstantExpression('foo.twig', 1);
-        $vars = new ArrayExpression([new ConstantExpression('foo', 1), new ConstantExpression(true, 1)], 1);
-        $node = new IncludeNode($expr, $vars, false, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(twig_array_merge(\$context, ["foo" => true]));
-EOF
-        ];
-
-        $node = new IncludeNode($expr, $vars, true, false, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$this->loadTemplate("foo.twig", null, 1)->display(twig_to_array(["foo" => true]));
-EOF
-        ];
-
-        $node = new IncludeNode($expr, $vars, true, true, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$__internal_%s = null;
-try {
-    \$__internal_%s =     \$this->loadTemplate("foo.twig", null, 1);
-} catch (LoaderError \$e) {
-    // ignore missing template
-}
-if (\$__internal_%s) {
-    \$__internal_%s->display(twig_to_array(["foo" => true]));
-}
-EOF
-        , null, true];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/MacroTest.php b/vendor/twig/twig/tests/Node/MacroTest.php
deleted file mode 100644
index 82fc9999..00000000
--- a/vendor/twig/twig/tests/Node/MacroTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\MacroNode;
-use Twig\Node\Node;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class MacroTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $arguments = new Node([new NameExpression('foo', 1)], [], 1);
-        $node = new MacroNode('foo', $body, $arguments, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals($arguments, $node->getNode('arguments'));
-        $this->assertEquals('foo', $node->getAttribute('name'));
-    }
-
-    public function getTests()
-    {
-        $body = new TextNode('foo', 1);
-        $arguments = new Node([
-            'foo' => new ConstantExpression(null, 1),
-            'bar' => new ConstantExpression('Foo', 1),
-        ], [], 1);
-        $node = new MacroNode('foo', $body, $arguments, 1);
-
-        if (\PHP_VERSION_ID >= 50600) {
-            $declaration = ', ...$__varargs__';
-            $varargs = '$__varargs__';
-        } else {
-            $declaration = '';
-            $varargs = 'func_num_args() > 2 ? array_slice(func_get_args(), 2) : []';
-        }
-
-        return [
-            [$node, <<<EOF
-// line 1
-public function getfoo(\$__foo__ = null, \$__bar__ = "Foo"$declaration)
-{
-    \$context = \$this->env->mergeGlobals([
-        "foo" => \$__foo__,
-        "bar" => \$__bar__,
-        "varargs" => $varargs,
-    ]);
-
-    \$blocks = [];
-
-    ob_start(function () { return ''; });
-    try {
-        echo "foo";
-    } catch (\Exception \$e) {
-        ob_end_clean();
-
-        throw \$e;
-    } catch (\Throwable \$e) {
-        ob_end_clean();
-
-        throw \$e;
-    }
-
-    return ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());
-}
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/ModuleTest.php b/vendor/twig/twig/tests/Node/ModuleTest.php
deleted file mode 100644
index aa000d39..00000000
--- a/vendor/twig/twig/tests/Node/ModuleTest.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConditionalExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\ImportNode;
-use Twig\Node\ModuleNode;
-use Twig\Node\Node;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Source;
-use Twig\Test\NodeTestCase;
-
-class ModuleTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $parent = new ConstantExpression('layout.twig', 1);
-        $blocks = new Node();
-        $macros = new Node();
-        $traits = new Node();
-        $source = new Source('{{ foo }}', 'foo.twig');
-        $node = new ModuleNode($body, $parent, $blocks, $macros, $traits, new Node([]), $source);
-
-        $this->assertEquals($body, $node->getNode('body'));
-        $this->assertEquals($blocks, $node->getNode('blocks'));
-        $this->assertEquals($macros, $node->getNode('macros'));
-        $this->assertEquals($parent, $node->getNode('parent'));
-        $this->assertEquals($source->getName(), $node->getTemplateName());
-    }
-
-    public function getTests()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-
-        $tests = [];
-
-        $body = new TextNode('foo', 1);
-        $extends = null;
-        $blocks = new Node();
-        $macros = new Node();
-        $traits = new Node();
-        $source = new Source('{{ foo }}', 'foo.twig');
-
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    public function __construct(Environment \$env)
-    {
-        parent::__construct(\$env);
-
-        \$this->parent = false;
-
-        \$this->blocks = [
-        ];
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 1
-        echo "foo";
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  30 => 1,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        $import = new ImportNode(new ConstantExpression('foo.twig', 1), new AssignNameExpression('macro', 1), 2);
-
-        $body = new Node([$import]);
-        $extends = new ConstantExpression('layout.twig', 1);
-
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    public function __construct(Environment \$env)
-    {
-        parent::__construct(\$env);
-
-        \$this->blocks = [
-        ];
-    }
-
-    protected function doGetParent(array \$context)
-    {
-        // line 1
-        return "layout.twig";
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 2
-        \$context["macro"] = \$this->loadTemplate("foo.twig", "foo.twig", 2)->unwrap();
-        // line 1
-        \$this->parent = \$this->loadTemplate("layout.twig", "foo.twig", 1);
-        \$this->parent->display(\$context, array_merge(\$this->blocks, \$blocks));
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  36 => 1,  34 => 2,  28 => 1,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        $set = new SetNode(false, new Node([new AssignNameExpression('foo', 4)]), new Node([new ConstantExpression('foo', 4)]), 4);
-        $body = new Node([$set]);
-        $extends = new ConditionalExpression(
-                        new ConstantExpression(true, 2),
-                        new ConstantExpression('foo', 2),
-                        new ConstantExpression('foo', 2),
-                        2
-                    );
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['debug' => true]);
-        $node = new ModuleNode($body, $extends, $blocks, $macros, $traits, new Node([]), $source);
-        $tests[] = [$node, <<<EOF
-<?php
-
-use Twig\Environment;
-use Twig\Error\LoaderError;
-use Twig\Error\RuntimeError;
-use Twig\Markup;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityNotAllowedTagError;
-use Twig\Sandbox\SecurityNotAllowedFilterError;
-use Twig\Sandbox\SecurityNotAllowedFunctionError;
-use Twig\Source;
-use Twig\Template;
-
-/* foo.twig */
-class __TwigTemplate_%x extends \Twig\Template
-{
-    protected function doGetParent(array \$context)
-    {
-        // line 2
-        return \$this->loadTemplate(((true) ? ("foo") : ("foo")), "foo.twig", 2);
-    }
-
-    protected function doDisplay(array \$context, array \$blocks = [])
-    {
-        // line 4
-        \$context["foo"] = "foo";
-        // line 2
-        \$this->getParent(\$context)->display(\$context, array_merge(\$this->blocks, \$blocks));
-    }
-
-    public function getTemplateName()
-    {
-        return "foo.twig";
-    }
-
-    public function isTraitable()
-    {
-        return false;
-    }
-
-    public function getDebugInfo()
-    {
-        return array (  28 => 2,  26 => 4,  20 => 2,);
-    }
-
-    /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
-    public function getSource()
-    {
-        @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
-
-        return \$this->getSourceContext()->getCode();
-    }
-
-    public function getSourceContext()
-    {
-        return new Source("{{ foo }}", "foo.twig", "");
-    }
-}
-EOF
-        , $twig, true];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/PrintTest.php b/vendor/twig/twig/tests/Node/PrintTest.php
deleted file mode 100644
index 49f8eb49..00000000
--- a/vendor/twig/twig/tests/Node/PrintTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\PrintNode;
-use Twig\Test\NodeTestCase;
-
-class PrintTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $expr = new ConstantExpression('foo', 1);
-        $node = new PrintNode($expr, 1);
-
-        $this->assertEquals($expr, $node->getNode('expr'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new PrintNode(new ConstantExpression('foo', 1), 1), "// line 1\necho \"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SandboxTest.php b/vendor/twig/twig/tests/Node/SandboxTest.php
deleted file mode 100644
index b81781e8..00000000
--- a/vendor/twig/twig/tests/Node/SandboxTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\SandboxNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SandboxTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new TextNode('foo', 1);
-        $node = new SandboxNode($body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $body = new TextNode('foo', 1);
-        $node = new SandboxNode($body, 1);
-
-        $tests[] = [$node, <<<EOF
-// line 1
-if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {
-    \$this->sandbox->enableSandbox();
-}
-echo "foo";
-if (!\$alreadySandboxed) {
-    \$this->sandbox->disableSandbox();
-}
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SetTest.php b/vendor/twig/twig/tests/Node/SetTest.php
deleted file mode 100644
index 370af95f..00000000
--- a/vendor/twig/twig/tests/Node/SetTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Expression\AssignNameExpression;
-use Twig\Node\Expression\ConstantExpression;
-use Twig\Node\Expression\NameExpression;
-use Twig\Node\Node;
-use Twig\Node\PrintNode;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SetTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-
-        $this->assertEquals($names, $node->getNode('names'));
-        $this->assertEquals($values, $node->getNode('values'));
-        $this->assertFalse($node->getAttribute('capture'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["foo"] = "foo";
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new Node([new PrintNode(new ConstantExpression('foo', 1), 1)], [], 1);
-        $node = new SetNode(true, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-ob_start(function () { return ''; });
-echo "foo";
-\$context["foo"] = ('' === \$tmp = ob_get_clean()) ? '' : new Markup(\$tmp, \$this->env->getCharset());
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1)], [], 1);
-        $values = new TextNode('foo', 1);
-        $node = new SetNode(true, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-\$context["foo"] = ('' === \$tmp = "foo") ? '' : new Markup(\$tmp, \$this->env->getCharset());
-EOF
-        ];
-
-        $names = new Node([new AssignNameExpression('foo', 1), new AssignNameExpression('bar', 1)], [], 1);
-        $values = new Node([new ConstantExpression('foo', 1), new NameExpression('bar', 1)], [], 1);
-        $node = new SetNode(false, $names, $values, 1);
-        $tests[] = [$node, <<<EOF
-// line 1
-list(\$context["foo"], \$context["bar"]) = ["foo", {$this->getVariableGetter('bar')}];
-EOF
-        ];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/SpacelessTest.php b/vendor/twig/twig/tests/Node/SpacelessTest.php
deleted file mode 100644
index 5f3c8144..00000000
--- a/vendor/twig/twig/tests/Node/SpacelessTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\Node;
-use Twig\Node\SpacelessNode;
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class SpacelessTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $body = new Node([new TextNode('<div>   <div>   foo   </div>   </div>', 1)]);
-        $node = new SpacelessNode($body, 1);
-
-        $this->assertEquals($body, $node->getNode('body'));
-    }
-
-    public function getTests()
-    {
-        $body = new Node([new TextNode('<div>   <div>   foo   </div>   </div>', 1)]);
-        $node = new SpacelessNode($body, 1);
-
-        return [
-            [$node, <<<EOF
-// line 1
-ob_start(function () { return ''; });
-echo "<div>   <div>   foo   </div>   </div>";
-echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));
-EOF
-            ],
-        ];
-    }
-}
diff --git a/vendor/twig/twig/tests/Node/TextTest.php b/vendor/twig/twig/tests/Node/TextTest.php
deleted file mode 100644
index ace19121..00000000
--- a/vendor/twig/twig/tests/Node/TextTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-namespace Twig\Tests\Node;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Node\TextNode;
-use Twig\Test\NodeTestCase;
-
-class TextTest extends NodeTestCase
-{
-    public function testConstructor()
-    {
-        $node = new TextNode('foo', 1);
-
-        $this->assertEquals('foo', $node->getAttribute('data'));
-    }
-
-    public function getTests()
-    {
-        $tests = [];
-        $tests[] = [new TextNode('foo', 1), "// line 1\necho \"foo\";"];
-
-        return $tests;
-    }
-}
diff --git a/vendor/twig/twig/tests/NodeTraverserTest.php b/vendor/twig/twig/tests/NodeTraverserTest.php
deleted file mode 100644
index 7136ae7f..00000000
--- a/vendor/twig/twig/tests/NodeTraverserTest.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\Node;
-use Twig\NodeTraverser;
-use Twig\NodeVisitor\NodeVisitorInterface;
-
-class NodeTraverserTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @group legacy
-     */
-    public function testNodeIsNullWhenTraversing()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $traverser = new NodeTraverser($env, [new IdentityVisitor()]);
-        $n = new Node([new Node([]), null, new Node([])]);
-        $this->assertCount(3, $traverser->traverse($n));
-    }
-}
-
-class IdentityVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
diff --git a/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php b/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php
deleted file mode 100644
index 6bcc8282..00000000
--- a/vendor/twig/twig/tests/NodeVisitor/OptimizerTest.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-namespace Twig\Tests\NodeVisitor;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\ForNode;
-use Twig\Source;
-
-class OptimizerTest extends \PHPUnit\Framework\TestCase
-{
-    public function testRenderBlockOptimizer()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source('{{ block("foo") }}', 'index')));
-
-        $node = $stream->getNode('body')->getNode(0);
-
-        $this->assertInstanceOf('\Twig\Node\Expression\BlockReferenceExpression', $node);
-        $this->assertTrue($node->getAttribute('output'));
-    }
-
-    public function testRenderParentBlockOptimizer()
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false, 'autoescape' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source('{% extends "foo" %}{% block content %}{{ parent() }}{% endblock %}', 'index')));
-
-        $node = $stream->getNode('blocks')->getNode('content')->getNode(0)->getNode('body');
-
-        $this->assertInstanceOf('\Twig\Node\Expression\ParentExpression', $node);
-        $this->assertTrue($node->getAttribute('output'));
-    }
-
-    /**
-     * @dataProvider getTestsForForOptimizer
-     */
-    public function testForOptimizer($template, $expected)
-    {
-        $env = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['cache' => false]);
-
-        $stream = $env->parse($env->tokenize(new Source($template, 'index')));
-
-        foreach ($expected as $target => $withLoop) {
-            $this->assertTrue($this->checkForConfiguration($stream, $target, $withLoop), sprintf('variable %s is %soptimized', $target, $withLoop ? 'not ' : ''));
-        }
-    }
-
-    public function getTestsForForOptimizer()
-    {
-        return [
-            ['{% for i in foo %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ loop.index }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{% endfor %}{% endfor %}', ['i' => false, 'j' => false]],
-
-            ['{% for i in foo %}{% include "foo" %}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% include "foo" only %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{% include "foo" with { "foo": "bar" } only %}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{% include "foo" with { "foo": loop.index } only %}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop.index }}{% endfor %}{% endfor %}', ['i' => false, 'j' => true]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop.parent.loop.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => true]],
-
-            ['{% for i in foo %}{% set l = loop %}{% for j in foo %}{{ l.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => false]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ foo.parent.loop.index }}{% endfor %}{% endfor %}', ['i' => false, 'j' => false]],
-
-            ['{% for i in foo %}{% for j in foo %}{{ loop["parent"].loop.index }}{% endfor %}{% endfor %}', ['i' => true, 'j' => true]],
-
-            ['{% for i in foo %}{{ include("foo") }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{{ include("foo", with_context = false) }}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ include("foo", with_context = true) }}{% endfor %}', ['i' => true]],
-
-            ['{% for i in foo %}{{ include("foo", { "foo": "bar" }, with_context = false) }}{% endfor %}', ['i' => false]],
-
-            ['{% for i in foo %}{{ include("foo", { "foo": loop.index }, with_context = false) }}{% endfor %}', ['i' => true]],
-        ];
-    }
-
-    public function checkForConfiguration(\Twig_NodeInterface $node = null, $target, $withLoop)
-    {
-        if (null === $node) {
-            return;
-        }
-
-        foreach ($node as $n) {
-            if ($n instanceof ForNode) {
-                if ($target === $n->getNode('value_target')->getAttribute('name')) {
-                    return $withLoop == $n->getAttribute('with_loop');
-                }
-            }
-
-            $ret = $this->checkForConfiguration($n, $target, $withLoop);
-            if (null !== $ret) {
-                return $ret;
-            }
-        }
-    }
-}
diff --git a/vendor/twig/twig/tests/ParserTest.php b/vendor/twig/twig/tests/ParserTest.php
deleted file mode 100644
index 917d5dea..00000000
--- a/vendor/twig/twig/tests/ParserTest.php
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Node\MacroNode;
-use Twig\Node\Node;
-use Twig\Node\SetNode;
-use Twig\Node\TextNode;
-use Twig\Parser;
-use Twig\Source;
-use Twig\Token;
-use Twig\TokenParser\AbstractTokenParser;
-use Twig\TokenStream;
-
-class ParserTest extends \PHPUnit\Framework\TestCase
-{
-    public function testSetMacroThrowsExceptionOnReservedMethods()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $parser = $this->getParser();
-        $parser->setMacro('parent', new MacroNode('foo', new Node(), new Node(), 1));
-    }
-
-    public function testUnknownTag()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foo" tag. Did you mean "for" at line 1?');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foo', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]);
-        $parser = new Parser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->parse($stream);
-    }
-
-    public function testUnknownTagWithoutSuggestions()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unknown "foobar" tag at line 1.');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foobar', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]);
-        $parser = new Parser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->parse($stream);
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesData
-     */
-    public function testFilterBodyNodes($input, $expected)
-    {
-        $parser = $this->getParser();
-
-        $this->assertEquals($expected, $parser->filterBodyNodes($input));
-    }
-
-    public function getFilterBodyNodesData()
-    {
-        return [
-            [
-                new Node([new TextNode('   ', 1)]),
-                new Node([]),
-            ],
-            [
-                $input = new Node([new SetNode(false, new Node(), new Node(), 1)]),
-                $input,
-            ],
-            [
-                $input = new Node([new SetNode(true, new Node(), new Node([new Node([new TextNode('foo', 1)])]), 1)]),
-                $input,
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesDataThrowsException
-     */
-    public function testFilterBodyNodesThrowsException($input)
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-
-        $parser = $this->getParser();
-
-        $parser->filterBodyNodes($input);
-    }
-
-    public function getFilterBodyNodesDataThrowsException()
-    {
-        return [
-            [new TextNode('foo', 1)],
-            [new Node([new Node([new TextNode('foo', 1)])])],
-        ];
-    }
-
-    /**
-     * @dataProvider getFilterBodyNodesWithBOMData
-     */
-    public function testFilterBodyNodesWithBOM($emptyNode)
-    {
-        $this->assertNull($this->getParser()->filterBodyNodes(new TextNode(\chr(0xEF).\chr(0xBB).\chr(0xBF).$emptyNode, 1)));
-    }
-
-    public function getFilterBodyNodesWithBOMData()
-    {
-        return [
-            [' '],
-            ["\t"],
-            ["\n"],
-            ["\n\t\n   "],
-        ];
-    }
-
-    public function testParseIsReentrant()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), [
-            'autoescape' => false,
-            'optimizations' => 0,
-        ]);
-        $twig->addTokenParser(new TestTokenParser());
-
-        $parser = new Parser($twig);
-
-        $parser->parse(new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'test', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::VAR_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'foo', 1),
-            new Token(Token::VAR_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]));
-
-        $this->assertNull($parser->getParent());
-    }
-
-    public function testGetVarName()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'), [
-            'autoescape' => false,
-            'optimizations' => 0,
-        ]);
-
-        $twig->parse($twig->tokenize(new Source(<<<EOF
-{% from _self import foo %}
-
-{% macro foo() %}
-    {{ foo }}
-{% endmacro %}
-EOF
-        , 'index')));
-
-        // The getVarName() must not depend on the template loaders,
-        // If this test does not throw any exception, that's good.
-        // see https://github.com/symfony/symfony/issues/4218
-        $this->addToAssertionCount(1);
-    }
-
-    protected function getParser()
-    {
-        $parser = new TestParser(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-        $parser->setParent(new Node());
-        $parser->stream = new TokenStream([]);
-
-        return $parser;
-    }
-}
-
-class TestParser extends Parser
-{
-    public $stream;
-
-    public function filterBodyNodes(\Twig_NodeInterface $node)
-    {
-        return parent::filterBodyNodes($node);
-    }
-}
-
-class TestTokenParser extends AbstractTokenParser
-{
-    public function parse(Token $token)
-    {
-        // simulate the parsing of another template right in the middle of the parsing of the current template
-        $this->parser->parse(new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, '', 1),
-            new Token(Token::NAME_TYPE, 'extends', 1),
-            new Token(Token::STRING_TYPE, 'base', 1),
-            new Token(Token::BLOCK_END_TYPE, '', 1),
-            new Token(Token::EOF_TYPE, '', 1),
-        ]));
-
-        $this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
-
-        return new Node([]);
-    }
-
-    public function getTag()
-    {
-        return 'test';
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php b/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php
deleted file mode 100644
index a55bfa0d..00000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/AbstractTest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Profile;
-
-abstract class AbstractTest extends \PHPUnit\Framework\TestCase
-{
-    protected function getProfile()
-    {
-        $profile = new Profile('main');
-        $subProfiles = [
-            $this->getIndexProfile(
-                [
-                    $this->getEmbeddedBlockProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        [
-                            $this->getIncludedTemplateProfile(),
-                        ]
-                    ),
-                    $this->getMacroProfile(),
-                    $this->getEmbeddedTemplateProfile(
-                        [
-                            $this->getIncludedTemplateProfile(),
-                        ]
-                    ),
-                ]
-            ),
-        ];
-
-        $p = new \ReflectionProperty($profile, 'profiles');
-        $p->setAccessible(true);
-        $p->setValue($profile, $subProfiles);
-
-        return $profile;
-    }
-
-    private function getIndexProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 1, 'template', 'index.twig', $subProfiles);
-    }
-
-    private function getEmbeddedBlockProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('body', 0.0001, 'block', 'embedded.twig', $subProfiles);
-    }
-
-    private function getEmbeddedTemplateProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 0.0001, 'template', 'embedded.twig', $subProfiles);
-    }
-
-    private function getIncludedTemplateProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('main', 0.0001, 'template', 'included.twig', $subProfiles);
-    }
-
-    private function getMacroProfile(array $subProfiles = [])
-    {
-        return $this->generateProfile('foo', 0.0001, 'macro', 'index.twig', $subProfiles);
-    }
-
-    /**
-     * @param string $name
-     * @param float  $duration
-     * @param bool   $isTemplate
-     * @param string $type
-     * @param string $templateName
-     * @param array  $subProfiles
-     *
-     * @return Profile
-     */
-    private function generateProfile($name, $duration, $type, $templateName, array $subProfiles = [])
-    {
-        $profile = new Profile($templateName, $type, $name);
-
-        $p = new \ReflectionProperty($profile, 'profiles');
-        $p->setAccessible(true);
-        $p->setValue($profile, $subProfiles);
-
-        $starts = new \ReflectionProperty($profile, 'starts');
-        $starts->setAccessible(true);
-        $starts->setValue($profile, [
-            'wt' => 0,
-            'mu' => 0,
-            'pmu' => 0,
-        ]);
-        $ends = new \ReflectionProperty($profile, 'ends');
-        $ends->setAccessible(true);
-        $ends->setValue($profile, [
-            'wt' => $duration,
-            'mu' => 0,
-            'pmu' => 0,
-        ]);
-
-        return $profile;
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php b/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php
deleted file mode 100644
index b1c2cd7d..00000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/BlackfireTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\BlackfireDumper;
-
-class BlackfireTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new BlackfireDumper();
-
-        $this->assertStringMatchesFormat(<<<EOF
-file-format: BlackfireProbe
-cost-dimensions: wt mu pmu
-request-start: %d.%d
-
-main()//1 %d %d %d
-main()==>index.twig//1 %d %d %d
-index.twig==>embedded.twig::block(body)//1 %d %d 0
-index.twig==>embedded.twig//2 %d %d %d
-embedded.twig==>included.twig//2 %d %d %d
-index.twig==>index.twig::macro(foo)//1 %d %d %d
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php b/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php
deleted file mode 100644
index 20a1ab43..00000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/HtmlTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\HtmlDumper;
-
-class HtmlTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new HtmlDumper();
-        $this->assertStringMatchesFormat(<<<EOF
-<pre>main <span style="color: #d44">%d.%dms/%d%</span>
-â”” <span style="background-color: #ffd">index.twig</span> <span style="color: #d44">%d.%dms/%d%</span>
-  â”” embedded.twig::block(<span style="background-color: #dfd">body</span>)
-  â”” <span style="background-color: #ffd">embedded.twig</span>
-  │ └ <span style="background-color: #ffd">included.twig</span>
-  â”” index.twig::macro(<span style="background-color: #ddf">foo</span>)
-  â”” <span style="background-color: #ffd">embedded.twig</span>
-    â”” <span style="background-color: #ffd">included.twig</span>
-</pre>
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php b/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php
deleted file mode 100644
index 8240e356..00000000
--- a/vendor/twig/twig/tests/Profiler/Dumper/TextTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler\Dumper;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Dumper\TextDumper;
-
-class TextTest extends AbstractTest
-{
-    public function testDump()
-    {
-        $dumper = new TextDumper();
-        $this->assertStringMatchesFormat(<<<EOF
-main %d.%dms/%d%
-â”” index.twig %d.%dms/%d%
-  â”” embedded.twig::block(body)
-  â”” embedded.twig
-  │ └ included.twig
-  â”” index.twig::macro(foo)
-  â”” embedded.twig
-    â”” included.twig
-
-EOF
-        , $dumper->dump($this->getProfile()));
-    }
-}
diff --git a/vendor/twig/twig/tests/Profiler/ProfileTest.php b/vendor/twig/twig/tests/Profiler/ProfileTest.php
deleted file mode 100644
index 0b7fd272..00000000
--- a/vendor/twig/twig/tests/Profiler/ProfileTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-namespace Twig\Tests\Profiler;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Profiler\Profile;
-
-class ProfileTest extends \PHPUnit\Framework\TestCase
-{
-    public function testConstructor()
-    {
-        $profile = new Profile('template', 'type', 'name');
-
-        $this->assertEquals('template', $profile->getTemplate());
-        $this->assertEquals('type', $profile->getType());
-        $this->assertEquals('name', $profile->getName());
-    }
-
-    public function testIsRoot()
-    {
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertTrue($profile->isRoot());
-
-        $profile = new Profile('template', Profile::TEMPLATE);
-        $this->assertFalse($profile->isRoot());
-    }
-
-    public function testIsTemplate()
-    {
-        $profile = new Profile('template', Profile::TEMPLATE);
-        $this->assertTrue($profile->isTemplate());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isTemplate());
-    }
-
-    public function testIsBlock()
-    {
-        $profile = new Profile('template', Profile::BLOCK);
-        $this->assertTrue($profile->isBlock());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isBlock());
-    }
-
-    public function testIsMacro()
-    {
-        $profile = new Profile('template', Profile::MACRO);
-        $this->assertTrue($profile->isMacro());
-
-        $profile = new Profile('template', Profile::ROOT);
-        $this->assertFalse($profile->isMacro());
-    }
-
-    public function testGetAddProfile()
-    {
-        $profile = new Profile();
-        $profile->addProfile($a = new Profile());
-        $profile->addProfile($b = new Profile());
-
-        $this->assertSame([$a, $b], $profile->getProfiles());
-        $this->assertSame([$a, $b], iterator_to_array($profile));
-    }
-
-    public function testGetDuration()
-    {
-        $profile = new Profile();
-        usleep(1);
-        $profile->leave();
-
-        $this->assertTrue($profile->getDuration() > 0, sprintf('Expected duration > 0, got: %f', $profile->getDuration()));
-    }
-
-    public function testSerialize()
-    {
-        $profile = new Profile('template', 'type', 'name');
-        $profile1 = new Profile('template1', 'type1', 'name1');
-        $profile->addProfile($profile1);
-        $profile->leave();
-        $profile1->leave();
-
-        $profile2 = unserialize(serialize($profile));
-        $profiles = $profile->getProfiles();
-        $this->assertCount(1, $profiles);
-        $profile3 = $profiles[0];
-
-        $this->assertEquals($profile->getTemplate(), $profile2->getTemplate());
-        $this->assertEquals($profile->getType(), $profile2->getType());
-        $this->assertEquals($profile->getName(), $profile2->getName());
-        $this->assertEquals($profile->getDuration(), $profile2->getDuration());
-
-        $this->assertEquals($profile1->getTemplate(), $profile3->getTemplate());
-        $this->assertEquals($profile1->getType(), $profile3->getType());
-        $this->assertEquals($profile1->getName(), $profile3->getName());
-    }
-
-    public function testReset()
-    {
-        $profile = new Profile();
-        usleep(1);
-        $profile->leave();
-        $profile->reset();
-
-        $this->assertEquals(0, $profile->getDuration());
-    }
-}
diff --git a/vendor/twig/twig/tests/TemplateTest.php b/vendor/twig/twig/tests/TemplateTest.php
deleted file mode 100644
index 41f8d1b0..00000000
--- a/vendor/twig/twig/tests/TemplateTest.php
+++ /dev/null
@@ -1,809 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Error\RuntimeError;
-use Twig\Extension\SandboxExtension;
-use Twig\Loader\ArrayLoader;
-use Twig\Loader\LoaderInterface;
-use Twig\Loader\SourceContextLoaderInterface;
-use Twig\Node\Expression\GetAttrExpression;
-use Twig\NodeVisitor\NodeVisitorInterface;
-use Twig\Sandbox\SecurityError;
-use Twig\Sandbox\SecurityPolicy;
-use Twig\Template;
-
-class TemplateTest extends \PHPUnit\Framework\TestCase
-{
-    public function testDisplayBlocksAcceptTemplateOnlyAsBlocks()
-    {
-        $this->expectException('\LogicException');
-
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $template = new TemplateForTest($twig);
-        $template->displayBlock('foo', [], ['foo' => [new \stdClass(), 'foo']]);
-    }
-
-    /**
-     * @dataProvider getAttributeExceptions
-     */
-    public function testGetAttributeExceptions($template, $message)
-    {
-        $templates = ['index' => $template];
-        $env = new Environment(new ArrayLoader($templates), ['strict_variables' => true]);
-        $template = $env->load('index');
-
-        $context = [
-            'string' => 'foo',
-            'null' => null,
-            'empty_array' => [],
-            'array' => ['foo' => 'foo'],
-            'array_access' => new TemplateArrayAccessObject(),
-            'magic_exception' => new TemplateMagicPropertyObjectWithException(),
-            'object' => new \stdClass(),
-        ];
-
-        try {
-            $template->render($context);
-            $this->fail('Accessing an invalid attribute should throw an exception.');
-        } catch (RuntimeError $e) {
-            $this->assertSame(sprintf($message, 'index'), $e->getMessage());
-        }
-    }
-
-    public function getAttributeExceptions()
-    {
-        return [
-            ['{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ null["a"] }}', 'Impossible to access a key ("a") on a null variable in "%s" at line 1.'],
-            ['{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'],
-            ['{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig\Tests\TemplateArrayAccessObject" does not exist in "%s" at line 1.'],
-            ['{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1.'],
-            ['{{ null.a }}', 'Impossible to access an attribute ("a") on a null variable in "%s" at line 1.'],
-            ['{{ null.a() }}', 'Impossible to invoke a method ("a") on a null variable in "%s" at line 1.'],
-            ['{{ array.a() }}', 'Impossible to invoke a method ("a") on an array in "%s" at line 1.'],
-            ['{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'],
-            ['{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1.'],
-            ['{{ array_access.a }}', 'Neither the property "a" nor one of the methods "a()", "geta()"/"isa()" or "__call()" exist and have public access in class "Twig\Tests\TemplateArrayAccessObject" in "%s" at line 1.'],
-            ['{% from _self import foo %}{% macro foo(obj) %}{{ obj.missing_method() }}{% endmacro %}{{ foo(array_access) }}', 'Neither the property "missing_method" nor one of the methods "missing_method()", "getmissing_method()"/"ismissing_method()" or "__call()" exist and have public access in class "Twig\Tests\TemplateArrayAccessObject" in "%s" at line 1.'],
-            ['{{ magic_exception.test }}', 'An exception has been thrown during the rendering of a template ("Hey! Don\'t try to isset me!") in "%s" at line 1.'],
-            ['{{ object["a"] }}', 'Impossible to access a key "a" on an object of class "stdClass" that does not implement ArrayAccess interface in "%s" at line 1.'],
-        ];
-    }
-
-    /**
-     * @dataProvider getGetAttributeWithSandbox
-     */
-    public function testGetAttributeWithSandbox($object, $item, $allowed)
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $policy = new SecurityPolicy([], [], [/*method*/], [/*prop*/], []);
-        $twig->addExtension(new SandboxExtension($policy, !$allowed));
-        $template = new TemplateForTest($twig);
-
-        try {
-            $template->getAttribute($object, $item, [], 'any');
-
-            if (!$allowed) {
-                $this->fail();
-            } else {
-                $this->addToAssertionCount(1);
-            }
-        } catch (SecurityError $e) {
-            if ($allowed) {
-                $this->fail();
-            } else {
-                $this->addToAssertionCount(1);
-            }
-
-            $this->assertStringContainsString('is not allowed', $e->getMessage());
-        }
-    }
-
-    public function getGetAttributeWithSandbox()
-    {
-        return [
-            [new TemplatePropertyObject(), 'defined', false],
-            [new TemplatePropertyObject(), 'defined', true],
-            [new TemplateMethodObject(), 'defined', false],
-            [new TemplateMethodObject(), 'defined', true],
-        ];
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testGetAttributeWithTemplateAsObject()
-    {
-        // to be removed in 2.0
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-        //$twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template1 = new TemplateForTest($twig, 'index1.twig');
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'string'));
-        $this->assertEquals('some_string', $template->getAttribute($template1, 'string'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'true'));
-        $this->assertEquals('1', $template->getAttribute($template1, 'true'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'zero'));
-        $this->assertEquals('0', $template->getAttribute($template1, 'zero'));
-
-        $this->assertNotInstanceof('\Twig\Markup', $template->getAttribute($template1, 'empty'));
-        $this->assertSame('', $template->getAttribute($template1, 'empty'));
-
-        $this->assertFalse($template->getAttribute($template1, 'env', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'environment', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'getEnvironment', [], Template::METHOD_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', [], Template::METHOD_CALL, true));
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0.
-     * @expectedDeprecation Calling "renderBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead).
-     * @expectedDeprecation Calling "displayBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead).
-     * @expectedDeprecation Calling "hasBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name") is defined" instead).
-     * @expectedDeprecation Calling "render" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead).
-     * @expectedDeprecation Calling "display" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead).
-     * @expectedDeprecation Calling "renderBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead).
-     * @expectedDeprecation Calling "displayBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead).
-     * @expectedDeprecation Calling "hasBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name", template) is defined" instead).
-     * @expectedDeprecation Calling "render" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead).
-     * @expectedDeprecation Calling "display" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead).
-     */
-    public function testGetAttributeWithTemplateAsObjectForDeprecations()
-    {
-        // to be removed in 2.0
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-        //$twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface', '\Twig\Loader\SourceContextLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template1 = new TemplateForTest($twig, 'index1.twig');
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'string'));
-        $this->assertEquals('some_string', $template->getAttribute($template1, 'string'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'true'));
-        $this->assertEquals('1', $template->getAttribute($template1, 'true'));
-
-        $this->assertInstanceOf('\Twig\Markup', $template->getAttribute($template1, 'zero'));
-        $this->assertEquals('0', $template->getAttribute($template1, 'zero'));
-
-        $this->assertNotInstanceof('\Twig\Markup', $template->getAttribute($template1, 'empty'));
-        $this->assertSame('', $template->getAttribute($template1, 'empty'));
-
-        $blocks = ['name' => [$template1, 'block_name']];
-
-        // trigger some deprecation notice messages to check them with @expectedDeprecation
-        $template->getAttribute($template, 'renderBlock', ['name', [], $blocks]);
-        $template->getAttribute($template, 'displayBlock', ['name', [], $blocks]);
-        $template->getAttribute($template, 'hasBlock', ['name', []]);
-        $template->getAttribute($template, 'render', [[]]);
-        $template->getAttribute($template, 'display', [[]]);
-
-        $template->getAttribute($template1, 'renderBlock', ['name', [], $blocks]);
-        $template->getAttribute($template1, 'displayBlock', ['name', [], $blocks]);
-        $template->getAttribute($template1, 'hasBlock', ['name', []]);
-        $template->getAttribute($template1, 'render', [[]]);
-        $template->getAttribute($template1, 'display', [[]]);
-
-        $this->assertFalse($template->getAttribute($template1, 'env', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'environment', [], Template::ANY_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'getEnvironment', [], Template::METHOD_CALL, true));
-        $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', [], Template::METHOD_CALL, true));
-    }
-
-    /**
-     * @group legacy
-     * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence.
-     * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence.
-     */
-    public function testRenderBlockWithUndefinedBlock()
-    {
-        $twig = new Environment($this->createMock('Twig\Tests\TemplateTestLoaderInterface'));
-
-        $template = new TemplateForTest($twig, 'index.twig');
-        $template->renderBlock('unknown', []);
-        $template->displayBlock('unknown', []);
-    }
-
-    public function testGetAttributeOnArrayWithConfusableKey()
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $array = ['Zero', 'One', -1 => 'MinusOne', '' => 'EmptyString', '1.5' => 'FloatButString', '01' => 'IntegerButStringWithLeadingZeros'];
-
-        $this->assertSame('Zero', $array[false]);
-        $this->assertSame('One', $array[true]);
-        $this->assertSame('One', $array[1.5]);
-        $this->assertSame('One', $array['1']);
-        $this->assertSame('MinusOne', $array[-1.5]);
-        $this->assertSame('FloatButString', $array['1.5']);
-        $this->assertSame('IntegerButStringWithLeadingZeros', $array['01']);
-        $this->assertSame('EmptyString', $array[null]);
-
-        $this->assertSame('Zero', $template->getAttribute($array, false), 'false is treated as 0 when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, true), 'true is treated as 1 when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, 1.5), 'float is casted to int when accessing an array (equals PHP behavior)');
-        $this->assertSame('One', $template->getAttribute($array, '1'), '"1" is treated as integer 1 when accessing an array (equals PHP behavior)');
-        $this->assertSame('MinusOne', $template->getAttribute($array, -1.5), 'negative float is casted to int when accessing an array (equals PHP behavior)');
-        $this->assertSame('FloatButString', $template->getAttribute($array, '1.5'), '"1.5" is treated as-is when accessing an array (equals PHP behavior)');
-        $this->assertSame('IntegerButStringWithLeadingZeros', $template->getAttribute($array, '01'), '"01" is treated as-is when accessing an array (equals PHP behavior)');
-        $this->assertSame('EmptyString', $template->getAttribute($array, null), 'null is treated as "" when accessing an array (equals PHP behavior)');
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttribute($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeStrict($defined, $value, $object, $item, $arguments, $type, $exceptionMessage = null)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-
-        if ($defined) {
-            $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-        } else {
-            $this->expectException('\Twig\Error\RuntimeError');
-            if (null !== $exceptionMessage) {
-                $this->expectExceptionMessage($exceptionMessage);
-            }
-            $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type));
-        }
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeDefined($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true));
-    }
-
-    /**
-     * @dataProvider getGetAttributeTests
-     */
-    public function testGetAttributeDefinedStrict($defined, $value, $object, $item, $arguments, $type)
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-
-        $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true));
-    }
-
-    public function testGetAttributeCallExceptions()
-    {
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface')));
-
-        $object = new TemplateMagicMethodExceptionObject();
-
-        $this->assertNull($template->getAttribute($object, 'foo'));
-    }
-
-    public function getGetAttributeTests()
-    {
-        $array = [
-            'defined' => 'defined',
-            'zero' => 0,
-            'null' => null,
-            '1' => 1,
-            'bar' => true,
-            'baz' => 'baz',
-            '09' => '09',
-            '+4' => '+4',
-        ];
-
-        $objectArray = new TemplateArrayAccessObject();
-        $arrayObject = new \ArrayObject($array);
-        $stdObject = (object) $array;
-        $magicPropertyObject = new TemplateMagicPropertyObject();
-        $propertyObject = new TemplatePropertyObject();
-        $propertyObject1 = new TemplatePropertyObjectAndIterator();
-        $propertyObject2 = new TemplatePropertyObjectAndArrayAccess();
-        $propertyObject3 = new TemplatePropertyObjectDefinedWithUndefinedValue();
-        $methodObject = new TemplateMethodObject();
-        $magicMethodObject = new TemplateMagicMethodObject();
-
-        $anyType = Template::ANY_CALL;
-        $methodType = Template::METHOD_CALL;
-        $arrayType = Template::ARRAY_CALL;
-
-        $basicTests = [
-            // array(defined, value, property to fetch)
-            [true,  'defined', 'defined'],
-            [false, null,      'undefined'],
-            [false, null,      'protected'],
-            [true,  0,         'zero'],
-            [true,  1,         1],
-            [true,  1,         1.0],
-            [true,  null,      'null'],
-            [true,  true,      'bar'],
-            [true,  'baz',     'baz'],
-            [true,  '09',      '09'],
-            [true,  '+4',      '+4'],
-        ];
-        $testObjects = [
-            // array(object, type of fetch)
-            [$array,               $arrayType],
-            [$objectArray,         $arrayType],
-            [$arrayObject,         $anyType],
-            [$stdObject,           $anyType],
-            [$magicPropertyObject, $anyType],
-            [$methodObject,        $methodType],
-            [$methodObject,        $anyType],
-            [$propertyObject,      $anyType],
-            [$propertyObject1,     $anyType],
-            [$propertyObject2,     $anyType],
-        ];
-
-        $tests = [];
-        foreach ($testObjects as $testObject) {
-            foreach ($basicTests as $test) {
-                // properties cannot be numbers
-                if (($testObject[0] instanceof \stdClass || $testObject[0] instanceof TemplatePropertyObject) && is_numeric($test[2])) {
-                    continue;
-                }
-
-                if ('+4' === $test[2] && $methodObject === $testObject[0]) {
-                    continue;
-                }
-
-                $tests[] = [$test[0], $test[1], $testObject[0], $test[2], [], $testObject[1]];
-            }
-        }
-
-        // additional properties tests
-        $tests = array_merge($tests, [
-            [true, null, $propertyObject3, 'foo', [], $anyType],
-        ]);
-
-        // additional method tests
-        $tests = array_merge($tests, [
-            [true, 'defined', $methodObject, 'defined',    [], $methodType],
-            [true, 'defined', $methodObject, 'DEFINED',    [], $methodType],
-            [true, 'defined', $methodObject, 'getDefined', [], $methodType],
-            [true, 'defined', $methodObject, 'GETDEFINED', [], $methodType],
-            [true, 'static',  $methodObject, 'static',     [], $methodType],
-            [true, 'static',  $methodObject, 'getStatic',  [], $methodType],
-
-            [true, '__call_undefined', $magicMethodObject, 'undefined', [], $methodType],
-            [true, '__call_UNDEFINED', $magicMethodObject, 'UNDEFINED', [], $methodType],
-        ]);
-
-        // add the same tests for the any type
-        foreach ($tests as $test) {
-            if ($anyType !== $test[5]) {
-                $test[5] = $anyType;
-                $tests[] = $test;
-            }
-        }
-
-        $methodAndPropObject = new TemplateMethodAndPropObject();
-
-        // additional method tests
-        $tests = array_merge($tests, [
-            [true, 'a', $methodAndPropObject, 'a', [], $anyType],
-            [true, 'a', $methodAndPropObject, 'a', [], $methodType],
-            [false, null, $methodAndPropObject, 'a', [], $arrayType],
-
-            [true, 'b_prop', $methodAndPropObject, 'b', [], $anyType],
-            [true, 'b', $methodAndPropObject, 'B', [], $anyType],
-            [true, 'b', $methodAndPropObject, 'b', [], $methodType],
-            [true, 'b', $methodAndPropObject, 'B', [], $methodType],
-            [false, null, $methodAndPropObject, 'b', [], $arrayType],
-
-            [false, null, $methodAndPropObject, 'c', [], $anyType],
-            [false, null, $methodAndPropObject, 'c', [], $methodType],
-            [false, null, $methodAndPropObject, 'c', [], $arrayType],
-        ]);
-
-        $arrayAccess = new TemplateArrayAccess();
-        $tests = array_merge($tests, [
-            [true, ['foo' => 'bar'], $arrayAccess, 'vars', [], $anyType],
-        ]);
-
-        // tests when input is not an array or object
-        $tests = array_merge($tests, [
-            [false, null, 42, 'a', [], $anyType, 'Impossible to access an attribute ("a") on a integer variable ("42") in "index.twig".'],
-            [false, null, 'string', 'a', [], $anyType, 'Impossible to access an attribute ("a") on a string variable ("string") in "index.twig".'],
-            [false, null, [], 'a', [], $anyType, 'Key "a" does not exist as the array is empty in "index.twig".'],
-        ]);
-
-        return $tests;
-    }
-
-    public function testGetIsMethods()
-    {
-        $this->expectException('\Twig\Error\RuntimeError');
-
-        $getIsObject = new TemplateGetIsMethods();
-        $template = new TemplateForTest(new Environment($this->createMock('\Twig\Loader\LoaderInterface'), ['strict_variables' => true]));
-        // first time should not create a cache for "get"
-        $this->assertNull($template->getAttribute($getIsObject, 'get'));
-        // 0 should be in the method cache now, so this should fail
-        $this->assertNull($template->getAttribute($getIsObject, 0));
-    }
-}
-
-class TemplateForTest extends Template
-{
-    private $name;
-
-    public function __construct(Environment $env, $name = 'index.twig')
-    {
-        parent::__construct($env);
-        self::$cache = [];
-        $this->name = $name;
-    }
-
-    public function getZero()
-    {
-        return 0;
-    }
-
-    public function getEmpty()
-    {
-        return '';
-    }
-
-    public function getString()
-    {
-        return 'some_string';
-    }
-
-    public function getTrue()
-    {
-        return true;
-    }
-
-    public function getTemplateName()
-    {
-        return $this->name;
-    }
-
-    public function getDebugInfo()
-    {
-        return [];
-    }
-
-    protected function doGetParent(array $context)
-    {
-        return false;
-    }
-
-    protected function doDisplay(array $context, array $blocks = [])
-    {
-    }
-
-    public function getAttribute($object, $item, array $arguments = [], $type = Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
-    {
-        if (\function_exists('twig_template_get_attributes')) {
-            return twig_template_get_attributes($this, $object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck);
-        } else {
-            return parent::getAttribute($object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck);
-        }
-    }
-
-    public function block_name($context, array $blocks = [])
-    {
-    }
-}
-
-class TemplateArrayAccessObject implements \ArrayAccess
-{
-    protected $protected = 'protected';
-
-    public $attributes = [
-        'defined' => 'defined',
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        'baz' => 'baz',
-        '09' => '09',
-        '+4' => '+4',
-    ];
-
-    public function offsetExists($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    public function offsetGet($name)
-    {
-        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null;
-    }
-
-    public function offsetSet($name, $value)
-    {
-    }
-
-    public function offsetUnset($name)
-    {
-    }
-}
-
-class TemplateMagicPropertyObject
-{
-    public $defined = 'defined';
-
-    public $attributes = [
-        'zero' => 0,
-        'null' => null,
-        '1' => 1,
-        'bar' => true,
-        'baz' => 'baz',
-        '09' => '09',
-        '+4' => '+4',
-    ];
-
-    protected $protected = 'protected';
-
-    public function __isset($name)
-    {
-        return \array_key_exists($name, $this->attributes);
-    }
-
-    public function __get($name)
-    {
-        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null;
-    }
-}
-
-class TemplateMagicPropertyObjectWithException
-{
-    public function __isset($key)
-    {
-        throw new \Exception('Hey! Don\'t try to isset me!');
-    }
-}
-
-class TemplatePropertyObject
-{
-    public $defined = 'defined';
-    public $zero = 0;
-    public $null = null;
-    public $bar = true;
-    public $baz = 'baz';
-
-    protected $protected = 'protected';
-}
-
-class TemplatePropertyObjectAndIterator extends TemplatePropertyObject implements \IteratorAggregate
-{
-    public function getIterator()
-    {
-        return new \ArrayIterator(['foo', 'bar']);
-    }
-}
-
-class TemplatePropertyObjectAndArrayAccess extends TemplatePropertyObject implements \ArrayAccess
-{
-    private $data = [
-        'defined' => 'defined',
-        'zero' => 0,
-        'null' => null,
-        'bar' => true,
-        'foo' => true,
-        'baz' => 'baz',
-        'baf' => 'baf',
-    ];
-
-    public function offsetExists($offset)
-    {
-        return \array_key_exists($offset, $this->data);
-    }
-
-    public function offsetGet($offset)
-    {
-        return $this->offsetExists($offset) ? $this->data[$offset] : 'n/a';
-    }
-
-    public function offsetSet($offset, $value)
-    {
-    }
-
-    public function offsetUnset($offset)
-    {
-    }
-}
-
-class TemplatePropertyObjectDefinedWithUndefinedValue
-{
-    public $foo;
-
-    public function __construct()
-    {
-        $this->foo = @$notExist;
-    }
-}
-
-class TemplateMethodObject
-{
-    public function getDefined()
-    {
-        return 'defined';
-    }
-
-    public function get1()
-    {
-        return 1;
-    }
-
-    public function get09()
-    {
-        return '09';
-    }
-
-    public function getZero()
-    {
-        return 0;
-    }
-
-    public function getNull()
-    {
-    }
-
-    public function isBar()
-    {
-        return true;
-    }
-
-    public function isBaz()
-    {
-        return 'should never be returned';
-    }
-
-    public function getBaz()
-    {
-        return 'baz';
-    }
-
-    protected function getProtected()
-    {
-        return 'protected';
-    }
-
-    public static function getStatic()
-    {
-        return 'static';
-    }
-}
-
-class TemplateGetIsMethods
-{
-    public function get()
-    {
-    }
-
-    public function is()
-    {
-    }
-}
-
-class TemplateMethodAndPropObject
-{
-    private $a = 'a_prop';
-
-    public function getA()
-    {
-        return 'a';
-    }
-
-    public $b = 'b_prop';
-
-    public function getB()
-    {
-        return 'b';
-    }
-
-    private $c = 'c_prop';
-
-    private function getC()
-    {
-        return 'c';
-    }
-}
-
-class TemplateArrayAccess implements \ArrayAccess
-{
-    public $vars = [
-        'foo' => 'bar',
-    ];
-    private $children = [];
-
-    public function offsetExists($offset)
-    {
-        return \array_key_exists($offset, $this->children);
-    }
-
-    public function offsetGet($offset)
-    {
-        return $this->children[$offset];
-    }
-
-    public function offsetSet($offset, $value)
-    {
-        $this->children[$offset] = $value;
-    }
-
-    public function offsetUnset($offset)
-    {
-        unset($this->children[$offset]);
-    }
-}
-
-class TemplateMagicMethodObject
-{
-    public function __call($method, $arguments)
-    {
-        return '__call_'.$method;
-    }
-}
-
-class TemplateMagicMethodExceptionObject
-{
-    public function __call($method, $arguments)
-    {
-        throw new \BadMethodCallException(sprintf('Unknown method "%s".', $method));
-    }
-}
-
-class CExtDisablingNodeVisitor implements NodeVisitorInterface
-{
-    public function enterNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        if ($node instanceof GetAttrExpression) {
-            $node->setAttribute('disable_c_ext', true);
-        }
-
-        return $node;
-    }
-
-    public function leaveNode(\Twig_NodeInterface $node, Environment $env)
-    {
-        return $node;
-    }
-
-    public function getPriority()
-    {
-        return 0;
-    }
-}
-
-// to be removed in 2.0
-interface TemplateTestLoaderInterface extends LoaderInterface, SourceContextLoaderInterface
-{
-}
diff --git a/vendor/twig/twig/tests/TemplateWrapperTest.php b/vendor/twig/twig/tests/TemplateWrapperTest.php
deleted file mode 100644
index b4a0958b..00000000
--- a/vendor/twig/twig/tests/TemplateWrapperTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\Loader\ArrayLoader;
-
-class TemplateWrapperTest extends \PHPUnit\Framework\TestCase
-{
-    public function testHasGetBlocks()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{% endblock %}',
-            'index_with_use' => '{% use "imported" %}{% block foo %}{% endblock %}',
-            'index_with_extends' => '{% extends "extended" %}{% block foo %}{% endblock %}',
-            'imported' => '{% block imported %}{% endblock %}',
-            'extended' => '{% block extended %}{% endblock %}',
-        ]));
-
-        $wrapper = $twig->load('index');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertFalse($wrapper->hasBlock('bar'));
-        $this->assertEquals(['foo'], $wrapper->getBlockNames());
-
-        $wrapper = $twig->load('index_with_use');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertTrue($wrapper->hasBlock('imported'));
-        $this->assertEquals(['imported', 'foo'], $wrapper->getBlockNames());
-
-        $wrapper = $twig->load('index_with_extends');
-        $this->assertTrue($wrapper->hasBlock('foo'));
-        $this->assertTrue($wrapper->hasBlock('extended'));
-        $this->assertEquals(['foo', 'extended'], $wrapper->getBlockNames());
-    }
-
-    public function testRenderBlock()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}',
-        ]));
-        $twig->addGlobal('bar', 'BAR');
-
-        $wrapper = $twig->load('index');
-        $this->assertEquals('FOOBAR', $wrapper->renderBlock('foo', ['foo' => 'FOO']));
-    }
-
-    public function testDisplayBlock()
-    {
-        $twig = new Environment(new ArrayLoader([
-            'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}',
-        ]));
-        $twig->addGlobal('bar', 'BAR');
-
-        $wrapper = $twig->load('index');
-
-        ob_start();
-        $wrapper->displayBlock('foo', ['foo' => 'FOO']);
-
-        $this->assertEquals('FOOBAR', ob_get_clean());
-    }
-}
diff --git a/vendor/twig/twig/tests/TokenStreamTest.php b/vendor/twig/twig/tests/TokenStreamTest.php
deleted file mode 100644
index c98e0f07..00000000
--- a/vendor/twig/twig/tests/TokenStreamTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Token;
-use Twig\TokenStream;
-
-class TokenStreamTest extends \PHPUnit\Framework\TestCase
-{
-    protected static $tokens;
-
-    protected function setUp()
-    {
-        self::$tokens = [
-            new Token(Token::TEXT_TYPE, 1, 1),
-            new Token(Token::TEXT_TYPE, 2, 1),
-            new Token(Token::TEXT_TYPE, 3, 1),
-            new Token(Token::TEXT_TYPE, 4, 1),
-            new Token(Token::TEXT_TYPE, 5, 1),
-            new Token(Token::TEXT_TYPE, 6, 1),
-            new Token(Token::TEXT_TYPE, 7, 1),
-            new Token(Token::EOF_TYPE, 0, 1),
-        ];
-    }
-
-    /**
-     * @group legacy
-     */
-    public function testLegacyConstructorSignature()
-    {
-        $stream = new TokenStream([], 'foo', '{{ foo }}');
-        $this->assertEquals('foo', $stream->getFilename());
-        $this->assertEquals('{{ foo }}', $stream->getSource());
-        $this->assertEquals('foo', $stream->getSourceContext()->getName());
-        $this->assertEquals('{{ foo }}', $stream->getSourceContext()->getCode());
-    }
-
-    public function testNext()
-    {
-        $stream = new TokenStream(self::$tokens);
-        $repr = [];
-        while (!$stream->isEOF()) {
-            $token = $stream->next();
-
-            $repr[] = $token->getValue();
-        }
-        $this->assertEquals('1, 2, 3, 4, 5, 6, 7', implode(', ', $repr), '->next() advances the pointer and returns the current token');
-    }
-
-    public function testEndOfTemplateNext()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unexpected end of template');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, 1, 1),
-        ]);
-        while (!$stream->isEOF()) {
-            $stream->next();
-        }
-    }
-
-    public function testEndOfTemplateLook()
-    {
-        $this->expectException('\Twig\Error\SyntaxError');
-        $this->expectExceptionMessage('Unexpected end of template');
-
-        $stream = new TokenStream([
-            new Token(Token::BLOCK_START_TYPE, 1, 1),
-        ]);
-        while (!$stream->isEOF()) {
-            $stream->look();
-            $stream->next();
-        }
-    }
-}
diff --git a/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php b/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php
deleted file mode 100644
index e360dbb1..00000000
--- a/vendor/twig/twig/tests/Util/DeprecationCollectorTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Twig\Tests\Util;
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use Twig\Environment;
-use Twig\TwigFunction;
-use Twig\Util\DeprecationCollector;
-
-class DeprecationCollectorTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @requires PHP 5.3
-     */
-    public function testCollect()
-    {
-        $twig = new Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-        $twig->addFunction(new TwigFunction('deprec', [$this, 'deprec'], ['deprecated' => true]));
-
-        $collector = new DeprecationCollector($twig);
-        $deprecations = $collector->collect(new Twig_Tests_Util_Iterator());
-
-        $this->assertEquals(['Twig Function "deprec" is deprecated in deprec.twig at line 1.'], $deprecations);
-    }
-
-    public function deprec()
-    {
-    }
-}
-
-class Twig_Tests_Util_Iterator implements \IteratorAggregate
-{
-    public function getIterator()
-    {
-        return new \ArrayIterator([
-            'ok.twig' => '{{ foo }}',
-            'deprec.twig' => '{{ deprec("foo") }}',
-        ]);
-    }
-}
diff --git a/vendor/twig/twig/tests/escapingTest.php b/vendor/twig/twig/tests/escapingTest.php
deleted file mode 100644
index 84759ebb..00000000
--- a/vendor/twig/twig/tests/escapingTest.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php
-
-namespace Twig\Tests;
-
-/**
- * This class is adapted from code coming from Zend Framework.
- *
- * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (https://www.zend.com)
- * @license   https://framework.zend.com/license/new-bsd New BSD License
- */
-class Twig_Test_EscapingTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * All character encodings supported by htmlspecialchars().
-     */
-    protected $htmlSpecialChars = [
-        '\'' => '&#039;',
-        '"' => '&quot;',
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
-    ];
-
-    protected $htmlAttrSpecialChars = [
-        '\'' => '&#x27;',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '&#x0100;',
-        '😀' => '&#x1F600;',
-        /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '-' => '-',
-        '_' => '_',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '&#x0D;',
-        "\n" => '&#x0A;',
-        "\t" => '&#x09;',
-        "\0" => '&#xFFFD;', // should use Unicode replacement char
-        /* Encode chars as named entities where possible */
-        '<' => '&lt;',
-        '>' => '&gt;',
-        '&' => '&amp;',
-        '"' => '&quot;',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '&#x20;',
-    ];
-
-    protected $jsSpecialChars = [
-        /* HTML special chars - escape without exception to hex */
-        '<' => '\\u003C',
-        '>' => '\\u003E',
-        '\'' => '\\u0027',
-        '"' => '\\u0022',
-        '&' => '\\u0026',
-        '/' => '\\/',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '\\u0100',
-        '😀' => '\\uD83D\\uDE00',
-        /* Immune chars excluded */
-        ',' => ',',
-        '.' => '.',
-        '_' => '_',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '\r',
-        "\n" => '\n',
-        "\x08" => '\b',
-        "\t" => '\t',
-        "\x0C" => '\f',
-        "\0" => '\\u0000',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\u0020',
-    ];
-
-    protected $urlSpecialChars = [
-        /* HTML special chars - escape without exception to percent encoding */
-        '<' => '%3C',
-        '>' => '%3E',
-        '\'' => '%27',
-        '"' => '%22',
-        '&' => '%26',
-        /* Characters beyond ASCII value 255 to hex sequence */
-        'Ä€' => '%C4%80',
-        /* Punctuation and unreserved check */
-        ',' => '%2C',
-        '.' => '.',
-        '_' => '_',
-        '-' => '-',
-        ':' => '%3A',
-        ';' => '%3B',
-        '!' => '%21',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '%0D',
-        "\n" => '%0A',
-        "\t" => '%09',
-        "\0" => '%00',
-        /* PHP quirks from the past */
-        ' ' => '%20',
-        '~' => '~',
-        '+' => '%2B',
-    ];
-
-    protected $cssSpecialChars = [
-        /* HTML special chars - escape without exception to hex */
-        '<' => '\\3C ',
-        '>' => '\\3E ',
-        '\'' => '\\27 ',
-        '"' => '\\22 ',
-        '&' => '\\26 ',
-        /* Characters beyond ASCII value 255 to unicode escape */
-        'Ä€' => '\\100 ',
-        /* Immune chars excluded */
-        ',' => '\\2C ',
-        '.' => '\\2E ',
-        '_' => '\\5F ',
-        /* Basic alnums excluded */
-        'a' => 'a',
-        'A' => 'A',
-        'z' => 'z',
-        'Z' => 'Z',
-        '0' => '0',
-        '9' => '9',
-        /* Basic control characters and null */
-        "\r" => '\\D ',
-        "\n" => '\\A ',
-        "\t" => '\\9 ',
-        "\0" => '\\0 ',
-        /* Encode spaces for quoteless attribute protection */
-        ' ' => '\\20 ',
-    ];
-
-    protected $env;
-
-    protected function setUp()
-    {
-        $this->env = new \Twig\Environment($this->createMock('\Twig\Loader\LoaderInterface'));
-    }
-
-    public function testHtmlEscapingConvertsSpecialChars()
-    {
-        foreach ($this->htmlSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testHtmlAttributeEscapingConvertsSpecialChars()
-    {
-        foreach ($this->htmlAttrSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html_attr'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testJavascriptEscapingConvertsSpecialChars()
-    {
-        foreach ($this->jsSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'js'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testJavascriptEscapingReturnsStringIfZeroLength()
-    {
-        $this->assertEquals('', twig_escape_filter($this->env, '', 'js'));
-    }
-
-    public function testJavascriptEscapingReturnsStringIfContainsOnlyDigits()
-    {
-        $this->assertEquals('123', twig_escape_filter($this->env, '123', 'js'));
-    }
-
-    public function testCssEscapingConvertsSpecialChars()
-    {
-        foreach ($this->cssSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'css'), 'Failed to escape: '.$key);
-        }
-    }
-
-    public function testCssEscapingReturnsStringIfZeroLength()
-    {
-        $this->assertEquals('', twig_escape_filter($this->env, '', 'css'));
-    }
-
-    public function testCssEscapingReturnsStringIfContainsOnlyDigits()
-    {
-        $this->assertEquals('123', twig_escape_filter($this->env, '123', 'css'));
-    }
-
-    public function testUrlEscapingConvertsSpecialChars()
-    {
-        foreach ($this->urlSpecialChars as $key => $value) {
-            $this->assertEquals($value, twig_escape_filter($this->env, $key, 'url'), 'Failed to escape: '.$key);
-        }
-    }
-
-    /**
-     * Range tests to confirm escaped range of characters is within OWASP recommendation.
-     */
-
-    /**
-     * Only testing the first few 2 ranges on this prot. function as that's all these
-     * other range tests require.
-     */
-    public function testUnicodeCodepointConversionToUtf8()
-    {
-        $expected = ' ~Þ™';
-        $codepoints = [0x20, 0x7e, 0x799];
-        $result = '';
-        foreach ($codepoints as $value) {
-            $result .= $this->codepointToUtf8($value);
-        }
-        $this->assertEquals($expected, $result);
-    }
-
-    /**
-     * Convert a Unicode Codepoint to a literal UTF-8 character.
-     *
-     * @param int $codepoint Unicode codepoint in hex notation
-     *
-     * @return string UTF-8 literal string
-     */
-    protected function codepointToUtf8($codepoint)
-    {
-        if ($codepoint < 0x80) {
-            return \chr($codepoint);
-        }
-        if ($codepoint < 0x800) {
-            return \chr($codepoint >> 6 & 0x3f | 0xc0)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        if ($codepoint < 0x10000) {
-            return \chr($codepoint >> 12 & 0x0f | 0xe0)
-                .\chr($codepoint >> 6 & 0x3f | 0x80)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        if ($codepoint < 0x110000) {
-            return \chr($codepoint >> 18 & 0x07 | 0xf0)
-                .\chr($codepoint >> 12 & 0x3f | 0x80)
-                .\chr($codepoint >> 6 & 0x3f | 0x80)
-                .\chr($codepoint & 0x3f | 0x80);
-        }
-        throw new \Exception('Codepoint requested outside of Unicode range.');
-    }
-
-    public function testJavascriptEscapingEscapesOwaspRecommendedRanges()
-    {
-        $immune = [',', '.', '_']; // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                if (\in_array($literal, $immune)) {
-                    $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js'));
-                } else {
-                    $this->assertNotEquals(
-                        $literal,
-                        twig_escape_filter($this->env, $literal, 'js'),
-                        "$literal should be escaped!");
-                }
-            }
-        }
-    }
-
-    public function testHtmlAttributeEscapingEscapesOwaspRecommendedRanges()
-    {
-        $immune = [',', '.', '-', '_']; // Exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                if (\in_array($literal, $immune)) {
-                    $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr'));
-                } else {
-                    $this->assertNotEquals(
-                        $literal,
-                        twig_escape_filter($this->env, $literal, 'html_attr'),
-                        "$literal should be escaped!");
-                }
-            }
-        }
-    }
-
-    public function testCssEscapingEscapesOwaspRecommendedRanges()
-    {
-        // CSS has no exceptions to escaping ranges
-        for ($chr = 0; $chr < 0xFF; ++$chr) {
-            if ($chr >= 0x30 && $chr <= 0x39
-            || $chr >= 0x41 && $chr <= 0x5A
-            || $chr >= 0x61 && $chr <= 0x7A) {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'css'));
-            } else {
-                $literal = $this->codepointToUtf8($chr);
-                $this->assertNotEquals(
-                    $literal,
-                    twig_escape_filter($this->env, $literal, 'css'),
-                    "$literal should be escaped!");
-            }
-        }
-    }
-}
-- 
GitLab