From 7e2f1201ec5dbd1f1ffa606b4ef3f3c186ee0d86 Mon Sep 17 00:00:00 2001
From: anxietypb <anxiety.pb@gmail.com>
Date: Wed, 4 Jan 2017 13:29:28 +0100
Subject: [PATCH] =?UTF-8?q?/vendor/=20Verzeichnis=20zu=20.gitignore=20hinz?=
 =?UTF-8?q?ugef=C3=BCgt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore                                    |    3 +-
 vendor/autoload.php                           |    7 -
 vendor/composer/ClassLoader.php               |  415 ------
 vendor/composer/LICENSE                       |   21 -
 vendor/composer/autoload_classmap.php         |    9 -
 vendor/composer/autoload_files.php            |   10 -
 vendor/composer/autoload_namespaces.php       |   10 -
 vendor/composer/autoload_psr4.php             |   13 -
 vendor/composer/autoload_real.php             |   70 -
 vendor/composer/autoload_static.php           |   70 -
 vendor/composer/installed.json                |  248 ----
 .../container-interop/.gitignore              |    3 -
 .../container-interop/LICENSE                 |   20 -
 .../container-interop/README.md               |   85 --
 .../container-interop/composer.json           |   11 -
 .../docs/ContainerInterface-meta.md           |  114 --
 .../docs/ContainerInterface.md                |  153 ---
 .../docs/Delegate-lookup-meta.md              |  259 ----
 .../container-interop/docs/Delegate-lookup.md |   60 -
 .../docs/images/interoperating_containers.png |  Bin 35971 -> 0 bytes
 .../docs/images/priority.png                  |  Bin 22949 -> 0 bytes
 .../docs/images/side_by_side_containers.png   |  Bin 22519 -> 0 bytes
 .../Interop/Container/ContainerInterface.php  |   37 -
 .../Exception/ContainerException.php          |   13 -
 .../Container/Exception/NotFoundException.php |   13 -
 vendor/nikic/fast-route/.hhconfig             |    1 -
 vendor/nikic/fast-route/.travis.yml           |   12 -
 vendor/nikic/fast-route/FastRoute.hhi         |  126 --
 vendor/nikic/fast-route/LICENSE               |   31 -
 vendor/nikic/fast-route/README.md             |  273 ----
 vendor/nikic/fast-route/composer.json         |   21 -
 vendor/nikic/fast-route/phpunit.xml           |   24 -
 .../fast-route/src/BadRouteException.php      |    6 -
 vendor/nikic/fast-route/src/DataGenerator.php |   25 -
 .../src/DataGenerator/CharCountBased.php      |   28 -
 .../src/DataGenerator/GroupCountBased.php     |   28 -
 .../src/DataGenerator/GroupPosBased.php       |   25 -
 .../src/DataGenerator/MarkBased.php           |   25 -
 .../src/DataGenerator/RegexBasedAbstract.php  |  144 --
 vendor/nikic/fast-route/src/Dispatcher.php    |   25 -
 .../src/Dispatcher/CharCountBased.php         |   28 -
 .../src/Dispatcher/GroupCountBased.php        |   28 -
 .../src/Dispatcher/GroupPosBased.php          |   30 -
 .../fast-route/src/Dispatcher/MarkBased.php   |   28 -
 .../src/Dispatcher/RegexBasedAbstract.php     |   80 --
 vendor/nikic/fast-route/src/Route.php         |   38 -
 .../nikic/fast-route/src/RouteCollector.php   |   46 -
 vendor/nikic/fast-route/src/RouteParser.php   |   36 -
 .../nikic/fast-route/src/RouteParser/Std.php  |   81 --
 vendor/nikic/fast-route/src/bootstrap.php     |   12 -
 vendor/nikic/fast-route/src/functions.php     |   70 -
 .../test/Dispatcher/CharCountBasedTest.php    |   13 -
 .../test/Dispatcher/DispatcherTest.php        |  561 --------
 .../test/Dispatcher/GroupCountBasedTest.php   |   13 -
 .../test/Dispatcher/GroupPosBasedTest.php     |   13 -
 .../test/Dispatcher/MarkBasedTest.php         |   20 -
 .../HackTypechecker/HackTypecheckerTest.php   |   39 -
 .../HackTypechecker/fixtures/all_options.php  |   29 -
 .../fixtures/empty_options.php                |   11 -
 .../HackTypechecker/fixtures/no_options.php   |   11 -
 .../fast-route/test/RouteParser/StdTest.php   |  147 --
 vendor/nikic/fast-route/test/bootstrap.php    |   11 -
 vendor/pimple/pimple/.gitignore               |    3 -
 vendor/pimple/pimple/.travis.yml              |   32 -
 vendor/pimple/pimple/CHANGELOG                |   35 -
 vendor/pimple/pimple/LICENSE                  |   19 -
 vendor/pimple/pimple/README.rst               |  201 ---
 vendor/pimple/pimple/composer.json            |   25 -
 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  |  121 --
 vendor/pimple/pimple/ext/pimple/pimple.c      |  922 -------------
 .../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         |   14 -
 vendor/pimple/pimple/src/Pimple/Container.php |  282 ----
 .../src/Pimple/ServiceProviderInterface.php   |   46 -
 .../src/Pimple/Tests/Fixtures/Invokable.php   |   38 -
 .../Pimple/Tests/Fixtures/NonInvokable.php    |   34 -
 .../Tests/Fixtures/PimpleServiceProvider.php  |   54 -
 .../src/Pimple/Tests/Fixtures/Service.php     |   35 -
 .../PimpleServiceProviderInterfaceTest.php    |   76 --
 .../pimple/src/Pimple/Tests/PimpleTest.php    |  440 ------
 vendor/psr/http-message/CHANGELOG.md          |   36 -
 vendor/psr/http-message/LICENSE               |   19 -
 vendor/psr/http-message/README.md             |   13 -
 vendor/psr/http-message/composer.json         |   26 -
 .../psr/http-message/src/MessageInterface.php |  187 ---
 .../psr/http-message/src/RequestInterface.php |  129 --
 .../http-message/src/ResponseInterface.php    |   68 -
 .../src/ServerRequestInterface.php            |  261 ----
 .../psr/http-message/src/StreamInterface.php  |  158 ---
 .../src/UploadedFileInterface.php             |  123 --
 vendor/psr/http-message/src/UriInterface.php  |  323 -----
 vendor/slim/slim/CONTRIBUTING.md              |   20 -
 vendor/slim/slim/LICENSE.md                   |   19 -
 vendor/slim/slim/README.md                    |   84 --
 vendor/slim/slim/Slim/App.php                 |  644 ---------
 vendor/slim/slim/Slim/CallableResolver.php    |   90 --
 .../slim/Slim/CallableResolverAwareTrait.php  |   47 -
 vendor/slim/slim/Slim/Collection.php          |  202 ---
 vendor/slim/slim/Slim/Container.php           |  179 ---
 .../slim/Slim/DefaultServicesProvider.php     |  203 ---
 vendor/slim/slim/Slim/DeferredCallable.php    |   45 -
 .../Slim/Exception/ContainerException.php     |   20 -
 .../ContainerValueNotFoundException.php       |   20 -
 .../Exception/MethodNotAllowedException.php   |   45 -
 .../slim/Slim/Exception/NotFoundException.php |   14 -
 .../slim/Slim/Exception/SlimException.php     |   69 -
 .../slim/slim/Slim/Handlers/AbstractError.php |   99 --
 .../slim/Slim/Handlers/AbstractHandler.php    |   59 -
 vendor/slim/slim/Slim/Handlers/Error.php      |  206 ---
 vendor/slim/slim/Slim/Handlers/NotAllowed.php |  147 --
 vendor/slim/slim/Slim/Handlers/NotFound.php   |  126 --
 vendor/slim/slim/Slim/Handlers/PhpError.php   |  205 ---
 .../Handlers/Strategies/RequestResponse.php   |   43 -
 .../Strategies/RequestResponseArgs.php        |   42 -
 vendor/slim/slim/Slim/Http/Body.php           |   22 -
 vendor/slim/slim/Slim/Http/Cookies.php        |  195 ---
 vendor/slim/slim/Slim/Http/Environment.php    |   52 -
 vendor/slim/slim/Slim/Http/Headers.php        |  222 ----
 vendor/slim/slim/Slim/Http/Message.php        |  304 -----
 vendor/slim/slim/Slim/Http/Request.php        | 1177 -----------------
 vendor/slim/slim/Slim/Http/RequestBody.php    |   27 -
 vendor/slim/slim/Slim/Http/Response.php       |  470 -------
 vendor/slim/slim/Slim/Http/Stream.php         |  450 -------
 vendor/slim/slim/Slim/Http/UploadedFile.php   |  327 -----
 vendor/slim/slim/Slim/Http/Uri.php            |  824 ------------
 .../Interfaces/CallableResolverInterface.php  |   27 -
 .../Slim/Interfaces/CollectionInterface.php   |   32 -
 .../Slim/Interfaces/Http/CookiesInterface.php |   23 -
 .../Interfaces/Http/EnvironmentInterface.php  |   20 -
 .../Slim/Interfaces/Http/HeadersInterface.php |   24 -
 .../InvocationStrategyInterface.php           |   35 -
 .../Slim/Interfaces/RouteGroupInterface.php   |   46 -
 .../slim/Slim/Interfaces/RouteInterface.php   |  129 --
 .../slim/Slim/Interfaces/RouterInterface.php  |  107 --
 .../slim/slim/Slim/MiddlewareAwareTrait.php   |  120 --
 vendor/slim/slim/Slim/Routable.php            |  106 --
 vendor/slim/slim/Slim/Route.php               |  357 -----
 vendor/slim/slim/Slim/RouteGroup.php          |   47 -
 vendor/slim/slim/Slim/Router.php              |  434 ------
 vendor/slim/slim/composer.json                |   57 -
 vendor/slim/slim/example/.htaccess            |   12 -
 vendor/slim/slim/example/README.md            |   19 -
 vendor/slim/slim/example/index.php            |   45 -
 169 files changed, 2 insertions(+), 16633 deletions(-)
 delete mode 100644 vendor/autoload.php
 delete mode 100644 vendor/composer/ClassLoader.php
 delete mode 100644 vendor/composer/LICENSE
 delete mode 100644 vendor/composer/autoload_classmap.php
 delete mode 100644 vendor/composer/autoload_files.php
 delete mode 100644 vendor/composer/autoload_namespaces.php
 delete mode 100644 vendor/composer/autoload_psr4.php
 delete mode 100644 vendor/composer/autoload_real.php
 delete mode 100644 vendor/composer/autoload_static.php
 delete mode 100644 vendor/composer/installed.json
 delete mode 100644 vendor/container-interop/container-interop/.gitignore
 delete mode 100644 vendor/container-interop/container-interop/LICENSE
 delete mode 100644 vendor/container-interop/container-interop/README.md
 delete mode 100644 vendor/container-interop/container-interop/composer.json
 delete mode 100644 vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
 delete mode 100644 vendor/container-interop/container-interop/docs/ContainerInterface.md
 delete mode 100644 vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md
 delete mode 100644 vendor/container-interop/container-interop/docs/Delegate-lookup.md
 delete mode 100644 vendor/container-interop/container-interop/docs/images/interoperating_containers.png
 delete mode 100644 vendor/container-interop/container-interop/docs/images/priority.png
 delete mode 100644 vendor/container-interop/container-interop/docs/images/side_by_side_containers.png
 delete mode 100644 vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
 delete mode 100644 vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php
 delete mode 100644 vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php
 delete mode 100644 vendor/nikic/fast-route/.hhconfig
 delete mode 100644 vendor/nikic/fast-route/.travis.yml
 delete mode 100644 vendor/nikic/fast-route/FastRoute.hhi
 delete mode 100644 vendor/nikic/fast-route/LICENSE
 delete mode 100644 vendor/nikic/fast-route/README.md
 delete mode 100644 vendor/nikic/fast-route/composer.json
 delete mode 100644 vendor/nikic/fast-route/phpunit.xml
 delete mode 100644 vendor/nikic/fast-route/src/BadRouteException.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator/MarkBased.php
 delete mode 100644 vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher/MarkBased.php
 delete mode 100644 vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php
 delete mode 100644 vendor/nikic/fast-route/src/Route.php
 delete mode 100644 vendor/nikic/fast-route/src/RouteCollector.php
 delete mode 100644 vendor/nikic/fast-route/src/RouteParser.php
 delete mode 100644 vendor/nikic/fast-route/src/RouteParser/Std.php
 delete mode 100644 vendor/nikic/fast-route/src/bootstrap.php
 delete mode 100644 vendor/nikic/fast-route/src/functions.php
 delete mode 100644 vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php
 delete mode 100644 vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php
 delete mode 100644 vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php
 delete mode 100644 vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php
 delete mode 100644 vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php
 delete mode 100644 vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php
 delete mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php
 delete mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php
 delete mode 100644 vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php
 delete mode 100644 vendor/nikic/fast-route/test/RouteParser/StdTest.php
 delete mode 100644 vendor/nikic/fast-route/test/bootstrap.php
 delete mode 100644 vendor/pimple/pimple/.gitignore
 delete mode 100644 vendor/pimple/pimple/.travis.yml
 delete mode 100644 vendor/pimple/pimple/CHANGELOG
 delete mode 100644 vendor/pimple/pimple/LICENSE
 delete mode 100644 vendor/pimple/pimple/README.rst
 delete mode 100644 vendor/pimple/pimple/composer.json
 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/pimple/pimple/phpunit.xml.dist
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Container.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
 delete mode 100644 vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
 delete mode 100644 vendor/psr/http-message/CHANGELOG.md
 delete mode 100644 vendor/psr/http-message/LICENSE
 delete mode 100644 vendor/psr/http-message/README.md
 delete mode 100644 vendor/psr/http-message/composer.json
 delete mode 100644 vendor/psr/http-message/src/MessageInterface.php
 delete mode 100644 vendor/psr/http-message/src/RequestInterface.php
 delete mode 100644 vendor/psr/http-message/src/ResponseInterface.php
 delete mode 100644 vendor/psr/http-message/src/ServerRequestInterface.php
 delete mode 100644 vendor/psr/http-message/src/StreamInterface.php
 delete mode 100644 vendor/psr/http-message/src/UploadedFileInterface.php
 delete mode 100644 vendor/psr/http-message/src/UriInterface.php
 delete mode 100644 vendor/slim/slim/CONTRIBUTING.md
 delete mode 100644 vendor/slim/slim/LICENSE.md
 delete mode 100644 vendor/slim/slim/README.md
 delete mode 100644 vendor/slim/slim/Slim/App.php
 delete mode 100644 vendor/slim/slim/Slim/CallableResolver.php
 delete mode 100644 vendor/slim/slim/Slim/CallableResolverAwareTrait.php
 delete mode 100644 vendor/slim/slim/Slim/Collection.php
 delete mode 100644 vendor/slim/slim/Slim/Container.php
 delete mode 100644 vendor/slim/slim/Slim/DefaultServicesProvider.php
 delete mode 100644 vendor/slim/slim/Slim/DeferredCallable.php
 delete mode 100644 vendor/slim/slim/Slim/Exception/ContainerException.php
 delete mode 100644 vendor/slim/slim/Slim/Exception/ContainerValueNotFoundException.php
 delete mode 100644 vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php
 delete mode 100644 vendor/slim/slim/Slim/Exception/NotFoundException.php
 delete mode 100644 vendor/slim/slim/Slim/Exception/SlimException.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/AbstractError.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/AbstractHandler.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/Error.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/NotAllowed.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/NotFound.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/PhpError.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php
 delete mode 100644 vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Body.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Cookies.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Environment.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Headers.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Message.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Request.php
 delete mode 100644 vendor/slim/slim/Slim/Http/RequestBody.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Response.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Stream.php
 delete mode 100644 vendor/slim/slim/Slim/Http/UploadedFile.php
 delete mode 100644 vendor/slim/slim/Slim/Http/Uri.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/CollectionInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/Http/CookiesInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/Http/HeadersInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/RouteGroupInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/RouteInterface.php
 delete mode 100644 vendor/slim/slim/Slim/Interfaces/RouterInterface.php
 delete mode 100644 vendor/slim/slim/Slim/MiddlewareAwareTrait.php
 delete mode 100644 vendor/slim/slim/Slim/Routable.php
 delete mode 100644 vendor/slim/slim/Slim/Route.php
 delete mode 100644 vendor/slim/slim/Slim/RouteGroup.php
 delete mode 100644 vendor/slim/slim/Slim/Router.php
 delete mode 100644 vendor/slim/slim/composer.json
 delete mode 100644 vendor/slim/slim/example/.htaccess
 delete mode 100644 vendor/slim/slim/example/README.md
 delete mode 100644 vendor/slim/slim/example/index.php

diff --git a/.gitignore b/.gitignore
index 96f50df..2eff344 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@ bower_components/
 tmp
 .DS_Store
 .idea
-.sass-cache
\ No newline at end of file
+.sass-cache
+/vendor/
\ No newline at end of file
diff --git a/vendor/autoload.php b/vendor/autoload.php
deleted file mode 100644
index 3c454e2..0000000
--- a/vendor/autoload.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-// autoload.php @generated by Composer
-
-require_once __DIR__ . '/composer' . '/autoload_real.php';
-
-return ComposerAutoloaderInitd54f12fb5bd1b34598360c61119b8df4::getLoader();
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
deleted file mode 100644
index ac67d30..0000000
--- a/vendor/composer/ClassLoader.php
+++ /dev/null
@@ -1,415 +0,0 @@
-<?php
-
-/*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- *     Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Composer\Autoload;
-
-/**
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
- *
- *     $loader = new \Composer\Autoload\ClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->add('Symfony\Component', __DIR__.'/component');
- *     $loader->add('Symfony',           __DIR__.'/framework');
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- *     // to enable searching the include path (eg. for PEAR packages)
- *     $loader->setUseIncludePath(true);
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * This class is loosely based on the Symfony UniversalClassLoader.
- *
- * @author Fabien Potencier <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/
- */
-class ClassLoader
-{
-    // PSR-4
-    private $prefixLengthsPsr4 = array();
-    private $prefixDirsPsr4 = array();
-    private $fallbackDirsPsr4 = array();
-
-    // PSR-0
-    private $prefixesPsr0 = array();
-    private $fallbackDirsPsr0 = array();
-
-    private $useIncludePath = false;
-    private $classMap = array();
-    private $classMapAuthoritative = false;
-    private $missingClasses = array();
-
-    public function getPrefixes()
-    {
-        if (!empty($this->prefixesPsr0)) {
-            return call_user_func_array('array_merge', $this->prefixesPsr0);
-        }
-
-        return array();
-    }
-
-    public function getPrefixesPsr4()
-    {
-        return $this->prefixDirsPsr4;
-    }
-
-    public function getFallbackDirs()
-    {
-        return $this->fallbackDirsPsr0;
-    }
-
-    public function getFallbackDirsPsr4()
-    {
-        return $this->fallbackDirsPsr4;
-    }
-
-    public function getClassMap()
-    {
-        return $this->classMap;
-    }
-
-    /**
-     * @param array $classMap Class to filename map
-     */
-    public function addClassMap(array $classMap)
-    {
-        if ($this->classMap) {
-            $this->classMap = array_merge($this->classMap, $classMap);
-        } else {
-            $this->classMap = $classMap;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix, either
-     * appending or prepending to the ones previously set for this prefix.
-     *
-     * @param string       $prefix  The prefix
-     * @param array|string $paths   The PSR-0 root directories
-     * @param bool         $prepend Whether to prepend the directories
-     */
-    public function add($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            if ($prepend) {
-                $this->fallbackDirsPsr0 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr0
-                );
-            } else {
-                $this->fallbackDirsPsr0 = array_merge(
-                    $this->fallbackDirsPsr0,
-                    (array) $paths
-                );
-            }
-
-            return;
-        }
-
-        $first = $prefix[0];
-        if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
-
-            return;
-        }
-        if ($prepend) {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixesPsr0[$first][$prefix]
-            );
-        } else {
-            $this->prefixesPsr0[$first][$prefix] = array_merge(
-                $this->prefixesPsr0[$first][$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace, either
-     * appending or prepending to the ones previously set for this namespace.
-     *
-     * @param string       $prefix  The prefix/namespace, with trailing '\\'
-     * @param array|string $paths   The PSR-4 base directories
-     * @param bool         $prepend Whether to prepend the directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function addPsr4($prefix, $paths, $prepend = false)
-    {
-        if (!$prefix) {
-            // Register directories for the root namespace.
-            if ($prepend) {
-                $this->fallbackDirsPsr4 = array_merge(
-                    (array) $paths,
-                    $this->fallbackDirsPsr4
-                );
-            } else {
-                $this->fallbackDirsPsr4 = array_merge(
-                    $this->fallbackDirsPsr4,
-                    (array) $paths
-                );
-            }
-        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
-            // Register directories for a new namespace.
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        } elseif ($prepend) {
-            // Prepend directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                (array) $paths,
-                $this->prefixDirsPsr4[$prefix]
-            );
-        } else {
-            // Append directories for an already registered namespace.
-            $this->prefixDirsPsr4[$prefix] = array_merge(
-                $this->prefixDirsPsr4[$prefix],
-                (array) $paths
-            );
-        }
-    }
-
-    /**
-     * Registers a set of PSR-0 directories for a given prefix,
-     * replacing any others previously set for this prefix.
-     *
-     * @param string       $prefix The prefix
-     * @param array|string $paths  The PSR-0 base directories
-     */
-    public function set($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr0 = (array) $paths;
-        } else {
-            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Registers a set of PSR-4 directories for a given namespace,
-     * replacing any others previously set for this namespace.
-     *
-     * @param string       $prefix The prefix/namespace, with trailing '\\'
-     * @param array|string $paths  The PSR-4 base directories
-     *
-     * @throws \InvalidArgumentException
-     */
-    public function setPsr4($prefix, $paths)
-    {
-        if (!$prefix) {
-            $this->fallbackDirsPsr4 = (array) $paths;
-        } else {
-            $length = strlen($prefix);
-            if ('\\' !== $prefix[$length - 1]) {
-                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
-            }
-            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
-        }
-    }
-
-    /**
-     * Turns on searching the include path for class files.
-     *
-     * @param bool $useIncludePath
-     */
-    public function setUseIncludePath($useIncludePath)
-    {
-        $this->useIncludePath = $useIncludePath;
-    }
-
-    /**
-     * Can be used to check if the autoloader uses the include path to check
-     * for classes.
-     *
-     * @return bool
-     */
-    public function getUseIncludePath()
-    {
-        return $this->useIncludePath;
-    }
-
-    /**
-     * Turns off searching the prefix and fallback directories for classes
-     * that have not been registered with the class map.
-     *
-     * @param bool $classMapAuthoritative
-     */
-    public function setClassMapAuthoritative($classMapAuthoritative)
-    {
-        $this->classMapAuthoritative = $classMapAuthoritative;
-    }
-
-    /**
-     * Should class lookup fail if not found in the current class map?
-     *
-     * @return bool
-     */
-    public function isClassMapAuthoritative()
-    {
-        return $this->classMapAuthoritative;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param bool $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Unregisters this instance as an autoloader.
-     */
-    public function unregister()
-    {
-        spl_autoload_unregister(array($this, 'loadClass'));
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param  string    $class The name of the class
-     * @return bool|null True if loaded, null otherwise
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            includeFile($file);
-
-            return true;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|false The path if found, false otherwise
-     */
-    public function findFile($class)
-    {
-        // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
-        if ('\\' == $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        // class map lookup
-        if (isset($this->classMap[$class])) {
-            return $this->classMap[$class];
-        }
-        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
-            return false;
-        }
-
-        $file = $this->findFileWithExtension($class, '.php');
-
-        // Search for Hack files if we are running on HHVM
-        if (false === $file && defined('HHVM_VERSION')) {
-            $file = $this->findFileWithExtension($class, '.hh');
-        }
-
-        if (false === $file) {
-            // Remember that this class does not exist.
-            $this->missingClasses[$class] = true;
-        }
-
-        return $file;
-    }
-
-    private function findFileWithExtension($class, $ext)
-    {
-        // PSR-4 lookup
-        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
-
-        $first = $class[0];
-        if (isset($this->prefixLengthsPsr4[$first])) {
-            foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-4 fallback dirs
-        foreach ($this->fallbackDirsPsr4 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 lookup
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
-                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
-        } else {
-            // PEAR-like class name
-            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
-        }
-
-        if (isset($this->prefixesPsr0[$first])) {
-            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($dirs as $dir) {
-                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                            return $file;
-                        }
-                    }
-                }
-            }
-        }
-
-        // PSR-0 fallback dirs
-        foreach ($this->fallbackDirsPsr0 as $dir) {
-            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
-                return $file;
-            }
-        }
-
-        // PSR-0 include paths.
-        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
-            return $file;
-        }
-
-        return false;
-    }
-}
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
-    include $file;
-}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
deleted file mode 100644
index 1a28124..0000000
--- a/vendor/composer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright (c) 2016 Nils Adermann, Jordi Boggiano
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
deleted file mode 100644
index 7a91153..0000000
--- a/vendor/composer/autoload_classmap.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-// autoload_classmap.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
deleted file mode 100644
index 4202030..0000000
--- a/vendor/composer/autoload_files.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    '253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
-);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
deleted file mode 100644
index c3cd022..0000000
--- a/vendor/composer/autoload_namespaces.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-// autoload_namespaces.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Pimple' => array($vendorDir . '/pimple/pimple/src'),
-);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
deleted file mode 100644
index 7e403d2..0000000
--- a/vendor/composer/autoload_psr4.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-// autoload_psr4.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array(
-    'Slim\\' => array($vendorDir . '/slim/slim/Slim'),
-    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
-    'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
-    'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'),
-);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
deleted file mode 100644
index 69a339d..0000000
--- a/vendor/composer/autoload_real.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-// autoload_real.php @generated by Composer
-
-class ComposerAutoloaderInitd54f12fb5bd1b34598360c61119b8df4
-{
-    private static $loader;
-
-    public static function loadClassLoader($class)
-    {
-        if ('Composer\Autoload\ClassLoader' === $class) {
-            require __DIR__ . '/ClassLoader.php';
-        }
-    }
-
-    public static function getLoader()
-    {
-        if (null !== self::$loader) {
-            return self::$loader;
-        }
-
-        spl_autoload_register(array('ComposerAutoloaderInitd54f12fb5bd1b34598360c61119b8df4', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInitd54f12fb5bd1b34598360c61119b8df4', 'loadClassLoader'));
-
-        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
-        if ($useStaticLoader) {
-            require_once __DIR__ . '/autoload_static.php';
-
-            call_user_func(\Composer\Autoload\ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4::getInitializer($loader));
-        } else {
-            $map = require __DIR__ . '/autoload_namespaces.php';
-            foreach ($map as $namespace => $path) {
-                $loader->set($namespace, $path);
-            }
-
-            $map = require __DIR__ . '/autoload_psr4.php';
-            foreach ($map as $namespace => $path) {
-                $loader->setPsr4($namespace, $path);
-            }
-
-            $classMap = require __DIR__ . '/autoload_classmap.php';
-            if ($classMap) {
-                $loader->addClassMap($classMap);
-            }
-        }
-
-        $loader->register(true);
-
-        if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequired54f12fb5bd1b34598360c61119b8df4($fileIdentifier, $file);
-        }
-
-        return $loader;
-    }
-}
-
-function composerRequired54f12fb5bd1b34598360c61119b8df4($fileIdentifier, $file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        require $file;
-
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-    }
-}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
deleted file mode 100644
index 652e446..0000000
--- a/vendor/composer/autoload_static.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-// autoload_static.php @generated by Composer
-
-namespace Composer\Autoload;
-
-class ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4
-{
-    public static $files = array (
-        '253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
-    );
-
-    public static $prefixLengthsPsr4 = array (
-        'S' => 
-        array (
-            'Slim\\' => 5,
-        ),
-        'P' => 
-        array (
-            'Psr\\Http\\Message\\' => 17,
-        ),
-        'I' => 
-        array (
-            'Interop\\Container\\' => 18,
-        ),
-        'F' => 
-        array (
-            'FastRoute\\' => 10,
-        ),
-    );
-
-    public static $prefixDirsPsr4 = array (
-        'Slim\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/slim/slim/Slim',
-        ),
-        'Psr\\Http\\Message\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/psr/http-message/src',
-        ),
-        'Interop\\Container\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
-        ),
-        'FastRoute\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/nikic/fast-route/src',
-        ),
-    );
-
-    public static $prefixesPsr0 = array (
-        'P' => 
-        array (
-            'Pimple' => 
-            array (
-                0 => __DIR__ . '/..' . '/pimple/pimple/src',
-            ),
-        ),
-    );
-
-    public static function getInitializer(ClassLoader $loader)
-    {
-        return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInitd54f12fb5bd1b34598360c61119b8df4::$prefixesPsr0;
-
-        }, null, ClassLoader::class);
-    }
-}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
deleted file mode 100644
index ff9b198..0000000
--- a/vendor/composer/installed.json
+++ /dev/null
@@ -1,248 +0,0 @@
-[
-    {
-        "name": "container-interop/container-interop",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/container-interop/container-interop.git",
-            "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e",
-            "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e",
-            "shasum": ""
-        },
-        "time": "2014-12-30 15:22:37",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Interop\\Container\\": "src/Interop/Container/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "description": "Promoting the interoperability of container objects (DIC, SL, etc.)"
-    },
-    {
-        "name": "nikic/fast-route",
-        "version": "v1.0.1",
-        "version_normalized": "1.0.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/nikic/FastRoute.git",
-            "reference": "8ea928195fa9b907f0d6e48312d323c1a13cc2af"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/nikic/FastRoute/zipball/8ea928195fa9b907f0d6e48312d323c1a13cc2af",
-            "reference": "8ea928195fa9b907f0d6e48312d323c1a13cc2af",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0"
-        },
-        "time": "2016-06-12 19:08:51",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "FastRoute\\": "src/"
-            },
-            "files": [
-                "src/functions.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Nikita Popov",
-                "email": "nikic@php.net"
-            }
-        ],
-        "description": "Fast request router for PHP",
-        "keywords": [
-            "router",
-            "routing"
-        ]
-    },
-    {
-        "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-06 14:39:51",
-        "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": "pimple/pimple",
-        "version": "v3.0.2",
-        "version_normalized": "3.0.2.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/silexphp/Pimple.git",
-            "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a30f7d6e57565a2e1a316e1baf2a483f788b258a",
-            "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.0"
-        },
-        "time": "2015-09-11 15:10:35",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.0.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": "slim/slim",
-        "version": "3.5.0",
-        "version_normalized": "3.5.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/slimphp/Slim.git",
-            "reference": "184352bc1913d7ba552ab4131d62f4730ddb0893"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/slimphp/Slim/zipball/184352bc1913d7ba552ab4131d62f4730ddb0893",
-            "reference": "184352bc1913d7ba552ab4131d62f4730ddb0893",
-            "shasum": ""
-        },
-        "require": {
-            "container-interop/container-interop": "^1.1",
-            "nikic/fast-route": "^1.0",
-            "php": ">=5.5.0",
-            "pimple/pimple": "^3.0",
-            "psr/http-message": "^1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "^4.0",
-            "squizlabs/php_codesniffer": "^2.5"
-        },
-        "time": "2016-07-26 15:12:13",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Slim\\": "Slim"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Rob Allen",
-                "email": "rob@akrabat.com",
-                "homepage": "http://akrabat.com"
-            },
-            {
-                "name": "Josh Lockhart",
-                "email": "hello@joshlockhart.com",
-                "homepage": "https://joshlockhart.com"
-            },
-            {
-                "name": "Gabriel Manricks",
-                "email": "gmanricks@me.com",
-                "homepage": "http://gabrielmanricks.com"
-            },
-            {
-                "name": "Andrew Smith",
-                "email": "a.smith@silentworks.co.uk",
-                "homepage": "http://silentworks.co.uk"
-            }
-        ],
-        "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
-        "homepage": "http://slimframework.com",
-        "keywords": [
-            "api",
-            "framework",
-            "micro",
-            "router"
-        ]
-    }
-]
diff --git a/vendor/container-interop/container-interop/.gitignore b/vendor/container-interop/container-interop/.gitignore
deleted file mode 100644
index b2395aa..0000000
--- a/vendor/container-interop/container-interop/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-composer.lock
-composer.phar
-/vendor/
diff --git a/vendor/container-interop/container-interop/LICENSE b/vendor/container-interop/container-interop/LICENSE
deleted file mode 100644
index 7671d90..0000000
--- a/vendor/container-interop/container-interop/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 container-interop
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/container-interop/container-interop/README.md b/vendor/container-interop/container-interop/README.md
deleted file mode 100644
index ec434d0..0000000
--- a/vendor/container-interop/container-interop/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# Container Interoperability
-
-[![Latest Stable Version](https://poser.pugx.org/container-interop/container-interop/v/stable.png)](https://packagist.org/packages/container-interop/container-interop)
-
-*container-interop* tries to identify and standardize features in *container* objects (service locators,
-dependency injection containers, etc.) to achieve interopererability.
-
-Through discussions and trials, we try to create a standard, made of common interfaces but also recommendations. 
-
-If PHP projects that provide container implementations begin to adopt these common standards, then PHP
-applications and projects that use containers can depend on the common interfaces instead of specific
-implementations. This facilitates a high-level of interoperability and flexibility that allows users to consume
-*any* container implementation that can be adapted to these interfaces.
-
-The work done in this project is not officially endorsed by the [PHP-FIG](http://www.php-fig.org/), but it is being
-worked on by members of PHP-FIG and other good developers. We adhere to the spirit and ideals of PHP-FIG, and hope
-this project will pave the way for one or more future PSRs.
-
-
-## Installation
-
-You can install this package through Composer:
-
-```json
-{
-    "require": {
-        "container-interop/container-interop": "~1.0"
-    }
-}
-```
-
-The packages adheres to the [SemVer](http://semver.org/) specification, and there will be full backward compatibility
-between minor versions.
-
-## Standards
-
-### Available
-
-- [`ContainerInterface`](src/Interop/Container/ContainerInterface.php).
-[Description](docs/ContainerInterface.md) [Meta Document](docs/ContainerInterface-meta.md).
-Describes the interface of a container that exposes methods to read its entries.
-- [*Delegate lookup feature*](docs/Delegate-lookup.md).
-[Meta Document](docs/Delegate-lookup-meta.md).
-Describes the ability for a container to delegate the lookup of its dependencies to a third-party container. This 
-feature lets several containers work together in a single application.
-
-### Proposed
-
-View open [request for comments](https://github.com/container-interop/container-interop/labels/RFC)
-
-## Compatible projects
-
-### Projects implementing `ContainerInterface`
-
-- [Acclimate](https://github.com/jeremeamia/acclimate-container)
-- [dcp-di](https://github.com/estelsmith/dcp-di)
-- [Mouf](http://mouf-php.com)
-- [Njasm Container](https://github.com/njasm/container)
-- [PHP-DI](http://php-di.org)
-- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
-- [XStatic](https://github.com/jeremeamia/xstatic)
-
-### Projects implementing the *delegate lookup* feature
-
-- [Mouf](http://mouf-php.com)
-- [PHP-DI](http://php-di.org)
-- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
-
-## Workflow
-
-Everyone is welcome to join and contribute.
-
-The general workflow looks like this:
-
-1. Someone opens a discussion (GitHub issue) to suggest an interface
-1. Feedback is gathered
-1. The interface is added to a development branch
-1. We release alpha versions so that the interface can be experimented with
-1. Discussions and edits ensue until the interface is deemed stable by a general consensus
-1. A new minor version of the package is released
-
-We try to not break BC by creating new interfaces instead of editing existing ones.
-
-While we currently work on interfaces, we are open to anything that might help towards interoperability, may that
-be code, best practices, etc.
diff --git a/vendor/container-interop/container-interop/composer.json b/vendor/container-interop/container-interop/composer.json
deleted file mode 100644
index 84f3875..0000000
--- a/vendor/container-interop/container-interop/composer.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "name": "container-interop/container-interop",
-    "type": "library",
-    "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
-    "license": "MIT",
-    "autoload": {
-        "psr-4": {
-            "Interop\\Container\\": "src/Interop/Container/"
-        }
-    }
-}
diff --git a/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md b/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
deleted file mode 100644
index 90711c9..0000000
--- a/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# ContainerInterface Meta Document
-
-## Introduction
-
-This document describes the process and discussions that lead to the `ContainerInterface`.
-Its goal is to explain the reasons behind each decision.
-
-## Goal
-
-The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
-container to obtain objects and parameters.
-
-By standardizing such a behavior, frameworks and libraries using the `ContainerInterface`
-could work with any compatible container.
-That would allow end users to choose their own container based on their own preferences.
-
-It is important to distinguish the two usages of a container:
-
-- configuring entries
-- fetching entries
-
-Most of the time, those two sides are not used by the same party.
-While it is often end users who tend to configure entries, it is generally the framework that fetch
-entries to build the application.
-
-This is why this interface focuses only on how entries can be fetched from a container.
-
-## Interface name
-
-The interface name has been thoroughly discussed and was decided by a vote.
-
-The list of options considered with their respective votes are:
-
-- `ContainerInterface`: +8
-- `ProviderInterface`: +2
-- `LocatorInterface`: 0
-- `ReadableContainerInterface`: -5
-- `ServiceLocatorInterface`: -6
-- `ObjectFactory`: -6
-- `ObjectStore`: -8
-- `ConsumerInterface`: -9
-
-[Full results of the vote](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)
-
-The complete discussion can be read in [the issue #1](https://github.com/container-interop/container-interop/issues/1).
-
-## Interface methods
-
-The choice of which methods the interface would contain was made after a statistical analysis of existing containers.
-The results of this analysis are available [in this document](https://gist.github.com/mnapoli/6159681).
-
-The summary of the analysis showed that:
-
-- all containers offer a method to get an entry by its id
-- a large majority name such method `get()`
-- for all containers, the `get()` method has 1 mandatory parameter of type string
-- some containers have an optional additional argument for `get()`, but it doesn't same the same purpose between containers
-- a large majority of the containers offer a method to test if it can return an entry by its id
-- a majority name such method `has()`
-- for all containers offering `has()`, the method has exactly 1 parameter of type string
-- a large majority of the containers throw an exception rather than returning null when an entry is not found in `get()`
-- a large majority of the containers don't implement `ArrayAccess`
-
-The question of whether to include methods to define entries has been discussed in
-[issue #1](https://github.com/container-interop/container-interop/issues/1).
-It has been judged that such methods do not belong in the interface described here because it is out of its scope
-(see the "Goal" section).
-
-As a result, the `ContainerInterface` contains two methods:
-
-- `get()`, returning anything, with one mandatory string parameter. Should throw an exception if the entry is not found.
-- `has()`, returning a boolean, with one mandatory string parameter.
-
-### Number of parameters in `get()` method
-
-While `ContainerInterface` only defines one mandatory parameter in `get()`, it is not incompatible with
-existing containers that have additional optional parameters. PHP allows an implementation to offer more parameters
-as long as they are optional, because the implementation *does* satisfy the interface.
-
-This issue has been discussed in [issue #6](https://github.com/container-interop/container-interop/issues/6).
-
-### Type of the `$id` parameter
-
-The type of the `$id` parameter in `get()` and `has()` has been discussed in
-[issue #6](https://github.com/container-interop/container-interop/issues/6).
-While `string` is used in all the containers that were analyzed, it was suggested that allowing
-anything (such as objects) could allow containers to offer a more advanced query API.
-
-An example given was to use the container as an object builder. The `$id` parameter would then be an
-object that would describe how to create an instance.
-
-The conclusion of the discussion was that this was beyond the scope of getting entries from a container without
-knowing how the container provided them, and it was more fit for a factory.
-
-## Contributors
-
-Are listed here all people that contributed in the discussions or votes, by alphabetical order:
-
-- [Amy Stephen](https://github.com/AmyStephen)
-- [David Négrier](https://github.com/moufmouf)
-- [Don Gilbert](https://github.com/dongilbert)
-- [Jason Judge](https://github.com/judgej)
-- [Jeremy Lindblom](https://github.com/jeremeamia)
-- [Marco Pivetta](https://github.com/Ocramius)
-- [Matthieu Napoli](https://github.com/mnapoli)
-- [Paul M. Jones](https://github.com/pmjones)
-- [Stephan Hochdörfer](https://github.com/shochdoerfer)
-- [Taylor Otwell](https://github.com/taylorotwell)
-
-## Relevant links
-
-- [`ContainerInterface.php`](https://github.com/container-interop/container-interop/blob/master/src/Interop/Container/ContainerInterface.php)
-- [List of all issues](https://github.com/container-interop/container-interop/issues?labels=ContainerInterface&milestone=&page=1&state=closed)
-- [Vote for the interface name](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)
diff --git a/vendor/container-interop/container-interop/docs/ContainerInterface.md b/vendor/container-interop/container-interop/docs/ContainerInterface.md
deleted file mode 100644
index 9f60967..0000000
--- a/vendor/container-interop/container-interop/docs/ContainerInterface.md
+++ /dev/null
@@ -1,153 +0,0 @@
-Container interface
-===================
-
-This document describes a common interface for dependency injection containers.
-
-The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
-container to obtain objects and parameters (called *entries* in the rest of this document).
-
-The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
-"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
-interpreted as described in [RFC 2119][].
-
-The word `implementor` in this document is to be interpreted as someone
-implementing the `ContainerInterface` in a depency injection-related library or framework.
-Users of dependency injections containers (DIC) are refered to as `user`.
-
-[RFC 2119]: http://tools.ietf.org/html/rfc2119
-
-1. Specification
------------------
-
-### 1.1 Basics
-
-- The `Interop\Container\ContainerInterface` exposes two methods : `get` and `has`.
-
-- `get` takes one mandatory parameter: an entry identifier. It MUST be a string.
-  A call to `get` can return anything (a *mixed* value), or throws an exception if the identifier
-  is not known to the container. Two successive calls to `get` with the same
-  identifier SHOULD return the same value. However, depending on the `implementor`
-  design and/or `user` configuration, different values might be returned, so
-  `user` SHOULD NOT rely on getting the same value on 2 successive calls.
-  While `ContainerInterface` only defines one mandatory parameter in `get()`, implementations
-  MAY accept additional optional parameters.
-  
-- `has` takes one unique parameter: an entry identifier. It MUST return `true`
-  if an entry identifier is known to the container and `false` if it is not.
-  
-### 1.2 Exceptions
-
-Exceptions directly thrown by the container MUST implement the 
-[`Interop\Container\Exception\ContainerException`](../src/Interop/Container/Exception/ContainerException.php).
-
-A call to the `get` method with a non-existing id should throw a
-[`Interop\Container\Exception\NotFoundException`](../src/Interop/Container/Exception/NotFoundException.php).
-
-### 1.3 Additional features
-
-This section describes additional features that MAY be added to a container. Containers are not 
-required to implement these features to respect the ContainerInterface.
-
-#### 1.3.1 Delegate lookup feature
-
-The goal of the *delegate lookup* feature is to allow several containers to share entries. 
-Containers implementing this feature can perform dependency lookups in other containers.
-
-Containers implementing this feature will offer a greater lever of interoperability 
-with other containers. Implementation of this feature is therefore RECOMMENDED.
-
-A container implementing this feature:
-
-- MUST implement the `ContainerInterface`
-- MUST provide a way to register a delegate container (using a constructor parameter, or a setter, 
-  or any possible way). The delegate container MUST implement the `ContainerInterface`.
-
-When a container is configured to use a delegate container for dependencies:
-
-- Calls to the `get` method should only return an entry if the entry is part of the container. 
-  If the entry is not part of the container, an exception should be thrown 
-  (as requested by the `ContainerInterface`).
-- Calls to the `has` method should only return `true` if the entry is part of the container.
-  If the entry is not part of the container, `false` should be returned.
-- If the fetched entry has dependencies, **instead** of performing 
-  the dependency lookup in the container, the lookup is performed on the *delegate container*.
-
-Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
-
-It is however allowed for containers to provide exception cases for special entries, and a way to lookup 
-into the same container (or another container) instead of the delegate container.
-
-2. Package
-----------
-
-The interfaces and classes described as well as relevant exception are provided as part of the
-[container-interop/container-interop](https://packagist.org/packages/container-interop/container-interop) package.
-
-3. `Interop\Container\ContainerInterface`
------------------------------------------
-
-```php
-<?php
-namespace Interop\Container;
-
-use Interop\Container\Exception\ContainerException;
-use Interop\Container\Exception\NotFoundException;
-
-/**
- * Describes the interface of a container that exposes methods to read its entries.
- */
-interface ContainerInterface
-{
-    /**
-     * Finds an entry of the container by its identifier and returns it.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @throws NotFoundException  No entry was found for this identifier.
-     * @throws ContainerException Error while retrieving the entry.
-     *
-     * @return mixed Entry.
-     */
-    public function get($id);
-
-    /**
-     * Returns true if the container can return an entry for the given identifier.
-     * Returns false otherwise.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @return boolean
-     */
-    public function has($id);
-}
-```
-
-4. `Interop\Container\Exception\ContainerException`
----------------------------------------------------
-
-```php
-<?php
-namespace Interop\Container\Exception;
-
-/**
- * Base interface representing a generic exception in a container.
- */
-interface ContainerException
-{
-}
-```
-
-5. `Interop\Container\Exception\NotFoundException`
----------------------------------------------------
-
-```php
-<?php
-namespace Interop\Container\Exception;
-
-/**
- * No entry was found in the container.
- */
-interface NotFoundException extends ContainerException
-{
-}
-```
diff --git a/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md b/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md
deleted file mode 100644
index d21ebf9..0000000
--- a/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md
+++ /dev/null
@@ -1,259 +0,0 @@
-Delegate lookup feature Meta Document
-=====================================
-
-1. Summary
-----------
-
-This document describes the *delegate lookup feature*.
-Containers are not required to implement this feature to respect the `ContainerInterface`.
-However, containers implementing this feature will offer a greater lever of interoperability
-with other containers, allowing multiple containers to share entries in the same application.
-Implementation of this feature is therefore recommanded.
-
-2. Why Bother?
---------------
-
-The [`ContainerInterface`](../src/Interop/Container/ContainerInterface.php) ([meta doc](ContainerInterface.md))
-standardizes how frameworks and libraries make use of a container to obtain objects and parameters.
-
-By standardizing such a behavior, frameworks and libraries relying on the `ContainerInterface`
-could work with any compatible container.
-That would allow end users to choose their own container based on their own preferences.
-
-The `ContainerInterface` is also enough if we want to have several containers side-by-side in the same
-application. For instance, this is what the [CompositeContainer](https://github.com/jeremeamia/acclimate-container/blob/master/src/CompositeContainer.php) 
-class of [Acclimate](https://github.com/jeremeamia/acclimate-container) is designed for:
-
-![Side by side containers](images/side_by_side_containers.png)
-
-However, an instance in container 1 cannot reference an instance in container 2.
-
-It would be better if an instance of container 1 could reference an instance in container 2,
-and the opposite should be true. 
-
-![Interoperating containers](images/interoperating_containers.png)
-
-In the sample above, entry 1 in container 1 is referencing entry 3 in container 2.
-
-3. Scope
---------
-
-### 3.1 Goals
-
-The goal of the *delegate lookup* feature is to allow several containers to share entries.
-
-4. Approaches
--------------
-
-### 4.1 Chosen Approach
-
-Containers implementing this feature can perform dependency lookups in other containers.
-
-A container implementing this feature:
-
-- must implement the `ContainerInterface`
-- must provide a way to register a *delegate container* (using a constructor parameter, or a setter, or any
-possible way). The *delegate container* must implement the `ContainerInterface`.
-
-When a *delegate container* is configured on a container:
-
-- Calls to the `get` method should only return an entry if the entry is part of the container.
-If the entry is not part of the container, an exception should be thrown (as required in the `ContainerInterface`).
-- Calls to the `has` method should only return *true* if the entry is part of the container.
-If the entry is not part of the container, *false* should be returned.
- - Finally, the important part: if the entry we are fetching has dependencies,
-**instead** of perfoming the dependency lookup in the container, the lookup is performed on the *delegate container*.
-
-Important! By default, the lookup should be performed on the delegate container **only**, not on the container itself.
-
-It is however allowed for containers to provide exception cases for special entries, and a way to lookup into 
-the same container (or another container) instead of the delegate container.
-
-### 4.2 Typical usage
-
-The *delegate container* will usually be a composite container. A composite container is a container that
-contains several other containers. When performing a lookup on a composite container, the inner containers are 
-queried until one container returns an entry.
-An inner container implementing the *delegate lookup feature* will return entries it contains, but if these
-entries have dependencies, the dependencies lookup calls will be performed on the composite container, giving
-a chance to all containers to answer.
-
-Interestingly enough, the order in which containers are added in the composite container matters. Indeed,
-the first containers to be added in the composite container can "override" the entries of containers with
-lower priority.
-
-![Containers priority](images/priority.png)
-
-In the example above, "container 2" contains a controller "myController" and the controller is referencing an 
-"entityManager" entry. "Container 1" contains also an entry named "entityManager".
-Without the *delegate lookup* feature, when requesting the "myController" instance to container 2, it would take 
-in charge the instanciation of both entries.
-
-However, using the *delegate lookup* feature, here is what happens when we ask the composite controller for the 
-"myController" instance:
-
-- The composite controller asks container 1 if if contains the "myController" instance. The answer is no.
-- The composite controller asks container 2 if if contains the "myController" instance. The answer is yes.
-- The composite controller performs a `get` call on container 2 for the "myController" instance.
-- Container 2 sees that "myController" has a dependency on "entityManager".
-- Container 2 delegates the lookup of "entityManager" to the composite controller.
-- The composite controller asks container 1 if if contains the "entityManager" instance. The answer is yes.
-- The composite controller performs a `get` call on container 1 for the "entityManager" instance.
-
-In the end, we get a controller instanciated by container 2 that references an entityManager instanciated
-by container 1.
-
-### 4.3 Alternative: the fallback strategy
-
-The first proposed approach we tried was to perform all the lookups in the "local" container,
-and if a lookup fails in the container, to use the delegate container. In this scenario, the
-delegate container is used in "fallback" mode.
-
-This strategy has been described in @moufmouf blog post: http://mouf-php.com/container-interop-whats-next (solution 1).
-It was also discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-33570697) and
-[here](https://github.com/container-interop/container-interop/pull/20#issuecomment-56599631).
-
-Problems with this strategy:
-
-- Heavy problem regarding infinite loops
-- Unable to overload a container entry with the delegate container entry
-
-### 4.4 Alternative: force implementing an interface
-
-The first proposed approach was to develop a `ParentAwareContainerInterface` interface.
-It was proposed here: https://github.com/container-interop/container-interop/pull/8
-
-The interface would have had the behaviour of the delegate lookup feature but would have forced the addition of
-a `setParentContainter` method:
-
-```php
-interface ParentAwareContainerInterface extends ReadableContainerInterface {
-    /**
-     * Sets the parent container associated to that container. This container will call
-     * the parent container to fetch dependencies.
-     *
-     * @param ContainerInterface $container
-     */
-    public function setParentContainer(ContainerInterface $container);
-}
-```
-
-The interface idea was first questioned by @Ocramius [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
-@Ocramius expressed the idea that an interface should not contain setters, otherwise, it is forcing implementation
-details on the class implementing the interface. 
-Then @mnapoli made a proposal for a "convention" [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51841079),
-this idea was further discussed until all participants in the discussion agreed to remove the interface idea
-and replace it with a "standard" feature.
-
-**Pros:**
-
-If we had had an interface, we could have delegated the registration of the delegate/composite container to the
-the delegate/composite container itself.
-For instance:
-
-```php
-$containerA = new ContainerA();
-$containerB = new ContainerB();
-
-$compositeContainer = new CompositeContainer([$containerA, $containerB]);
-
-// The call to 'setParentContainer' is delegated to the CompositeContainer
-// It is not the responsibility of the user anymore.
-class CompositeContainer {
-	...
-	
-	public function __construct($containers) {
-		foreach ($containers as $container) {
-			if ($container instanceof ParentAwareContainerInterface) {
-				$container->setParentContainer($this);
-			}
-		}
-		...
-	}
-}
-
-``` 
-
-**Cons:**
-
-Cons have been extensively discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
-Basically, forcing a setter into an interface is a bad idea. Setters are similar to constructor arguments,
-and it's a bad idea to standardize a constructor: how the delegate container is configured into a container is an implementation detail. This outweights the benefits of the interface.
-
-### 4.4 Alternative: no exception case for delegate lookups
-
-Originally, the proposed wording for delegate lookup calls was:
-
-> Important! The lookup MUST be performed on the delegate container **only**, not on the container itself.
-
-This was later replaced by:
-
-> Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
->
-> It is however allowed for containers to provide exception cases for special entries, and a way to lookup 
-> into the same container (or another container) instead of the delegate container.
-
-Exception cases have been allowed to avoid breaking dependencies with some services that must be provided
-by the container (on @njasm proposal). This was proposed here: https://github.com/container-interop/container-interop/pull/20#issuecomment-56597235
-
-### 4.5 Alternative: having one of the containers act as the composite container
-
-In real-life scenarios, we usually have a big framework (Symfony 2, Zend Framework 2, etc...) and we want to
-add another DI container to this container. Most of the time, the "big" framework will be responsible for
-creating the controller's instances, using it's own DI container. Until *container-interop* is fully adopted,
-the "big" framework will not be aware of the existence of a composite container that it should use instead
-of its own container.
-
-For this real-life use cases, @mnapoli and @moufmouf proposed to extend the "big" framework's DI container
-to make it act as a composite container.
-
-This has been discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-40367194) 
-and [here](http://mouf-php.com/container-interop-whats-next#solution4).
-
-This was implemented in Symfony 2 using:
-
-- [interop.symfony.di](https://github.com/thecodingmachine/interop.symfony.di/tree/v0.1.0)
-- [framework interop](https://github.com/mnapoli/framework-interop/)
-
-This was implemented in Silex using:
-
-- [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di)
-
-Having a container act as the composite container is not part of the delegate lookup standard because it is
-simply a temporary design pattern used to make existing frameworks that do not support yet ContainerInterop
-play nice with other DI containers.
-
-
-5. Implementations
-------------------
-
-The following projects already implement the delegate lookup feature:
-
-- [Mouf](http://mouf-php.com), through the [`setDelegateLookupContainer` method](https://github.com/thecodingmachine/mouf/blob/2.0/src/Mouf/MoufManager.php#L2120)
-- [PHP-DI](http://php-di.org/), through the [`$wrapperContainer` parameter of the constructor](https://github.com/mnapoli/PHP-DI/blob/master/src/DI/Container.php#L72)
-- [pimple-interop](https://github.com/moufmouf/pimple-interop), through the [`$container` parameter of the constructor](https://github.com/moufmouf/pimple-interop/blob/master/src/Interop/Container/Pimple/PimpleInterop.php#L62)
-
-6. People
----------
-
-Are listed here all people that contributed in the discussions, by alphabetical order:
-
-- [Alexandru Pătrănescu](https://github.com/drealecs)
-- [Ben Peachey](https://github.com/potherca)
-- [David Négrier](https://github.com/moufmouf)
-- [Jeremy Lindblom](https://github.com/jeremeamia)
-- [Marco Pivetta](https://github.com/Ocramius)
-- [Matthieu Napoli](https://github.com/mnapoli)
-- [Nelson J Morais](https://github.com/njasm)
-- [Phil Sturgeon](https://github.com/philsturgeon)
-- [Stephan Hochdörfer](https://github.com/shochdoerfer)
-
-7. Relevant Links
------------------
-
-_**Note:** Order descending chronologically._
-
-- [Pull request on the delegate lookup feature](https://github.com/container-interop/container-interop/pull/20)
-- [Pull request on the interface idea](https://github.com/container-interop/container-interop/pull/8)
-- [Original article exposing the delegate lookup idea along many others](http://mouf-php.com/container-interop-whats-next)
-
diff --git a/vendor/container-interop/container-interop/docs/Delegate-lookup.md b/vendor/container-interop/container-interop/docs/Delegate-lookup.md
deleted file mode 100644
index 04eb3ae..0000000
--- a/vendor/container-interop/container-interop/docs/Delegate-lookup.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Delegate lookup feature
-=======================
-
-This document describes a standard for dependency injection containers.
-
-The goal set by the *delegate lookup* feature is to allow several containers to share entries. 
-Containers implementing this feature can perform dependency lookups in other containers.
-
-Containers implementing this feature will offer a greater lever of interoperability 
-with other containers. Implementation of this feature is therefore RECOMMENDED.
-
-The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
-"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
-interpreted as described in [RFC 2119][].
-
-The word `implementor` in this document is to be interpreted as someone
-implementing the delegate lookup feature in a dependency injection-related library or framework.
-Users of dependency injections containers (DIC) are refered to as `user`.
-
-[RFC 2119]: http://tools.ietf.org/html/rfc2119
-
-1. Vocabulary
--------------
-
-In a dependency injection container, the container is used to fetch entries.
-Entries can have dependencies on other entries. Usually, these other entries are fetched by the container.
-
-The *delegate lookup* feature is the ability for a container to fetch dependencies in
-another container. In the rest of the document, the word "container" will reference the container
-implemented by the implementor. The word "delegate container" will reference the container we are
-fetching the dependencies from.
-
-2. Specification
-----------------
-
-A container implementing the *delegate lookup* feature:
-
-- MUST implement the [`ContainerInterface`](ContainerInterface.md)
-- MUST provide a way to register a delegate container (using a constructor parameter, or a setter, 
-  or any possible way). The delegate container MUST implement the [`ContainerInterface`](ContainerInterface.md).
-
-When a container is configured to use a delegate container for dependencies:
-
-- Calls to the `get` method should only return an entry if the entry is part of the container.
-  If the entry is not part of the container, an exception should be thrown 
-  (as requested by the [`ContainerInterface`](ContainerInterface.md)).
-- Calls to the `has` method should only return `true` if the entry is part of the container.
-  If the entry is not part of the container, `false` should be returned.
-- If the fetched entry has dependencies, **instead** of performing 
-  the dependency lookup in the container, the lookup is performed on the *delegate container*.
-
-Important: By default, the dependency lookups SHOULD be performed on the delegate container **only**, not on the container itself.
-
-It is however allowed for containers to provide exception cases for special entries, and a way to lookup 
-into the same container (or another container) instead of the delegate container.
-
-3. Package / Interface
-----------------------
-
-This feature is not tied to any code, interface or package.
diff --git a/vendor/container-interop/container-interop/docs/images/interoperating_containers.png b/vendor/container-interop/container-interop/docs/images/interoperating_containers.png
deleted file mode 100644
index 9c672e16c72a08708ea5bdeb51757c2951d3ee66..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 35971
zcmeAS@N?(olHy`uVBq!ia0y~yV2Wm7U{c{=V_;y=-1sh)fq{Xg*vT`5gM)*kh9jke
zfq{Xuz$3Dlfr0M`2s2LA=96Y%P+;(MaSW-L^X6`OO-SfH`w!>m+D-PUQg5Ahp~*zE
z=|Iqums)yFuQ#tt4G+&*{pj<HRjc1^>i@N4nrLkJ-TPg8#RWu{b|~%TU|h+m+VW+d
zk5TQjKmRx+i;NkCJc`oQ=6`=}x@X30&HI_p>)u=5ukKT65l~Q4Qd*?9FvyAl#0WT+
z(%sR~v4Y$1rjnA9(kmyQZ5<sQ9lHc3>w={9j*uli!R;kON5?sL=S<C4-d&0<3=A`p
zk_D&EWAvPKtMvb=JvKR&FI_9{zAL_GW~0gZ>`BV~<kyD|Pc*7wd9-Ph!pe#>UM}g!
zQ@T5tnzpXu+RCaPu&3I*<vMq|GxMrXpK4A{S-OQ~+9aX-U$6c0o!j=ZK9*-|*zI-C
zi_OdySfrcV_&u*YI@_p*WnIK4C6lVZm3QZNRPm`ryNC$*<=t<4KmW)5vacpvkA}ta
z&QTQPX4&>CYtQG^I}Kc16_qSmHI>~C%$dYgTx1l~*5BZ@Hq6RJ>6MbtwvHD~rr*6n
zpFKMi723M#@9&9LRVHr#zOi|{^-(%BdD1OgmK$RIum4o7I5%BWZJG1OFj-3`MHVS9
z?~4IZU61bWPO0zrJMVC4f})4aq~0BCbX3yPi#sN1xES12T2%JYVy?#R{rtUCr>@Y}
za7c~QlhW1>+*e;e+qwGC<AWWq>$|@#Qx^0*>A*f|`iCVdE-K4^2+0NK<g~w&zrEgm
zUBsuP-BpLP{6!9g#XhZ`d+n80i@I8=hU6+u3&x7Q>3^$z4|2-<OIw;B{b|EP4=F2=
zPUlS%XUyddj=96Cy2ND(k6N_L6}9%GO@Df&1Gc?SpYry0`>8v3jIVibUHUDB@kr#P
z?rT09H@+}UQdv~>z3pC3o2HuBM9G)?o+xE{m|dA0A-~jo_QmWYC(7<_yM7{2{7+49
zYN~A2e})Aq{(N5Fo-i;7vGE@Z{a+;-)%>t2S#i-j)y}?uzdBdAuQ+x3u)6vEihHIZ
z3<alem0oCVFHZ_Nxc<)p#w+6D3!fd~oFadN-#gH7mH(6Zo7;1r^qMDr(cQl7Hw%Lj
zm&}`+N{h^nrlmP8zJB;-UyAqI%Zh~_W@k>G?C|h(eDpxk;OJ3DX|Zd(6WOM>9BiIw
zP_g0uw?}jCYTVw=pZfdz!kqhd5!%|Rwuyh2`K1cl22M!Y<a)(<%KQ8MEsD-oCG(Fc
z-n7`6ynFriqjToGv7UTRM7sS%Psx$gw1WbI7ey7nYiJ&JS4jQAasO-ErJyPA?zeyX
z`#Uf`re(&xTB{J{XB#3Gn9ts=6r%J>flpbeRipiA)8yOR9{uRIfAr*<?uP5vAGhi6
zbE!y5+AaV1xxbxTvMZ|)8^2>xnc1O7k9HX(z4AGow_7x>pS`)RQq?H^OvAN|AS;zc
za@{Az0y#E@g_^2{-`@7%#;>n+r4GSzbu7&Fm8$16xC=$u`IBzG-F`54J9CDWq(b&H
z9iILFwi~FcYRbq4o<E$@t#RV&oD=T<`t2W`xMlj>CfOkOjz!GBJN6O3g&&#e{$#KF
z_e6OAWa%qbvTX5{qLcL&<sF-)yGY^5hKPcUr`IiZ)L5?Sm(RXl>$7oVhu`@Zk4|U^
zM66zQ`_8*UtB;?T&wp^BOMga*V5#!A96?q=Z%@uLy;|AI)!_%<7R>ql?V{w~i|LnC
zzRWh0Eo5dZ__2X~<CJNS9(3tX*j{D&s*CIPoTw(-SeLuaC&dB<R-QR~bou_>FV_^u
ztMW)T{kyzOx%N-RkuUEq_g)NKa4PnzZrPrH@>k~C+)TT))O>c~#r5kCpSXXIVXNPA
zhZdKGy(h&2C;a?UZocr(0ml2KTm9O%6h6L?eko;1|L&G_o=cK*wO@A0n{Z4P`)e+=
zY4c5PuPdE1as*jtDra9$c>B0tQAd%ndHt+z$M8QwYHATz7}>+u9Ozs6KeL!~;fgIK
zXX;<)X86w0YFe?`;HDCnk=%0O<MlE9b(fcI{@!?Q_VJfT8b#w1o?p72xY{l@!2bEp
z=MxRz33=EgPhD}@;HFa0jIFD<mfeV0dU%1{sj%4IxBuVYxA^gtE9LCG-jo0TIxN@w
z;p^hFtwSVu%WL(Vx<byD>)qM+YNS{3=^S;sa?>yGe&3EYIueT)P2p?Rcv3J=cTry0
zme=ZUYW|jr{M~YSyKep8sxNbmTo0~TvD{nQ*zKi2hm%<KwvJt$TUT+}+x;$=`Tvl8
z|Dq>5*64i86BKOK_?9DBYS@3d(^kH=L-zmA`VVswl`gIL!c#HVZv{_VUSD5F$1bVK
zx{LHmie881M149WIsM8@+f1QjfBuCX;gz^>cA{YHj8)3+3%I$PEiEHo26QmVwF`Fc
zYS_ApOL|^4+wuAzjB)F)zklC(^QJ`cZKp3%rH1W%nlEmwTD|enJL`v=ZW=tl`CRbw
z_Vt$(1zAnhqFv^``EY9e#-B%3H(b5;>#uLVS@Icqv7{4wDt$I-XjIPeTT}JI-(q7a
zcgykSjwdN+YQNs+@b?L^GFjAcG^KmRWD6a!oSJu$Pu9j=P0PR5U^zYc&7s?Z^Cm2C
zC~=vqTz+-?kB2MOA8xx{d;5`*vElQb^&fWomay4uQG2B_wQ}c)T;+>hr%xTay8f@d
zPwf}OcRd;}QqRt5ZJZv@IQ3b{$^6tfxv+cn@=~Wyi}v(r6d2xAdZn`0t?$r=_;~g$
z5l-o6a=8uvpWQyuCP!lWwS^N5|Mh=gaQ;YV9q0A!^;Hbtc3H71D|7kCxT(By$!lkx
zf44?>j~sv9#}CRLa%Mg+Cv@y;x&81!d3`0%ar2yp>u<m1`b!(L8UOq4`9fJqq^D0~
zgTYOuS1G+yr(T$S_Ci6eC0AiyJG1uxYQe7Zw@ud{f6P5U%aVJ4#Sg)MY#n|N4U_`a
zxx2d``?XcE^v3l|`rEV~d6VOzdv4v?*sr>LwSPrz^rkmm6l4Wel`bXscmxG!{5@0L
zab8Nndxx2RC1a@jr$5t{DZK(^5y6YBhAu7%w;mncWTm_PaN~QqdKo^kGs1>9m8`_G
zL#JL+6ky%+;tP+@j_-Ci1*&`xa_0Ow{<&a&qHn;Wc}*w9E=ERpd2M*JE&Ai%|NneJ
zDdk>6<mSK69whx06P&EO$avM6vq!sjzjujEROGAss=Dpp>(r&rN?a9>-|rN^xVQTE
zv)SJJG9)e?@0+Ze;9|?WyiOs@IW<pj-=D{^b+4t*RlUjtCH;jfI+~nsHZuSCwXfRX
z$EuwYUw7Yk&Nk4H6`HtcMvmatqGc}G2j-kMe0%YDit!QQz}ss=Lk(Qqiw~A68QfHw
zw9;~7|I_V%59(i(`gmK~;M+Ir9gh{17V$k+u)3%@ZIaNMKktA46<Qm(|F^B%{UU8)
zT_q(e{X5kHj0F)o5taXyuFSR3ynW84yQ4!-<h#O^$Cf%`H9wE<4k&%IBIox7*6T(W
zm6R57A4_z3b<xI8{o22$hEwEiG;Yr`t>)9)``zy5CuJ8Gm*>sZLa#1v+y9HpFXxuZ
z?P+x<Rev01<_GKbJGhtgYeai^U9YWtox<&DGv@Zr^tWN{y|^ME#KlD<%i=5ZR}a2!
z*8G2;iYjFJO#ZW+IeBtN+RNDnZtmKk+8|($I(ybuHqK`D&FV9qq$caW+Q?P@?!c>d
z`KG=5<g(`Sh426Ne}X~AgiDEnt$QBXTHg43E!tvdvh^Y(BZK$%|2JMs39`~zq<1)_
zyK2j?MM`U`e)vmR)ibiiee_;>Sdpu8t2+0GoA2}54kvxg-Th{Lz4QId%L|_U>J(Wt
zBPXz5eNUXjB!xmrxkY&!pM7*MEO{GMVJpYrkn{iF57FxF8ZCtr=2Y2uE=^kGdZpJb
zrk?pq)!z42S0^f;xW9ohZhQ2>6&<_yKrPi*VTChizOXG+3d!1<e|uf|y{6+20}Qkl
ztvd{AzwU~S-Wz@V=5ANTu9ISdf~C86obgFHJBKy2d(n@(@AsX(r_1FDYWI2wF3#U6
zYPI=h`P{wHBCBTP2ntSA^4YlY#4JnhthLv+zdf+&{KG;k(VngqpABy=nsAhDw#EnE
zJ%6}XM5#m{tu6|v{9&*sZhcdrV5y#3w8*Ay`@d<~?fvN{^7fbK%Ycp-JdccwCl<b3
zy2)7hd)+6)?Cly$3~nx(5K^op|J&}j$WwOyq@%Irk8Zcixg@79y_6^zD7{H<w&v@*
zRvR;wrL?s~dOB7VgDl?icWd~=O}80M&I-iuD%a=H<tpsdC`gH^(tO0u_vLHePT9U?
zw{*Yd1$HECa#dWOaoykI-(mhuxx(-N%io-1=OSXE;(6$RW%voMr^Vsxn=WUC8fYy#
zcQ~cn>D;vGaW1D-?H_O2bm6)9{s27%C9CCUW*Q4lo50W;*MCORxbWxa{|$;pK`%FS
zSg}rzSU#aB<*ihRjFpP_Hocv{`vX>1#5jtaFsZU#X8SL^<>;|PBJ%p$Gt{}te70#U
zc~kdY_U6}nlhqbpU(qev)z)F9RCq#Qsk6c>A)7nPCrteRxPOIBO~kd;roYO!ZwT-1
z=ny%&SD>}WS$qGa*!Q-XLXX&Z0yLzQloqM^Y|~H)dG_qlk6&Nw_C`%o(UcGs6cn7S
z%OzNC|L??m9+z)ff`Wkx37cFU&qsx}DrbkC-WFT)`Tfn+t}ZT&jVHxe_uhTKkGZ^i
z<}#3Ht3Rc%Dk~`|S@oV2V>Ru+{POy0(~^Ho^BO%|To{|HRk*UQt<pM@miBAi?4;z0
zl{b07swYi$IlU@rk%Eei+!b;0$0y3O7hZd5@MnMB;t~&+E1fx4uUh;%{JkJ@?T(Ct
zTLWH~c(uD+QS{lSk;1WFoI#<GW1@x%sP=n0U;ojGU8Nr^<{BJ3@?aOgeVd(4%*zWM
zRxQ=4T#}Q#j=FSfw7fWUIB?Qr=KjNs55FFYitM~(Yx$wd#;e`!isBt(LBT+Wpw}fH
zvgMp1vo4?hAs7Fj8C0GJ3YN-%G6+{hZM`9@*4k_3w)L0QD(>d7Dl5IRP>XhP5!o=Q
zowwQ0=#shT#;vQmoI6EIKnXwaz@-;oJ$9$qv<qpj0Cf%*H5^;$0*b|s4vhtc8WWpj
z!RBVjcr8gd4$5Ura_vHzGYoGoTCl13<?D+4e>R{-OIP{(AS)TAS8BPus$nt~527ub
zG$w!)6{UR5x-!?M(^kH&LI2$@;r6h)wV*)by(Q(Pb7yC>bEk;NjGVv=8>UQIVD;ak
zVOgm_XqIVJyj9@C6&)*ftME&+d9M8ytA7ij)Z*Xcs+(V@OjJ(n=m4dXS9y|;)lXDy
zJH;>8vUp$I!H$kw?m|u-@2WN(Zs&h|VWIPhlP4Pmn5w_ObIr}w-DSwal{DQd$Kz8)
zjj6PCN!63prq6eX3${+`<dYWK6SsoF#6v6Raz^0Nu-~^>7k!hmsW3=NPM$b#ULPYf
zTf&(ch8JFcjr|l8J1^($&CTqmr|Tbgm#=McZs#-HxajjDwhw1k2wvEl5h8#3X17+m
z^UVVtE24S(`<z<bx?{RoMfuom?ko>b@9ghCz9w>W!PU_4#BXnI8qD;W`|U>Tq#R2b
zzCFKQt&Z4~!ujd*=a~r?Szn9GwN<n8wy1bcP~i;aW0yO9b9G6C%ayaUey`sVzHpt0
zpkU+A&(9xEbeD5<b7Kox#l3pht1q+GUXQEht^M`oVD0z2?T?T58(&=HXZYia=KZsK
zqbk3OwJIwqsd5-xT(mAcKED5Ye7)@9cK+jkzu)f{R`)wl&3L(|Bx=*vy1!Ll-rg49
ze!tGz%gbv<O5k!S8BxvMbqm({E%fN<Sh0M?`t`@T_4hPfT<re1RXncYXi**euep<Q
z_I|sSJ;NxKt9sK4?-#0^E7u-7$A87>rjpX4cY%R{jlbXTmp8v(W9&E2=H|ng=S`E>
zx^{~_{B}D(eUfWzTEUbWj*S<xT6?)K2nhz7|9-Riyg~iH8X2pS70!pdp3lv>dhJ@$
zxjB{<4_n1&WCTu^lF^iRO4%zWD5#lwdt2@d!(_H?IX9Wgt<|sEzE63*|KIEV8?vsh
z`n=aVaCfTPjMVEhK_&jAuCA_vyQS9?&(E`c`|6?9`jqU8i(G$vyPdDtlCWN^RCBM2
z;<l?Q#XIL1&g$q8QE72VOjOL<`!(#z^XKzFf0OmwHccn;k+fCHBG*`5ZKbBKQ7$eb
z1uX(6PM$p2%x~Ax)z!86-Ztlx*H(qDF1TO&-SFh1yyU{&8&|KAD)m!u5s-0GQCifX
z*m59!er=n0e2rjf`piiy?i!!4mf`#I@-n-ss_I-ZmB8v13?7qOB<Aw@trsuVn|?`A
zFt8zj`9-?f;`$azrUSDUC2d)sGIPae2_CjT9}e?N*jAOy-h6iZ?)2AJ!{c2uGc%X7
zxnGfsV~|q}cvxU?QAufjN;9K>k4)cgHr@ko;xr}1#ktS2>aBJvv6JCrpI7my)0j_v
z+w16;1r{H^T=p;iF`=V_$*uJ;<9dMr#(=q2GnakkG<CV_$kDid-!CrfvNsK@d;J>A
zRHNTqRZ?2y@K}tAwKvRUeuciL(63pCt?MtwFDesoda!hQoKtA%)cf~ueVv=KUQAGs
zbx|@e?}u$S?7#BzxBt3w^R&y|+_SSxZ|p8#e?MjUbDwS3*2kZZ(^XR9@^IG?tB6vG
z{(Ht}n}?+n$C}vPV!XV(o8CV6*%r1o>L^4JD{pT>h0VUdAv~|Qc_d1k<uqK)nwo2!
zzUk}3cKNbM2NxF?@kMKQt=(cE{Cb;*;q7g?&W?_aIkzMC_ut-@n|<Bni;IhkS7z+?
zse)o`qU}PSicTCkH#RtKd%Najn4ceCyFh1$#)7#S8B?z2eoehArm3T@?q2qH%}Fut
z$DJJ-7v^SM-F)?QN|Wc>FaxDmFSWF_Q?Hw*@BY{+tiH=cVv+I8+0(k%wo4zEmI}z*
zeE1RH9#)GIE7>-F`Mxh-N^azsy}7@C{^57&6DLk=oSnCevz<@&(5BSW4@#_dKdmga
zl5OLaZUZTNTP9;s!0_|uPsNMb^XJX$lg{5GSXo&av9HGRP1){CikgSseO+`S&3XTa
zf)#$cG4qp*7HvD%`r!W*O^L1ZJpZjZDON7Cq@`f1RPbaWM$aYzCcX9I|NmajTYC5t
zCqJYBsD8g!JZ-aNQ1`>G`St%K`E5QhTw52*z5aUjH20U4&(6>9XP2vBP*qjEu_2MU
ztGj#mm!F3Y9omp_QRz<cdE1Vzu1U3izrVdb?96Z5a&>k1@3ZZ~KF`k1ZvX#t{(nbT
zSJrJgH!m&bpU{8Rd_j44)Y^Y(#(dYW7SDAFa%r#HX3^u}<zYIr#(nt&l__i&E>`*Y
z@Z78aU+Xj5j5lt*IH<IJcX#)~%P$QoKc)E0FkpPY=QH229?8p#%WHCPZpjoj%fHt%
z*Sh>r(#9X#UVp7x6S0wLv3viqH#awLto{9s`(0^QU*9q7_j{U8>+R-Y*pPIT>&>mL
z+)-=ACad`#`tkAc$79m@4=#D@yT--cW3>%;fAO_SCw`wy^6|c-qTw-(YooWv1qAI&
zJuQ}VYYS)fw>OTlv9aoIQZ-$<VK)PkqJFGAqRmoep!q{YOzhOU`KC8tt&F|2WR1&W
z$Fjc_t4}_hvM6Zfha<xN38$uLYUt@5Grb<u9J{;h;Ny=!s(g?2$#(C4zi;>1tsAR$
z=|*o$IMyS{py0hML`&31O?XR`Zi$ubl3?3e&%KuhC4PK#bcR{3)TvXa3f^wLo^-rV
zwqW<&edja3ytugI^}5{;3M}+~{IrsqeKDiOZE<7V`srV{&Fx<sy&Y6?G6)DAUL^i#
z#Zt#GmG{=l8{7BmFX_3q|M+ILXxqQXy-#_V&P=&}I;U~sm-v#4t~<Wn%4THX7T5ct
z8g=01{ZrT0MsLi$z0IuNnv;`r$B#$dg0ix`pFS16xv`OX>(;Gx+b?HrJ#prYOJbtp
ztJkjuMMYaXh1H!FUrabXO?Q*r^CL%GVv0_xeyFgyv7=BqD=RCdf9d6y7xvfJ&#|c#
z66<DFo6Pz6c)z=k56`#v_xqXI`R05rpEqGbL*QaJMK!f&YYfd_-`{WF#w*R{IcY=r
z`?x1hpZ=7KUmK>Zt<4=88mghM&(1L8Y}%6L%MWLmI4uoQ)YavkIdf)#g^Y%d&KK!N
z-rnAaR|GCjFq%1G`t<fWb7b}(DSL5YVZ??6MitLPvE_H4dT)uU^Six0|9G$Yy^3S!
zGoPH8*wNVuO1x$7?!5fI&#d0>@9*#Kg@uN%UcC~Klk5BV__(r?5|gE+rA5`36>mPy
zj$eH;r73EyTUM5qk+E^&_S=8svO_{dK-oBMZ`HxH&56hRWHq$3K6Qt$4O2EY7B)3C
z)zH?qUcV#C+t>H#ionGJVq$H3_Sn3+x%v3|ed~T&dU<&TL`Qc!HnSyucyQ37<b?pA
zoXv_80#&`2JGI)G*|th)c{T;Ebz2kHuQYq@?PSGI%I6l9zrV-CpueZ&_0xlj%}4By
z$LPe#Sx4=$Dcf?Q$3R<7nBn7%<bKZGclFG2ZYV5TwCGmt{u?(UK0ceB&$aumo{e1p
z`=sr+k52Zt(>!$OP|EiChRJO!R<9O5Z})r6j^FQgyZZX}7VN%z=<!F6)mODZm7}1T
znA*QT&+WOpk3RYxotnCIhHdq>fR!Pej;~s~R<z&#-;Nz`x7~Kh%v|~Yn_R!UPV_b(
z6*aYOlAkXv^=>_z_PP7#%H{Kf9zJ}y>9)J8YbU?mj|1;b_kBDjeJCgI*B`yzZ;S$i
zgO&IFdZjHWD5w~sHMQb#uX)SaG~u}Q;T3!1?*EnHYoB3Ryewe#Ri=iH{(kZI`~UBY
zx3RReO#1TT;->3=PAK<x96RQ=G4ryTpuGJ3h38+||Nq&)A!=>i`kybC&leLE6x?*%
zf4*I8NLW}`{h!D3kNT|NeW=cluXxCMzgERlX#M_wyEa6v&E0p+viKQCubXn!*H^0d
zYQM)`ym3RLT4(!h-ME^MuKVBL{qpj%tE+2k#Ll9n9i5#MbF=$aFInR9Ey8=6j^M<J
z6YJL7>*@LJ`TOnmqKz8^zy13D=BDzoUTO8}{^h>2)lQu{b!3vN_Yq-#8^x^b?AF_F
z#eV+$xhVhszOKJ+>S{;2Gd(+%PUnbOc?Rt{`(SB$d{ok=quvK%=gFHoP0Nw=e_Jqh
zPlk!q#<a6i4~uplx&QB*`NGRDZ<X#pal+%{VSam#>8DkTii(cNmfulax9gSG$L;(7
z`d+zmg`@wt^1pxI_j5NNe6aicnVH6|N0S7fK7D%VX;G)Bc34L%w|E!7{ht5}8NS4g
z5l6n?uh)N5w!7l>+U-XUwQ?Wbe!ot8j^FYVXU~eRT)A@7@m1^Bi@UnIf^?U@zSarS
z-7Z(<F=gsh&i>=dakXDVBM*rS3MyV(8?8RaZ~2YQ>HRxCpR+z18Xl`ErXTmF`{&H`
zd4g_>FP6{W|Nrm%Ls?t9`tAQk_{=bHjH&r}^wC9kc~MXd>vLxKDeeFHO#1%0x=Twu
zADyrNw^>6+M?`PB_nv>hUW3(ji|Gn^dU`rdQW2Ds)4R4NQhAQw@*hto`ycu8^77Fg
zg^!OEpSM+)l9qOji<|f2{{H>%i+}xky}tGELjixgpGyp8`n>%$M@dPk=KRL=^KymX
z@0NG3UboBZ&)4<!qM@OohaP|Ics{S%@0(q0+0E2NyLR3BZn-vgci5fE=W`$3OrI|*
z*6q3@Mz8R3uQ}J+Fl~m8PGR*fcezTJIX0C+J7V-Umb?rC<;G6eZn4fOQ$!R!CxL>(
zH8gZ;#rM1AN7vW?&HmUO|Hlbb%P!ioB?M&HVP5kea_cSIR;|+7m~~Z4P+D61_BEO7
z<@amV-|c#>_wmi<^IgAwRXr@)dBoTJuF7w|_V)Jf{Cz*&EM)jT-b|n0DQTS6QTX^+
zXZpNKw+J1v!Y3yL4GSJPD9-gtm?gaH&>^RXC00kDot=FYlo(Iz@7EC$5)%16*K4_+
z*LLweAD9eoK2mMa|5!D*BJ+zz{HCv0PCV>7&SLVmr~Lgr-8*^Pf1J&)d;Gf4^7_+r
z*6&5aR)^-?-sY>KuKs(Q_av2N{`2)-y?W)6o4Z!Rs$|9c{Ie&g9e*s?Z~JYAexkul
zpQN|9wjO#}!qt9QvF`ux`@hR(7#bQTy}!5j(8GcgRoiDx*6ly8Jg?#rXJr2sP;T?}
z?Om~QrQpq*H}}cDe7pU=o|Lro(Qj{WyRMJhn_}oc+YFS#J8s>IGR(PQpy)XXWX0uW
zzKgbP3*(Wui@C<EwDm=7hTpb*f4@aXp6@!DA|!2|C&J6in{;W3XWjd^XU*^Hyn6lm
z=<@k>T8kDhuDxw4)m!oN>GamKX~N&{*YCgZvgA;XS@+x9+kXqq{ib%5TU<}%>({TK
zx>?EA_OAGL70;wsS5_|Cv?=JywQF4ymEC{+yEZ4sbpQ6VwiT09epX$drW^h2d(`#y
z@%lPq-7~C8S6#?3`SiZNW{-!L*QCAe3`b(i@2cvEbyxg;yS?`OWf|wt(5Vr7tG32(
zdit^A2&kNX9b5h5VY{odb92PDoSAR-?)i938dOaG`1ARE>fT1FUbj6z9(99?9GedZ
znD;d|Jxe+L_+!WSd)59&jvwdtoRl)(Tz}7(FW%lUc3n(ft4^}4{ORMu;#XL6y6M@m
zW5>$wy05;P^zP2i3t3w$J{}cM{k*Ot__QUc?pK@4nS8vj)lFG{;hi0Y%5haMRqr<~
z3tN5FeCd(h@Aq|s3iEL9;OOY?xz^=O8LM^%u6$zu_Uvr)$2*_To4nR#f9h#58M_*Z
z#Kc4ilMI0nt*JWCrpHyC43EAl^Z8h>^v2@nevxP7`q{%)i@GfqoUHCYZEqj<+TT|)
zOlFwp%b7^=-m7}8do!{pZ@YAS{a;fVK6bsmUxFlf*fLC{;wSFCnw5L~bN1G#n98S9
zFTDN=in+k3s8_q^3oy+#%RO{%u63e`lwsN#iHxmLH~*UF-|JEJp7tY2*eT)euF?%r
zYdyTZn=fYMe1E-m#R`Ya%$4zHFF!oo{;<SKP+a`^cU#NJ&vv|e{kpcW_W$4Sb%mKG
zQZcn(uY!W<`P}l9bkkj{;-0v{)&ktktNDD^e8bHg3H!P|_p>d_-bje)$Mu{#<u%8u
zBL91~>MPG%-&d=?QfrKodH=Pl_UMOYVTSWMZ|1l~MM=r<vGd7VJ=xA&YBl%A&*$?E
z3m>`gNEk3=ZH)?3$=w?Dm+Q#t)vF(VtpZg^w>NSs284&RE3)vgHQ$fS>+S8W>rdT$
zbHe=j{S%elm27QgwWglZfA;Kp&9)hD%dA1s)+1*tb>8;7%({KQvi5wr<o)B->h%u_
zEN*>`o9kIoVR7lwr3Du=3XaQ`C*0dpx#{}cNt2isU+kDM0~B%<HgfT2-uf1uNiz-#
z4t`i-b^gb!?{9CndrnqU)Yj&f>U9e<xOeS&NPIm1`s>_#<K9pIvCZAfi|bgweE+|{
zzm;`#cxKL=X&}`bu=?s-yXK2&n|~e+4G(AUKd#)ZZDS*|a^=bkFH0hJ6oBik{ogHg
zba*yy+<4(-$)@9{&!2ZMEj692v#2;>lPlxWuUq(AmsgceN!xrgAUc{`k!91SO}Dll
zzMQqyK!T@W_uUP*-_}{HD6+hI{aUfbAtK@it3UIFKR;wE=R8}ocBi?=>Z?xcuOEK=
zam!4Nxth;JwZk5~TD|_*qodu1b$=>+=2!?G@0UM5xBOn`*6i!QR1Mx<y|Z{l&`N`n
z7Xc}0X}|6+Td;t^{@)MfH)Ym$^0w>0JagtuOVnDs=O!{zy=-jF2fxp<eq5aOGqU8#
z=Z>D9BlrLRE03xF`_({#N5JX8%Mz!>7k>z?<^DNuOP}{7l@(XB;@9Vvm6`qe`uchK
z{zHeH*2M3>cm1@Ni|pY<7cPyp)!Ud<Zx&h2y|Fc0d{3PIGM|}E8#ZhxzIXg>+3&I`
z>92UZdwW?KLPA3|i+0tNl$bF5SXNxH`)<L`n1Iz+)89yD_3f;DvEt_U`}O^vlhqQ>
z%rN}%<+A_8S+lyn->c?tX6Lti&$7^xantR$JKpVjZBX#QAtf#ClwM?HWW}3}$1mKt
z!Lj^u=iS}qhu@YZe|mC~gP%YDda=dabDQ@)n=wPeW73s}=T|D9oT%a%v8Tdt-Tr@7
zpdQp>_x`qn2@Vkv5^3k>-F@~&`1$J8n7H-Vzstqf|NSaqk`XZb{l~@qc3RTMR2O|q
z-sH-7ctMb2*!u6W<&}FGje9g&4t#og`eA{ELEaq;pBV-Z=NxwC<>l4T)oqPi?_O56
z?fzR|HDR}2DOS%(A1?db&n<uNU+v=R`jeN@)y+*wTbtX7L&mmBM6RD5q)k)PGW(3O
zdtZy!(od?Ux}1s=CQojb&fCGL9loyRX3nt{fr}U9JzsQS?fmr%7cw3_dh|ku$%zvu
zKG?cPPk*+5ZNx?<v)R0$zG4ff@VTFNbnTZbI=B6}>N5AW>HPKAJR?d<OqTh~Wa>ZO
zy#LQr{TrLp`S0YFPrvSDTL0|q`@+vE>(i_HJ6AlOkrQ~p!$>OC{Z1<5wx)yAbfY)q
z-L>+V)Uwoj`lC&!^(L#bYfa_){Os)EZ*OlKR(wd<5u;c0@u>KR3Y&;68G=DUK`H&^
zZ?|4ovbL7~`Sa(EZMo6Y)uKWDU}1lo#*Pk-``cK##TJymzo((2bEJ`(y~b81zV4^$
zojmh*d%wqhd3DwMn+3O+&VdUHoofwu-_3hbVg-uqd)?EVmz&LgyJoMo-gNG;)uK^r
z#r9Txopkrw)1t(qU7{Z<Y(U+Di8E%rD6gOEr|vyrTkh?)(%07*8UFo!U!Qz!P2{E)
z@1;QxLD^`UZnQzp4TBwb^J>0c4KJ{oyW{!1>It)EX;uHpUbmA?Jhnv8Z;r*o>a)*J
zKP@_#w%Kv@RV7tb*Kbj?|Lc2Bdh_)~iPf38*4v$1zsdH#JgvXK<?_oTvgLOkez(o-
zTe!FNr^}Q6{c>CqhE<j4y%UoYcofYx-+ue!vHbszr>CbUgF1XWi&Xh!ty-Ab`5e}U
zCEwXm*wNqbURk+w{kP|5&F>%CdOfaNP}wcv@-p8aFBbO)L`HTRCLjATEwb{%LH5-2
zzoo2-EO|ShiuK6bgHo$$P;hYJ*Q?>q>#sk4xqQA`WaP~C&mXPbe(z8dE4M+`6^)!5
z8yMy5{}^g%YZrbzD*pJ>X?=DEn=cof_sx7092~qc@i5zyXU~$3c8RW7v*yT;kB<$@
z-^EOsG9}^pxw+}S0Wo^wWp8dYb_%OMTDg4Qp$`ua3knN2*Z=!GA2j6n`~CiYR&KF`
zLoJ*U`|E5$V<u0YKL>S6r^gg=rk$J98J)M2_4IW8@2ZvEV!BRMRaS025{;lT?Zd;v
z76lI&LbODW^++}!IpPu$5^~^S!GYIbAI&Ylcks{8&xTcBGS<ZJmz!VniSyLy(}r1B
zG-B$0KAoV#*>CfS!^_J{Z$<m^r`ffSI@Li@>f-A9aB6tm!SnY2d(O@_UtItH-;eA2
z|Fwq4*NXZr7rq`}Z+omy_I0^fO8T!Ci~9}g|JC@+GU2>m`(4)V#{*^=>oOieK|u-g
zJQ<L?Te-y_eLiphJSfEFdGqI-k3t&LPfwbhGI?g))M=|Kd~#!xl9E78pO>>mwp6-(
zXlrBp`0Mrh?lo(4Zq_)TJbCib+wJ$Kon80tYt>PI`@bq_XJ$M!Uk`3C*4FNg*qGFs
z<EOeH^PJ}Dt6KAFzeV13S;27R|KI!nLEYlK{eR2uADMpkbI#hhy|>I~SA70_{mPXN
z>vubxUwp0Fe|^TBIXd7*N6*{1_2F-BZS^+WY|W5pB6alhd3*iYU+=vB+V%GK_U?_z
z$A3NRnPrwcYsK2NqVaV<m)_@j26Ef(_xptXmIqhtjRSS3RHw&0+MOR0Gv~*1`~NS^
zckev>P~h}5UE#mKzki?oSkuZXN+)j54fE!z)8}9In%@&>X5*c7Hht=pDJs+SVzp*F
z-h2JE>+bII-)R;3KYs)-_XG7y9<5%#Z_?RFRtFvl1BWTorhyckeioixH_tTt8b|x#
zht+F^)%`@WwnnL_sDRsn-}XI!@}%SSy4`*<mPIb0%(>4qiLpa7cv(kR7uUzH*W-Ub
zyP1_8eR@Y%ceksbUti9r+t0pNoSdY(&+=Z>zT@#VA6q315*ptBon@5TrJ=7c9$)`=
zYe#o?@E`M&-1?0bnVv%FmOig9FX#XC`SbZN>5KeCmtR*tnc(pLgF%K0=g;1-CnZUN
z1?gFGpFDkhTw-Embi}y3y1E{Gthn{&=L8kbhYugVxV)VIN|q@XH~0Cd99cm@#@%<{
zZC9JC;@Q#D({eQFqjXuw>Z=B`&+gm&ks;yPnVF!D-iFH0X*v-b82H+m|Nj2oe*N{)
zjmgK)S(!Q)pV?dez0Ga0W%ij#Dvs-~FZQ2rXE4)8Lr2HO)wT70?)fjfX2~n->hcB#
z25M+%e28uioTT!i#0oS{KXKy36{}V`IXW`N=v|kro*h-^w{hdfjGP>oz`%*?#a6Ao
z-QL=|(0{(&g$xr7EiI?i)Tfg6>YH!!v>(3s>@_DpfBW&rjca?i{*2mxZQA^qDxMv^
zy{=JFQma<44vdK4=s(`PVS~Yr7`^?^v$Wf|JH3}*UReJAUPn)lOKIs>$@`Bt+qx@s
zUdl=gS{*2pkjg3YE9zg`jGRD+iGHySm)qG({za)rpB0V~YBk!c@^II_y%+73m=d#0
zv*!BQ?0wJhhHK78Z`<(GU%FU7i3G4PykE&JtgB=t&!>3de2&`^H|Diotrg9T$I9jj
zdS4Npkt6t(!6tWp)vTb|vWt#BS^M`)+Pe=PhBnd@HCl3SY+#%oUk4hfvQSk0s-Z3|
zJy9~T?N`X%IQ_|jmZm~`Y(6Nkf|gJvhOHKrHp>aH;#rgzo>zWCXm!fuiMG*8B<j9*
zbZ9&gxt;T2+lwP!7k=ws@VgQVo~AsZxh?8pZs9E7ri%>1-A_CfK@<5JPj<9Aw4Qw@
z?KMS(v(t_F#&%b)giWq4E{ZG9Bu>AYyHvvW&dZ5PKlUmsEt(LLw0ZGUlVu;-Y+rBl
z5Cm&i5jBrWwT;e9RJ$J{;BvP!*nYyJq!Oz;)24EEpKcA>&HJ>By-r6v+)77@tLQ1;
z?i{E4E{g@vZ1v!Lb5rT)(HEsJQjL-vQdrbf)siYowt(hlI96=1e(<5HmUDXGTDKOr
z)de9}K&xer9(^_Yl}5-UmaQrakG%}BQc>a(JQ_B8eV+Ful_l-1g~#3R_T9G(idhq<
zzdP=1N_U5q=SJVS?Nbv{CfbzRU(1>J=uFhl>l;oz4A2l#;xZL2V{Z|#2+Ma|c(qGt
zb?nOtE7+4ZxprmW-Fy_J_w=(*Tsf;(v@kqiRcK+DzG&IIV=3Jt;;XYwdtN*+P!cTV
z(^rsoQwd_q-sVv#X!Y}^<5#`uP7?(L1xxMJqL*m&svNwLR2VV)IP>)D)zhj41O-{e
z)uNZI;8+`0mNwz)+b{#r)cm>QDcvHXi?5$tw>hr6qr-`JvTjhwYh%I4^{y^13)@bL
zX=*v0epI2P#Fgu_%_9&T;#UlBD!GEEnFBz&pH9!Q1Wm>TW^n$LeA3P<-4?ky?O=jI
z!hr@x4==ArN=q1zWN$wlRlvmXVAa~A_P^4d#Dy0Zgj~6FtXKNs$BGS!hrzR6A1Z9T
z+OOo^sB0064iuCTeOhq+%7N_d%4N4oR+R24zCZC?w11v`)T9=R&sJ=;zrHxu)zz7|
zUA9#7pVyPUey`Z(w6jj{@9n*5!DeyMrgNo0gV)jX+6|y-#<#b&{&>`_zoF)5k%@_k
zhHTLC<llm`UUB&+-IUL3J)FeY(x9fpbG`nT<(IV0mll4NuwD2!V`XZUXwb=PXJ#6I
zyb|o6_~XOF9EHwZ5s{IS^XmUq?)h+tyTGcszRqNu{6b%j#_!K!dA&V5^VKWvw#zH;
zD$h@4e!b9X?cWUV(_geyvbKR{1xjCEdpJ9P-@y(+<r@J)rJzdM=I@uwC(fQddS_?x
z!iy~Fp-i{?=Q&PNnNhuzY1QT3dtW6VfADaXXcx!SZ;SUf+1>ngSpHu_>FaBWpProb
zYInM#yma~U$DhyJAHVEx&l@}8>i!LXUqmjte0gEk#2nLUQ%$GpPe^Lo`S(S~0>5o>
zbw5-0d^)9VAk{lTrPF<h3s=U!w|C3$*Z%l&*<VmpbZLpl+e6<LKkxMMZeC)w_d{*$
zL(hupjDuwhIIewLytrvon)mX{i8nW;&M?gm+bwmn_NVEM@<n3DPfK0MC|`W>-Jy?{
zF6f<6-X);6S8A{D*?^TQJYL-{S#vlSZ+?_;W##!_)xu5*@9*uMVVuqfns73F^ey@K
z#p0t=WskU4+qE2f%fJwF?CbG)6U`4S=DaH>s@hWY`=X#@yu$xar}dK`9%@a`)yS5b
zQ}KNF;u~c<n0m|lP70T{1<u^K<JTk}9<TnEsH@-d{W%(WrOguF-PyTf<;s`OIL`OJ
zbw8h)v*v*6?6|gLx$F!#cmi)2eT>_&m916zwWQNRNZ9=Q&~E==YIvMwvh&N5>W>$H
zJ^oR2+tcE19IKKFSM6e><igKi{&{p7J6=8ZK7gYU)PO%{{l4Y!!vKXt+cy4vaWh0t
zTy1@|P}KCZ+jIY3X@6+oq9GA_UU<!0cX!s@O{QsQBx?Tu{k~7C``W4Ow-v7*?|t(~
z{S}+qUMcS9JO_Rp<h-!r?`iv1fgO+gtUvsEz5cK$!)b$!e-#)ccE3z@xgzdlwe|IF
zyFA6LMaB`Eub*vN``1F=(faFQ?e%+@nisx(ckgiP*B$Tg-@X|jR4TmsaP#x&vIl0}
zJz7xxr@B$a^U&jd`@Rz=JXjZfKK`wlVS%BI7}IiL?ciiq75(lfyQ4R3l^55_n6y@V
z{hmwaHxphfPxusNEw+FD;aglvtU9q%+vhC4`k~^l^+{o2;f)y=m0o<UVpX#4eamiI
zEU`#o$>rU4i}#AXxg6wYutk2ZV#cJk$K~tyoNc@G^4q3`JVBTD{WW&Wi+{B{prELd
zWnTO?`PQkuAGWRXnxMk@{a&^HrAwDYy4G>t=Fhs8(bb&s(UxPiezQu%{N+;;GVHCK
z15~1o)6N|D@bK{MKew&#%ep2m-8x%&5%<zhI~IQ1B^W*R`R;%Zo2+aqN>lab=>4BN
z?O?)z_jTW`kM{Z9tPAk&eWubOwtJsJw(4ZvR@S257bBaLZtnVaEBm&M*4oU1q^tg}
zT&}L-PVaM8^-gSQP+@t~c0pqL`;&ZPSCVco<l6s>+jCOE&!^M1x5=>I=Fd8r)-gr*
zX7YyXni9OG+*iIW-pt~<$+Z049kcEFu~Uy<-rPLpmgalk534LzCTRSq`OLZFmPVPZ
zRf)#0FE1CLkc`i<U!l7Epw8@Y@5h@Q-*3>65H#gJ0y3p$l||*JCuYmvm+#tpqily$
zW5){Pj5}sGOPAZlEc94mJXa(C$j3`;JU+cGtBx*dourcZ>&r`vnjZz*=N&uyt@&2a
z3@a(A_1t2?OmCKDMEDwdwYzZa`L@`YwdVY_9fgl?$uQlR9)Ec8C52_>C;T^lU%_nm
zetFrgnc=ME(&=Kpv(47tZfCkt7ZBa|eQuBP-{p&SQYEq$8#jo(R-LqoY31J+K8*4|
z8yJ~y-P!lIAl2O6X|Ctnsq_Cny|6J|J4D7Nl09F#H`U3BDP+|<+kMHu9dm<L79P8~
z$1||;N?pmahJG7O&6Q{0J}v#0*Vke-d0pxGY3G&%s9d?J^(v=sc>%L;@w1Zhv#huI
z7d;U2c<Y|d^&@3<`TKjhdHU<OZrwSzsri<+e0h214uPB%E7lY*SnGP=(&fv$|DKrg
zmOZe5a|zg=Ptv2}7B4$^^X$ZcbfX(tsn;!gB%-pU=Vt7E^J=D8{X4H5`;I361zY6j
zYCg!`cJ9lwqGRa}i<y3@%@!0-Y&iV(Xy+!jkZbJ6xn5@V?@2$s`r4^=>MpMgb6vQ&
zPDyQe8o+u>;t;<F+gh&LNoQ89*}iy@o`qfax(7woiVR1mJ0|`vOgng|ZjSect@2jA
zE&ommdUO~ac==6f{f>EW*{9^&TLm9bkA8A~LFmJ9VWWbhH%wk^)mq{AHh`t!&n7mV
z*tzYsKewjW3$$)scXN~E)8)_o&-fkL!})T>isFR)I$oV^2ku+O&5`VmPD@p^3+k6`
z*Z%nD`R|8cSSqyrZT&R1$Uhg-dD|Yi{Lt3PzZ0$<-Mb+4w0(DJwbzGZuWU?i?er+q
zNZ2Hra)>v}#-d)MEyd-acEehB?SeI17_EA_oPWC{CuFhwOOG>qSD9;_wYzYI%VMT~
zzitb@m@CrPe*Z?R@YCM({d=SBR<6vry1Dd0iY(vUHOCJgva+}paY%83OM7<V<u5)y
z5|bFduH2dES6*p+bI}1ot+&T_vUvYCG_)2h*7I}SdbCrw{Z!!f7l$s`U6i<I&UU#?
zb@9b#$E;uX9Xi{*ZNc#r?G6uyygfR?&BluYQVSoQ<p1`dqTB7|;jhOH6-=4Jdpw(8
zJgY07s^Yjl)KS;-!m9JJTq_Dsa!--9+Wh9%!6qx4U*Fy}_=g_i&HD3oyYd8?+#}}J
z-2tKR59BZV7HXxVWWVqVD2BGkvpx;`^ZB&%jj9cIu5<58%4W=)Ys+BlrjndgrWBT=
z>oB#|wC!Nu$uNPJlSSG(orM%wK3wW*-qa?P@ygjUB%<HB_4n;P^-DaP&%_BDyfj^r
zU81;sg`C;)dhxAMOjSo`1_VBDIQz2EarL1GJsK}ewPbWNKUnA9TM?{icZp%`vX#;{
zcBdNL+NI_C9bD(eUVG5`^6HD(Ic+CZ`|mEDDsJS>5cJq*#pYcB`L?n5ucqa^47`vX
zY7us+VN>y(OY-sy-S?*$Z;=x1TD`_1?pDLK<9o9>JvxmSe!5b;<ml`PV)AWGpV&mg
zPEB@U<g|Yp`tbPt(-Y#aHE155bYrF~qvn)b{WA(=-{|QVala0@{K9^5#fB~N?Od-5
zRs`%bTO7_Xn}1sJsSPd?rCBY~TYa`UF-%^oU{vP7v?WWFPxPAd_6>i#m(S{zx?`lh
zI&;Qq*Ml2wYj4Q8%vrNZQGT7+-7Df>yAL{l-u&_DH>WArZxtT?QfH8Lb%F{f(}6Bs
z^$+iMC1=cQ`2FoPd(xi=mz^{CV<z)59(XMJ<Fxhejr$kyZA_ERn>n+yoBfFM(n%j~
z?SI0%B!!1L>dXt<J@GvMwkSwf_g{Z7)BpRymw8?97wt2wD5x_Fd#B?R*~`0s?lpe3
z*zOzK#2)M|J)W|jJ>yp39kX->H~x-xx2ucXmTqCxUuV(qXVYctc?)ZkKP>-w^G8{_
z;GMX}_&)FEu(eLEYi0TO>=Q24m3r^CTRMNO?X7p`n>;iZUa2$rUR%jnvvn)O`?`9W
zbqYE5=Uf>Ic2<57<C>Af$~l#V=VV8disy~l@ps=Xb@Q<jmHYYC^~5XD#y_9jYIbkt
zFy-}2`Py|r|M;?pv%HNL1Tns^ufJ1%tWU)=z*A@$zklP+6$j@fo8Bl|!L+ha?Tp;q
zuJ}H0_qdI$v-wQc>Ta(pH|$!qc1CTXmQs(@nwzmrr>fXx^!T~7W@l|y<MBLl;@`#_
z8`kq!7inKCc-?)%;D({0FYDZ>*0x6;Id&CQYj-`9h`MfPnm^x6XQ$@2$EG)`HZW-x
zs-2Mp+2eb7;-ab?tAK~rN@f|M6$$@bC1yx9>b7frc<X<(V5iLv6KlcEZc86DX16`s
zxV?Pgrz;neKNrVXsR&+7ljRe?_SmD)c1u?1?CvE(th)lT?RCP$f2qv=`1<7D!lN@n
zWc1e9um6_(Ra*YRjcc+OZohu0Yu6XQ?}yN*O-UPnCM;d_*8TnwgB7ZrOShVt+-NG+
zb(oaANmS)al&I1nlL;ydHZ0nB*7N=?qtXbjU&~z-*6(2a|NEd^gx}wS@+V<Q_dBI*
zir%_{Lgw1jDT{VQ-8-6Vmi6Ic|IZ&ek2&v0g_<oFzaBHI@nf^_hPMH#cj6jre{MaY
zz2^9gH5L-3i4nVZvs51ay6Je-{_P^tb$ZUek6*s~Fu%3I%8qsa+)Luh-=`+tUdXj&
z9kcD_mA}&#v&rXMH2Ry*Yxo_)oK{?6u-`RjU9h3Q%%p}hacMcWA&t|+WWI==c_w<@
zd3|W|s|_kWvJ(AMt-Dj+XZJ+5%YU2p@c#X0hwdFK;0)Zrar9gA{m!TrDxBs%Z@VY{
zO+L5!uf>i}>_?`)X^*W?;AHeJ)I7#7)AF``wMe$TPnGGim?=C{y$<#N_PY3j<BYN9
z%4DXxpx~@UVRQ9lN_XsetHmAUeL%JO@xn<eYi>k6C~qlw;G+AfOV{Al6^RK_56k~E
zvzA8ed%7ei@WPzr(1Pkc9sL=rHfF51TJ3!;fQdncQ(Ze(U{VXmWWQ~ve(#jAh-}y2
zCh|i_m*Gb78Y#X0j4t2XBD1}+thA;nB<A{czUjE9J*!MAZvBA?JsS5vIBdQoWqt4W
zKMi4Bt}4Zwbqp4f7dh4oJil8P;qSXlXYQ#<tNg_j%wm>j{01e9FI~n9cbsZ_|9#p)
z;TMxz0(Wmn*Y@CGydOB(@A5vkqbtId^_=*Z-)=tSwK|^p^(T%w8u<qnZ1MQg#og@H
zl=I2H{q*bYZd1QrNtqDU`)W_x=U&s-1{$_po`GyHwq$+jGIdn-3|MJp7U~qe(Nvys
zThG}Q!OD6;{8PDh)RgG^obj7-S6wZJeXCc~%_Xf-swcBdy|QvL9z2;Y!gQnVgz51#
z)1!>Kk2Xx3uI$Hp^j5#%-z0<b8n!)56}hQ;S<+SSjx1Z)b~0>2!LGd-7N$F6*Y7a!
zSYeaCc~Ri%1(#Pm_{bIcF~j>>FlSfb@^=?<_D)hMeeq3guhjN)r;Z$Xqp~9O(#k{r
z`d3z+i*H+)nse6u%OsVB<&z}encZvuWX1mN`SnF}Q*~S%+uyq1mTA-Acv-?99sAIe
zgVFU?|G$%Ie?G2iys%1j&n_czcCM`3ws*W6`$2B0Wa*n0al!s*Pj{7j^3iEb7Uv45
zbsg7!@Qp*_t5C@;<EwfmzG_(;cUhSvH>xaj&eptB5?Swa#_!O)$EFq8Uj^r^$+4<V
zkGL;k^XK(K*@|c1Sjw%;)@N8{pL+W3(aZkt4>JmDXRn`}E7fYWO+I&X+wqf3EA1<V
zK2+`6``4q}{9)ryXMw~kkKUFZ-|+9b(f&9`uDmrjxs;;$ryYJQDltW_wJ~$z^F4d-
zzI60m%x%@nCHe6mx2^fw<Ed;46T*{TZdttI8vD$LY^HjzWO=6_?=IhG-PCl-jibcB
zDY>{RAoP7pl&Yel*Zb;w*TfeE9RGHB{#^mqi;p;^PoI8JIA>n=YU^A5M>3e@q6|a|
z1=(u8Jmy?;Cr)Lx>(UDcQnWi{G*%qF_t-SRQ%LNumb7#A>FdH%7<%Mo`k&{^_CCpA
zz9ZMTmR(yx;o&RJmmOS_^*fC%tvO$ECTgtPro4T_Tjg!vimF*<^z^S}ac&f>s*IV$
zGDpfRV7rFW)fKZIg_b@NNXnL5f8d()Q-%iZ<4X_be0qQ8>WW!hiJeZ8xB2Viwu+fK
zFVTM}<a8h|_Mvvc>sQ~DudO*eUo1u0@K(opGtq>b&zSu5g%?@$NVvqvHD2Fm*JA(w
zdcl%oQXj9sc7KrKs_YkL=A`Q>F+;4g!$3DndQQPER+a|S-Q5M5WlUA-Ee~hj??2YY
zyfkCOu8CK*nHIAhVPvXE_Pxh?{^_HSTu;QVCOTxP<juP%|2ODN2iN7qqtlo~!fq9O
zNYPc}^*nMnobTAFx9W@x!R^ZxHc#K_Jz00b%Pk)}Z+e32u>ZS%Caw9uQ$)11tVPm9
zVuo1j#J@=&{%rbtV`B8xhsUq2Xs8sfR(=|?Fwd(;P)pQ6!IY_fjx|Rdqm1UN<ELa>
z>x5N>O4YZ?=N3yWPRv`w;1cW`og65rQn>5+dhOf&ua|vsjf$~g;5_`xExAD2wy*lr
z>W@E<G2M)uD^fEfhjr#BD|WfM&+2ES=QqAo4xS*E?^NX^!EoT=r-WEPO}o2O`n9|-
zN9u^pmIl=fcS<7Fj`8;$zvFGhU?O`|PB-(w?fXw3K7YJ*)8e4@+gC0ut=>~t`y_6C
zgMjZ=nYHb_VL6taj4LOCJX-nKIHA1q!`E$26|D!NSN9)S5t>{QCL<PSD8Nv#=SWk!
z-Q9lsGv}I?hnBvanUvw5GfyBxd@*b-K-fl8E1QZ}i*0|Lol-Z$N{5qM?dvzuD^+`$
ztc$c$jUBp!&p*sOF1Rdi^|2O5PLE#WlU*gshf5^vH5eHLq}Lq=b=NB`T3Ix^-?sn%
zc5H*hkr1zd`MY|z?%_F9U8Thx7};bl{=ea(^6$r8()Cv}-?p<j6tCJ5ugW-6^WWuk
zhK9>;8{HN+%?`f6V(Qsp+`r}f%ggLPfBw8H(YOEc@qT4x<-_lDChzRNt|=0jFv0Jy
zu;{YZn@d{nzI099d-%I^{_AgSbGbS%x~)**ocfh7B4?fPwa6J?vMgfnne{L0u@c?G
zwD08Kl=I4rA17AL_#!ps`mMy$Ie7{y3~7_uK2Bu25`A~Yn(fXV%Oq#rm3#O-CcW$7
zo@C|)f!-cnhKE)JFTVH8Ep@HzJhOY7H`}^Lum72I{2J4X!gSHS1-B)ZsJHz5YUSeU
zx^UgPzure<G`7j-CjTz1s{Zw{_k_(JuB`mv_c5Noj^42U;8kI2l_AS3vH7j3#9C8^
zhGgcn1Exh%J!;O&x5x|q$-WYm{JSu!e7n5(s?@5Z^VTY;`uz>Q{J_cg@Xp;ISZAf>
z=T)+lndwUJyq0s$SbifX<CN=G3_s5ED>HyRu-)v$w%fNeO3sTNt~}nhY~hs2qSuV?
zEwerU@cWJ?*KZ;*RY|`SH(XWR`9i%SL`r0NFXNWBWfeXf1++wGg-^K_t)<wxOk4Bl
z?!*n(96#++WaL<_ee7SCTZL(Q{rOwB>%JUuS+zWAlk44gljP^OpA751b;5*WE8B0q
zS^UfI{m)TXT6E6n$8&$d*jgDOmPgt}8_R!`7Q8&1VC;4}PdsgHQ;F7RFU?!5CtrX0
z8e`sebpCGbt`)pC(i3;h-MLUEt6$jA^teFuOz!h5m3@>JtrJRH+vHWT;8T@AaIMJS
zzIDw{$_|N%Y0th9@_vKE(=x?nO5$$WTlFt~T4AE$FT=DjNuIS-X0mQjj|z*5;)BG;
zt}d}_w9GC~5Ak$TczZ-_iOBo5@SuYWCx2fvd(Bl3y>pFE3V%*od#c58!>mQApNj;y
zici*k73LPb_RX%d5~Xd?LV~69_N+Ob!0G)>)qB#1qyr15cC54G+il3^bhX58k^9od
zlTn>NJ~an)UjCZkx^nT2)vnKb@5{VOTf5q^a*Bsb?D?hq$M-$_T<~$*e~0HeIkQx*
zzCEy@_Vfhn3_h-3J??ugS><}=B#)arU0oEuTG57aYv9X$Ej=q1-`MPW_f*2_iLu+a
zYx$`vz0&G^=xJf`B&)*2ck>nRj8#v)?6+}#72Ny4WX8j(As#w+xu;%#yF0${lt;x?
ztJX!!0uH2fi#!e7Ts*a7SEtHCr9uNPBfZw}+Nz%mXWXj!V*ATBBu_nQRsX?^)e}XJ
zO<%^-K0Q}7mZ7eCMYO3u-;Fh;iCThz;X+!XeQAEKF13P5t3N4J+D>Q@U#Y(BfRI@K
zjaAB<4*i%Er~KejyQY*etNpi}iHr6~z1^Ab;&P?4#jAII`#I-k&1>NX>xJS{WdDhA
zrn0BBepK}oKd8MitXq!<6wYhUyOnH8@9q$JU^Ju9;CFaIrtiMXWhQynDi6PY&AK{s
za$=`f?ySUlFPJ_^yWI7uGh5`H9HPOe^y+2SV&e(c3ES5Hh;91w=f$Egh95Q<%(G$y
z8QK<R8=a>+Syw5jLuKKT>l`9!J)dXC++4}+oO&q1@4Lg?rjuf&+ABlPi-FWk3RqdV
z<bKE%xAYT2t3S0k7QFP~a&ueQ0#ef)dT;a7N4q*)mKgM3YxwKDzVWQYTWc8|ukY{Q
zDp|$*Y+Dh%_1(=!SNL5-INlu7kdZJF*Nc@{mHcagp$^{ztBxz4Gqwe9&$4aa6HxrB
z{r~xUwe814@4jTNKfgElO7;48dy_Y8>@_so+aly7#-Z9WK~-SVgb56uWt_8_c1xFW
zdfrfF{B&B4F_~wfFo)SOiGri9d7DyCPP^J2>UJq3?Vas@`!thlD<U_U7C(>MJOBAZ
z#=DvEhO>(ATRy*2+;Pb3+g+t@w##$O7*mDA554yI@I6cN=l?#(^Fb2ZG#1%ezTeHD
zlC(SOLCN+F>D?MKRjn+R2R8nzo)Xl5YSCs!&i}un_g=frwLk8m7e~ju@7)Ve3xV{R
z%>Hkb749S!^KmA__4SHUu|dBUPni;7Y0j?w{AuE~A0~M}^Mq7I&;IyRARKqIM8ryB
z*P5op?jA)JY5qkQ#W<pZu5ZYS(|fnOOw4)O$um;Z+ae!ddayw|V(&tkS$rJZrY<|4
z$Eu{H{X%rhl64PP9d&gJcS(P6%GI^uUGtQx4a+B;=}zqKIH9$K&qH?Cv%@WSQod!)
zjHv06-Sw>b%2tl^vWp86ZYU{j;?PuGvd;PX9=GXEiyf{r*+##)YGm7{tE9B~^-K|d
zhwG*uXVWt*O{_}Ja<6=?C~iB!varcUaH6OOr-y9Ns|#Nb9=_I=y<gzqq6~|3)tR~?
z)&EV|m#%Zvvig%9=n)r^lJw>#$d;SJJ4()d+{h$3qxpEE%jaZ})hz!xZ_4keDB8xN
zS<R}uZ+Y6W4X!RJqK(3vpLE_7YI?7Hc=OA`bJJ#iU`~&llkGV1&^+DO6CPA&3i3o>
z?5mzLQ{=m)vXYX0+uDp{w&#5Mf6oyV6g(WZ<&j+av;(#0IyyRppDY&qZn0VBU9p>s
zNtt1etM<FXG|fBDdpa`SB;Du=y7Tx<)sFL$f){Tb*&v#`<M_<f!uiHZi#B#bG#Z<N
zG`j3H%yHFxSD0qI_q%2C871$)P!+#<OjlpNDc`zw{c7R2OP4--c``KDW1gij=i_6H
zLK*fUUE7-3&jj1Ms<y3Nam4nV&dU3C={+$iyqVnR4xN#=;aI5gw<@PrPkh_Ga{WEJ
z>TchbI4KmK3aOYi>%!d|23=SA^iuED`0V~}cOy7h!6ji@?-YxT>E_@5zOrAqb-U{l
zzD;s%Ycr18p3`anJ!fJlXJ~7H$d$G6?X$k$cYZ%t*QDHh&stsOx^pw;$egKtvOMF*
zmtdKiS0_7a@;05f=6~DHzxdPF@P}445*sUj&Zv67eS%Rn-zU9&EK{?ux9nxxqy`Gn
zdAivT?b1^MZJpci_VQ+E+gfPVKX>BbSomXpbVo-`nb-WfTlIlK54KuqoeKQ;DBkdM
zJHK+~sSu9YyqAu5Ps?~Bv8|&+Lur#<MCY2Prwd=aysub%v*<}|k>;Du&WyYJ`BTr^
zx37CVm7(F$>^!$)i;gzj?fc@|y>Y<;hF#aY51+T?zW&hpL{uT;rgQf4spsvw7rkER
zd~B!pg<a+PR;yP{Fep^=s{bu=$JA7DeQeF+vmUdISlR3Ts_app#lFV>*Dw98%BKHq
zyzgE<n;QLMi(!tSV4%y9XHS$;pXHpX`k~%&@|4r%X=gX6t1Fk@t2tBkBC+P*h2{@i
zw;sCwu4(&L(M1acE<J8szLa&>b?%p6+ZW!rW3$9(ey8O9YKD!Kl?78}+cw;MV0*FW
zNoKfG@yVc&b+wj1c5Ry?@+780(WbZe!kyT|>%uK$PV9aX#G!cM$4hmG7X65-=bh_&
zUVWZ=eb<Jc3Cv;n8qZm#a)7eJqQHqeYgiw39cOKSSh8MRRDT~sxvy!%feQ;(Ic>bX
z@p0qti=m;c8eGfjKF6i3-NE2_dD)`M(_$feKT6Hoo`3X^`aGA<&#em{tW<Yy>Jwl(
zl-6u)D{Ec<#~`MipOImXq@>24XI3eCkzK2{-*3A2ls`<<IQ`(n87-@>|6{xRR_;@|
z$4qm1kl3^d4O@18PVo13J<470`gq#eW%Jn#?9>?_7Ykju^zh*B+pBu?(tRE-TIS+n
zqV>kpv*Yw>_nZgwcl@bYvC&ZRyC4JK|A&(G7nm4g-7kO36<|mz{?zt2%86sj|DXQ<
z7KqNcf9vjz4q?@5f$)Hi9fuapvsTJJY4pNQe%7{p`_u%l+4k~3!(%${bnChKl$o_G
zJ3MnDpQ&CR%YXGnw=IK>Ds)R)Hl}xXbhx>GoxOhXqor3DHZJqu@$r29rxuyZyLKro
zZFy9{^Ly)(b&EIe+I2tsYHmb-k8AhDttpx@?Ouug-p-eLUS{0h&;PFNSFqjtiO=UB
zo@j5!f1uv=$q(s#w|7UUEA7jW@v8f$v1Q#uerGrB_TIlb6Oa9W?BZflRkd!B+`+3?
zY=zJN4L6+^Ip6#CzrQc?G8}$cb}vv<Q7FBZbK|ja!1j-eAIw>wD8k~wS?<g0HUFQk
zRe!ir;j0i8pIIetTQA-?I!{+gX%o-<)2+wO&R2Zjr9IK6RLW@jT=w{M_Neb~?ABU_
z&$`W9?#%p%iz~6av-gIP2t&cmzx8Z68#h=cExhsOUu&5Aj<eU#JQDfyW*e)FnTbR-
zD5t%8VaFTfwc_JPWj=|ov+dd@2(gC8H$RayE=;<vR}mH6UN=FYU`hHH>l|-Cw-`so
zCFk4U9do<vKS@1#LwfhG&6n)b84o>lcy*`pgNga!(6SpZiaK;OE5FHzcuQWg$(Sp<
zqVm7(i@SG~tMt}xX1+H~Y{{8fy?40v+pd^wnewJ__qJzK`rlfViLConq;h@+r$^_n
zezQ46hC$ImLeK2~y)U?aWx>PC{twozZ&$XJ{W(3hZ^jy(D{Fr<$TpT9=y2;w?Eba!
zlwG>*r1bO0rtJPFX;}F)<6jN?H`{OA>zI5^y7s)yov^EIN#^B=Hnnaia--7KrMBm}
zme<NIS@!cg$JMP9etVq#zxn?T`;|Xq^g`A|_MW`ILwfSNUu+9r-}w7Nx#0R$zF#&6
zpMS0h*j*>9=0B_D-7&W<vRbxJ-#^ICKmKw5-mXKh_jPo}|E~Jbz3f@p;-a@wGS#VX
zKRmAy{CaSM>)(jf`NpbdV#4|RnJu-$7wz82$z&Vdz@hiT-J~nZ+iSzew%6?YogaLz
zEBVU3qUP<@y6o7k)7~6h7M=I%`tQ)~@0hRT|B^72l>D%5+o9)0ygzOB?tJ}Pp;Wdv
z+KgS^TqV~1>g@aluhyC;`unxnYI5${E&c9TTZev{*R{hC+c!VSygbn=UC*ojxAcy_
zDT)6c|CjuBT}5hh+s~PDItsjHF=gfRV<u-yd}n9iXq*!&&J?uh;pBdIv1v<Mwl8J9
zH*I45N);)d!(wx{W!!)M=E%CaH>&R2PKeV_`rNiZLP>DuY-4TdmBr5%ZGL58)hBDb
zOGYWK*JJtm?{?`&uh(<t{{Fu3?SsY#cIn%eq%c_QJTED5=lPk-my90RrO)&}@9bV#
zxxV(?GUeivmnK|)d-M4jF>&)RcIms$S&F$NPf#`$eVf`|_~vT3&PEQ+nex@!G6KSG
zJn!i^Ht!qr?~Ttdy8D!0HHj2Qh-+-)6>+_>*|mAoA-i-J7Z<nW^J2VbxxjV2WJhB6
zqNwwB>F0WS0&hO=>FCh7B(Y6HNon7CNkPHDDG%o8N==#h-IAF>RZlMR^fbppi-#Vb
zj3J^MZ{9qy`;nH%d~x5~+rLKd@9yZx*kYIyXdiatIS<1lu1|(9`>Yk;e0#9!2dHK&
zc%93@5PLb`@CH{Gm&9YBcu1OW%&_iKP)*Ha-sOL6J32ZJbtZPRiRJ#Dvo@ym*6%rj
z7d=nM*Ij)fv_il2^76HPiQS9lfy4EA;e6vofeIm4UkG&^lWEiKs<Qn(=jyuO4Im#)
zd})vqc;&HOx{I<3OV;dL6X(vWXgkd{Ind@_aD1WfvxALEM(k|5i-Luj1elnZr0w;M
zcS%_>&n^r7vHq#t!(A;Rb3wJO&cXU1vBm>me_!ABXm0=arug79>7VCu{rTQ4z3^pY
zd4J>SFBUx>E-8Zl7A$qp(Ap!{dHmlG{y&et=R19_R4Bc>e_pKrpQQZ4FC1UoxI$YO
z-CB5SZou4+8;)BjPMOCoC9&g752#7W#U#C-d!a*MZa^-dM{M)D*8&0!>*n%A@I+m7
z<=|j&3RDcSZaK^8TIvv(BjD61Ak$)G4Q@~hACh0t(y(a7gjKSuY}E=TbH#pk@{$cY
z73bL9s9n`@pnADO;M;&4z7=KaBC}<?7O_2lRA_N=57=uC3=IJcuB}O%nI|;H>9LpG
zeJ<~I<m3ib$!&|;I9hZCC78l;%IaSPz5RDjZ()JJMR4<DjS~llYa^3%i?4%*nZ_<Q
z&C&(S)43lQByADgtDhIJKtrn~>odQy7FYEaorc8IM|Qk*oAT(IbP9{2!jcvdu9ipd
zH3LOW1-38=KbG9IDBAyh*!fmI+y8ub+@2lXkeYO-thvL9g=u<yUH|@Cfgq*{>eX8{
zR&^d|<+GjqjG3KxO@|xvVKKppQ@`+dp1hZB!nsZ+L5U~w+TjhNZ+E<HQ!RMS+qJ_^
zJ&UnG!tj=1Or+T1ur04PzdiO<{G9PFB`apz=zI>dWhpBE{zm%Ex!hL2yVUO3bCm^4
z7P0#8*(9zjJ5SL5{3XfAAIF{sKir`G<8gKS$9LaW8H8Au6{_WjJlZB5wyDyeb>5R}
z(k>!w<uNv#!bL&~EeGCwTv_p_Z*xMpds$Yzl`{ADcyr;-!ZM4uTKlR#s`%)7a0MSt
z7Ovj5DCB;wdEL)HzkmER&YyFqjQK&8WuVrMG{1yKr`gJ4tBm`i^93%hm~E?PnqpKN
zmZh^UDyAdcOjh>V<J?tE)_U`JmR{dt*B*QHPv=XEiaokIrv0uw(HAo&<eD#;641gV
zd85pksbPvuuKVn`=zNV;vWK2M06A6cX{lby(qnA(VhsEC)W}?WyGHU_!6V+&#}#!i
z3SN4w$MDAXmQY*PalN*+8HaPtbsD1c1p-sn{97Tzt+w=VUa(WuvUfXDjOJCOzMs&4
z)~D~FxR_|0o-t#>=SH?EA#*sQ&n62V4ikB_P5RlfwdNffL8r1~fBgQY6|-}NL4^;4
zMShyty*n|MPm=dnT~x7nyU_Nn-26WK_4bE0pVCOa(G_;5?C_o)U)cm*FLX<v+L)7O
z79=EdP`}8Dqvr9al@;&yIy2j)-8*8UGjHC__2IAI-(Fp?XQA>N(|%K)=!+e<^CFnH
z-&0t`@uJ}Ohf~WI?|3}vq~dY)Cu)x-ZT|H8?)|*r4^yWK3r4&%d(m>b*?xWU`Y;QF
z99QkU-HDucs+v2L9-cirbw@%T-?8U&Vi<O(TWnmf$$FC6?s)vQsS9tfZe4%EuqRP_
zR^e@4?}QUdiwY()%&UHH@bB%lpNhxXqdY1XOk1(%S}T9q)wbmpNjHpG^L8it@r1jG
zII4=OZ}{oJEarP!=41J%`+GLdU#ymRWJ7A0%|v0rK>7c_za6aecARr+SFEW;&}F%6
zyN+3{Tj$~8k|L-cGcR$y9RCmX>%~DeKR_*Q!N?QZv-=hueJUB&Q1x;#m&x|>_PxtC
z_9b?AbewRqv6KD(`P;$Zd+YaHYc1a%?z%uJ>4uV$(xw^nbj#ab-Tn2sO7E+HCQr1B
zi;I}ajaMHV?0eo?ToE~#b<8ZT*Tco-*@2~;ZcFwolg+OS>(mw(Z;P4v;^RwD$WM%Z
z)fj%>7}VGoc`eHEgyHys*Du<(e0!`MVP?#&$$2i}S>@x+$t$cc3LblNOFQQ4n>L{z
z?>BaV9JXlklz$qks$u8O9z0c9Im6VhcXq~{h5CBZ?fQDs;@_@ouFN?0ynQw((k>Wo
za~3}=CMf7S-{HcfU2UPCiwf^=-7K-mC+*q}lQUA&+1g_dzT$m);Y;IoekpDX$9Wwc
zi@et_P%Y&R*VQuu<?V1iEv6FrC0CklrzZ1)jgnu<9Mrz<r-7pR%)L=+V)DuD>wYSf
zp8dbC&k+<9BBe{FOxVR2`&lZMtCuO3`%6ym!8qLpu**HqFR5VIwazii&iVAhiwm>k
zJYxBGzDU%0$Wp1K)TI~16x2S&s-*VAhOG~8>AP&ukm~y!7sY)v?|pg9E2$-mm?!-E
zUf$z7CH*|eOR_hGcYN7sdHi@*N&=r;yI^NW$D*eHEpPZ^l0QGmu?+gg6_xznHuZ**
z(xMl_7KWz{E0VS?dhpxA?XWS}AL`$7BHNG5sMD7OpI3XR1LVXGjUG@j-qArMcZZ;<
zpkQGBs;(m^gBMuM6{t1y`BqxGXz!LQQ@BfR1qV;GsN~vm&Tq@R`|KIBE~@rQf`Z6p
z?-E@LZsYn73N4EmY7b94-MaSsUGDtTofB<W3V6&h5}mh9t;F1{Cu!^9#Yc`MUF)xF
zYWXOvU@KSi?*jjYz(B!|R>!nJHPxcHmQ_v~T(7RJcRu_3{lf3ZPR`mbeec>dLHl$c
zKfY&npMp(lerfXAeN8!1eXK}-m&8Zb)(=~^I`wwGy`Jp;@aTrrG_^O!mNA%>xCE|N
z?<g@hTd?-agB4r0I>GwS+wPxxlOqySt1D$*&vrD={nnnJg4Ma7l5ZHzj*}0tJh1WJ
z{R0}azHo&*IegiZ&J*jhY-;I2uN2+*K4<^`d^1l^Q+_|mJJH|A<@LW>jp~1vC9>;T
z7)0)u7#oS{vb`x=q94`6%F23SZ=6isyT~1U@=n*fxF?kU`>9d=Em9=5T-NAZY}2*9
z)fXc}TU$DX1ApCK{$Slo&dRrsr1RY_P0_UY@LK($?M0i4iB1W3c;nj^X<2N0rYchZ
zvaR5s{z6BCoSB_ynT6LTcDB2xtFfK^otAJj*;c+bJtgDrvnO3oow+&V>j!^<$x~aG
z>CR5{_j7x-=jV*C7Y_gUvylB^c6RIfyR7-y+AfZYOO7-9dvlkp7r*rStG$1oT+p)f
zM|$4dHr&`_v*Q$>^NpMj^D^8%ZPA{%GeuMD`aYSO*k~`VBE3BV^NzV?yj!Q3?K97k
z8`Ks(`bzvlXteQ@TFn}XZD*7Owk%nfcy&+Ao$|LjZ92lUO!as-A6t4bF?>Unv!#jb
z9BW6BrAE`&JH&k4@!&<{yRVBL9Tk7DZY7(5gj7hVMwxY)O@aNcRjU|W4_?W?*S$tm
zTp{yTh)Mp<rd8%~&Y!=njreh7GN`Y@XY*BM!Rv$91)Usj<P<Dhp8ULDzU}n~MTQ1r
zW#-oFG3{qmy#v2~i@vb?&q1x!XF3)_lLNlqy1!ue-R5ihbNqaEJPj)e4PX3D{(bu%
zHCM6gH;tO(9KByjt&56DDRC`nTNe|;^1{wzC404Yr^c=ulP3vGpWc7tfPLZ5p8?6q
zPVbZ%Wd0pC{<naYVOQU>x3?7-jy!w9`+IAPfX4sN^Zz({dpUTOn43LvIVpEUR77dr
zh855IPDE|u*>%2s+1uOgIo3sb5v@NS6>9uH{r}+WBF9a04SA}!opE~AaAje(ozDqh
zvt3eF&L0iSUd-Yb%1St-v;Vt*>+DzN@$N^xS35KN&Oe~EwB_ALk~`v#^UqJ5*!bx6
z{+4IC(S=Fh_5Od}B!1U`Ct6K$Y0H(;7qhOv2+El9Vitdp;Dn$}yeeH`jd9B++8(K|
z|1ZMWXuPvvW$ypF5_1!UzjItIc9ro4rJrrHwPP%mw&yzcQ_AC8*VGNmmpCv<e19ta
zmz`C>zEG&;aN{2Bbxo_^7_7Qq&;Q}4-)=i8(16-?V@<h+b=ec7>_x&rh3JZgNA>-z
z`zwV4<?W_(_s+I=z9$;4RQbvzMbDal-#NZ5?{3<raEPp`pV@gv)th~fZTeHK65siK
zzxvG&UB4%{?vrLi;%S~GEKB$_OJDqYkeGdVYkWsSph?X0y<5b(?%sR9<BF+=E4#wY
zqy8y{yZoD{2xZm$>9BwOb+(<`zo+2~9=yt)V34RZYkO|%@~x#Oj>|;<RqETj#p=rf
zff@hazE}GDrg+2W<NOCh<IeqDBzR~;s?a9&f{$53rzbR4Rs?y)MS6*}PD(%TxN(YN
zrOWF#4rhPAcYOa&?qYG~T-guXwkV`t%Xt!4VYp=3!lfzvcMeDNEqr_<aL1|B6K#^!
z6jWc?-(s+wvvB{yrYo5|{g+-Q-!NkR&+hc;aH4L|w_R2qOg%9!fd_BjV_TW+G0RN$
z<mL31JIhMT78Sk@E4hB%F>BWU;x+AgFLaotZGQLvwts9lom(_JEcui9yJJgs?_+#n
zRc8N-<4)<;W;_26KW*f$tc!0yIazJt?u~-E?Oy)B%O}s;-|n0B=aHNzPjs4~g{Jp9
zfqcn>-zPE7(pa@++LVOHyw~~b+7G0Ed+|y<;ODK?f3NMz(!JU2yZz3U_1{<L-DO{K
z|BGRgk<o+P+}86?r9M?w6<@#Z_{vIZdk&vn-jO9o8kf&&`7!^#<F}nnlMZz!p7y!1
zIaODv#=djWRRjCk&8$lf_MLwBZgO@J@8f?A42lyr7l|sUO4<GVaYjsi>Lkb03^8}w
zJ32JFEH`hOXjLv}wYqQd;~R#HPcOWD05rz4NaLA@uWR+q#4GE5Gelj#P^}nL0&eGY
zCB0?;mVAD3f5ENB&O(Wa9UU6C3^Qg*foe~|KnZXIO0ZQBJGby9yOn9E>!T-{0dxI2
z>~>%Mz02xiTvXOP?bH^BOFfbu`f}_GH8S*dU8`R@E?%vqq{N+kV^OeIbb(mfzXy&S
zu8hChbf<Gizuzr>Z<?@jb&%o&i&QNeU*8vbITA;+*rywn%PqTCtS^)K^51<{h9xea
z*Ui20KYoAHwR>_CtvWJFbn1VGF7{rqPlRs<Z%bmgpXUm#mPHHl{#sqx^Iz^lwsFqc
zyS(|?r#t2wtEsaW%m37rvimE-KEKLH$u{|>ww^<IvGJ*S^?d6-DR*e=9C>2Bzwye>
z&jAHj#S6Y16+f4A-cYGaW8o^d=?*43JkcdyNW;$uJvbN@MgA9a3r^fn`h$Oe`@45d
zS4<chc5f4NpJNEl5vAW`LiTMcdvP|Qv!lb0`LI~;tTo(WO4&b)WU79ZpNQEeQ#n0`
zt2#+3>ic`=o1f1wd|jc+u;9nC*%LQr7$$62uDzI~qoL98?(3ru#pe%|{t(y{7Spii
z^Lh81o6j$LvFr7O!goSj-rem!r>WYr4z?Cxm6nRnoQ_NP?O4lweNSYI->)#9w9MyV
zW4t}*`_5;KuP<B0{Ov0>H+8yh!g2LlzMYhyE2Cn-?JIq6zPNl4&hnF6fBuCK&+&ty
zQl=X%cY4gUl-?}&kF#t2f1z97-aFqu$m}uKTz<1$l>}(yr2$f1vM{{-c;NCSCVy}4
zCD&iq&qIt(gDODxO3RkBZ0|eMRQzZ6ol*66j=Mf>Qqvr6{T5w4zFE~Nv$q^eNp;rX
zy7RU40`q!*mq3LJuXPnReEe**cs1wlz4g_iZ%s{~?Yxn}V)k~`2Y)-s!|@q6H@hC5
z1|6i9X1@E{^=P;Lf!JVP1p|{6s{-DXy{ULmR}vb^*wwW1{vPp2Z9RueTUKV=+r%20
zzo+fl+vtrSI@K@!`N=0!@#^G+ok30<9J6`PeJOeK=i}i5SvwYng0z$cA7;Ituroz-
z)xA3Is_FI-OV7+<bx#sn75Dr0i8jVuvy}BwtQ?JPyz*@A;+-cl{!K1AZ_<2!|2EN&
zhGj9^a+ax9Z=ZGQ)Q6k-_07Efe}#n4#WzY`k7-_1JY6F8+KL-{mNWhT`^YV0*I9Xs
zV;K*UZY)aNtgfo4r!Q|Lux-hCZc{V0Cw5E+9@^VH=8s}n@H*qxK3-6Y&GEapA>Ny#
z@ss`klk!`b)?bGVVNa<0X4#>w)3o}Ff&$B?X*$jCJ}=Dt{Y|h|`%K(ECe6!f501Qx
z&A7Ms^rZV5oo7zTZxP{eZN0Ai@$~ci$Is8NWS(`N`R3=RYnJOa?X=(BJ?ndN*J@_1
z24!ixBW=2>KNPYTUQC@U*67f`WRXMQThP$2)#HTzLMM%^4{@L#18+2J2z=oZe}{=d
zPTwn>`Z8l<Cj>baTD1L*3c7wVGWPEKt*^}1xF1_|^hDGqk#){XH!NSOn0c&Z%iH_x
z<<5UM%(qXxl;X4F@9GcRwk~>e^S<-@cXHp7J2lR<Fg)1b;RYSz`Mh1(squ=b1Dn#c
zDa-6iZ=33OS-oEHqROCI##^T)saPud#!De4riOqJa3{WDk<|i?Z3kQflZ(Fz9Tw~D
znWFrT@zqOC;YK!*^bfjQ@Ko1UQ)m3CIaBeVU7)L}cK<K`lF;z^WwtIRr>fTZi7|C8
za#~fk;@gY^zFH+`xiw4ccMIiopSiu+^y864i>3M&yPj=3x<D_N>CGz7!(j{3y*a<+
zXqvHy>=y1i%jX){T>SCatpcUPVl%tWKXrQi?EHlCqf<TRS@F(1eXe=^X6CikW&GMK
zR+~2&{C+t9z`Pk9fB*lJh~j_K?{L+{M2Lx@g-Jt8WVUPr&zB<01+VuVFj%zZh{2;H
zU5f*rp8UD!=}cpVM?neUXDX}s_>|e&8boK`mERR&-LmLczjW*p#xp<jCcS)V_kTiz
zl)U|;d<(2~{MRY{o0l(7zINEYQCXLlz3!`g#=WhRKX2(+6ncJ-{0)U1CZ~;#7fn4@
zGTYilH>|WjyfQb`qhz}SOC7s!VBln9_H8>vR;2Z+Ec$+wmrKO8H6Zt2;t|F&MM-Um
zZ5cP9O@Z9m*KRh>`hH*f;~aIONAewh`EBg$&N_T$_j|{fL`ADpe9D=}d{lgA%k7DL
zCH2ZI$07XcN5Q{xE+TAB4j!DEA{<BW2QSjfQpoVE_n+439M=Ew>+gii{@Y@GS3Z8|
zeX1#|Tk=t$n&75_()IQ1dD7Vu+g?n;HO4=;{w0g%-^t<CFC&8v*5A4B@QcJDeuW$@
z8O@afP6~;aQdE3q-Fa^pTUyE!?Q&5`V8@@&)qlb_{;Y0zaxzX=cysyg33ZP+THbND
z^*?s)R+#%Spv82XBG<Xgygsw|WlT0GJvPX>sJRv1{%|;4PS%LO$j!UGvix`IyR2vK
zXH?%bWuD^7dFRtUJjspmT&%jjO#jWkcMsm*5S-pOZ3}0^s||<Ni<?|?4&!grm715x
zHt`_SrG(?D<=;=5?rbZpXJ`;O5xJ9Vf)MZg8k;|77fUYdIJ5G6XB5M-|2E=s_jz1D
zvmEv){m1m8>#UVyc2E22eG=PFl+1~|=`q)ue{SgUi-m7yTzo1pQP8Kx===)%4vF$?
zgNV#7-mO1BFSsqU?BCvu0-op;tG+8CTc*ppz1_vXptLtf-$hAjaq9IqEf;DIZn!$Z
zR#@)$iS=jHJ}2Bzx}0ghLB3k9_Q;pR94;o`EOtjth^%MuTEBIxR=1dAc>DgtY%|Z_
zh%ujkrr)u<!$;%&k1~zDRa;{^Z)W(PY7MEd+GezGw~LF5;H6nnJ=3;yPH41cTK)N4
zlgZ1hk0v!W?VTMRN=q!0g=QJ6DX!ZrSUL4}VCW8kSy|@0bhwPc{dbPnJ*N*mTsd7L
zmd%v|JcNNc@KC%>C*|kq^-{4+ye-p9gavyud7{OXLbBh8_`A5IsQx+S>*C@f;>Hu5
zrVJXBKlt_X*|U$oO2#q?3c7L}o)*c$$ic|i*gJo^WGwI8g}%GB{xr^%J})E~DR+39
z<`4f9N&-9T{@)7Q^Z8@kx4fBGp4p04d^*~D;mZN*69-&VJSD%fPYm5EeBs7q+iQhQ
zdpv(MPh(oR;zN~+-0#QsAG+`F=REto@k*(K*NJ&Qj{448?7hG}XoZ%@Rlck5T3+?E
z+aBXw_$B7bfdj57ro!I$or9`*ZP@QQ<-UuV;%~t}Z$`@E(@M++IWrpt7+6{Y7OXH^
zVaC2>o#XXV4i1Ower!5yYhNg{urMrKApjb8Z2=Y8W*iG0ILZu!BYoZeIvy!EV+v|t
zyjzy_xZUB4i;Dl|npAH-F4ML)L*3=W;guR%OS0Ot`Z@0`ak{=|LQwmZP2m@k9(3s`
zefXyt5MnJdn|ak;&ZBAVi&h-`S&`Gwxkh<+ntIDK?r)LTpPg+qSDQHhvtd`_X%-d+
z4%UDW4Kr&7$rn$H9In^?OLUpT6Md;EQTy86zI8KP7N54zRT9|dk{}VW@#f!!-dlfH
z?`}Ed=%U13ShiJR^FIcWm8|`t&-Gi@eVAe$_HnK`x1xdwD_4$y8RNnm3tmVqxzadq
zp6-E3hdT=A`bLy}Fs(8B+@0Zl!f4l=iNbsJ3y>xO_P-R0^m({ZH^3zSgLg=Fkln4x
zpA>e^J~HFzhEznU<_#{@Sk;b28>D<ak)hRk`SGDkd$Tu`zU$5K)HB$%<nraqyRQ~+
zbUweIdAs1mpPXmg=gf)?_&PaUK~CR_eO8wF1}!70!_y)`69;+y|GCT*RT(Nbg`Zwz
z6s5(;al<AyV#{OyA2s)UGtSIODv4a~%A!~HVy20_MMi?Fi^;5_)#V2--j(}v^RbUZ
z^0g9=*4rz4Q+cA(E*Z<HR<A#=qO(8C!Rz(M2kTe9u+zEoQT@%#TH96J=Zto3xqN7X
zYf9|S(Ax`NsH-2l{^VTadAaNi-xQlRUE^29lf)WQ+XX}Y#UEL}@@G4H;N#8exVF2u
zTazD8mkht-VHhJA85NW*Ds+35;u1NVvONWY>c@l+PfLyX;xeynkxj{owbL`%?=@Y%
z-RK;w-&+yu;!-OrbDL-D^&>yp&a5mruHqcErFPlF$4do8u1<>X<E{L?V-vq&@%Ph$
ztJ*p;63oi2FTMWm{L<8LpH)3$iC>SpK~CTlZ@WOrPoFn_JpEwnakg+FVTMnA`G@bk
z{m<_D*=>)Vk`lv-wKsWpUze3hebM3V9{fziuScDMCtBoa%QNSq(-$WsyC2s*dad|f
z%X<F@r&itWW{v*OarLs~N2|_^9N}5~tW#$%e4*Yhu$uc^(~}rou7n$lR!qGSCc7!j
zH#|pcS5ojpuXD%Kz4x`QyD??LfvLA*+BR>uJAJ^_MR4l9khX~OY=ex<E?!g1;su5|
zfeeSmT-QDkc6U}gKHp=$z@D|*cD&JI_us}(wJh*q@W@$vXy^PtY=(2sPSl&;acsr4
zCp95G_WbW|gm^HR?%e#a*K^aGR&SFco@kM+L9<Ug*X4Pi;r)42cy>>2dOffDCABt|
zbvMqX>D>9me(s^tqK*$%!UZXpv~prTGQXMm-QU8h&a!%|1`Eg$Q|!W(zP-Eo>S6J*
z<l~2KUzlRKHU7b=l{aPoDRp)<9C#<kv~_3k#fek63*=p1wbt{BOii-#KX5bqH1~X4
zvA3R;%=f~#TW&~x_;$rPdu^41(j)0@`va5~-Lok1U{0`CcU^jA*`^6UqjWV}o$Vbs
z-pnqx^;^>GUX`pl%Xs+$)2$kBN`(Xk=W-nub6xu6+J&!Mqk`G^{8laJW>{dEq}b|E
zdN6W@rp3*}t}ZSqCT+T1ULW7`D%zWWpS3=<e7o}QJb9zn-xc>R6k$(`YkqvR`;R%-
z!3C}^E`hDZ+cdN)lZBf9-+k-j61{%j+CQt_&e--nG{r=wrQwN7g_2TN)|;D)R+J?C
z5}h!iplo+R%BNKmPOr!=exC5@V0rWBok6otCwwkB^t{7(S%i|(B1MCoz>rTzR2HV(
z>;0#A&@TM@j>nfS%nIswGR=$Q$9kJHYi_sCI@HP*;^pFEV#22!bY)UwX*OHXd|Tru
z&+pu_ov6{-(UEaPV%v!+uQsQ*{F!s>iM*GJ64&xQr{2!k_gqwEOPHfqT%Ysd!-+0N
zOV73FlpIS}TDO>ysbSIY3HJiJcKxYzo9^Z!7FJRsEOa|Nu%JeJ)@AjDC9hO7yic`1
zNLpsX@-1g#=G7<XIR9;Dm=L@F{*I)M6Q3@<=2O_VSa5<>%M_1Hz4mn$6-rBkAKmAe
z8J2rb=F305nUUMYwan+MEi%wtbB8PRGwbcS$IfIH99Q}Ie7X>CV`8_@YGXy|xf@p=
zboCLv+dgHPa@#c*mun*T!@93LGvau0FnQ|H=T70WY+<fx2RFDb3!80i{^LHA1K)Zt
zl|=?8*5BiEwZFOgsn;2|=pwl#hc0W(mHO{>;)>L!<?TGGX~h~7JKScTz1ufu)!cxp
zt-7L*&$l0o)0I+d(>2<9?aHGG3tg_>Zap$B8EomK=-tv~>#cXZn}2*}!?7OE30+wQ
zsVQPS(J586?Ls>bXbSd<E&Lf!kz?HQj`!OldF?o+`L@?C>^c!6vF*ecDPwhzl~>=f
z?zo{K*xU4FnUTfrsHWVWWj6w5+j0jzG@5Es^Cw&Ja<=Duj_t;Rap_7@o0k8+e*e+Z
z8!jeXUHv%?x3ZIJO8+sH9A8?rlU+)%O?Oj^@9BNaXXRe=N9M3}W{4cwepPAZS}CV_
zG4B?t<;#^E+!<wJ#1oyuIm`Io3!#n^NnL$)Os>|J;j0ykwQf!Ryz>rouf+ePj*gCB
z8+P8F7`b1*>m9e;>a%mX=N4~$VPcRYC@A>#V)@SYb31rUQv9D6@s~tNT<q-V_+=5d
zhh?p%>xuPuy7sJ+U7;0mAWqjR_s?lXC8bx+T#ehNIBiiCUyyT2E2Gci#j3k6Hl0`k
zo>XB|X0h3L(k<Lk?YJdq(#$3C2x!FuxbfoR;sWMQn|2|pSM&G%rbU&#daWHD$29yV
zsC#Sa+;3?*wYKB^iuMMV>>|cjpPos@iU|t#I=;E7<lXgtg}YNVZ_5?MB`#%u>lS+}
zDJ?SWO6=BIX;#nJB5=_5tWmai!simHC}BatUSFQ*6i;1E*B3p$tvr9$ys%5zSl->i
zCUE;AgGc2nYoWPnZMvJ(6a!{g7xhhJm=L`A_KvC!4XvAZ-bU>B`8{IWL;JvxeVk_N
zZ@-vyqDf-giA`Bt&)C}q85Op!>~ZdN5m8!RW-c>N??{<h;;TmU!gK2TlOHS!Jifto
z+SQ2@di#Fp@Tm%2Y-oArd~u_$z%Fs7h6zHT2CVj~i%TaSHOQH`H1zrWH+O{?iu&Ih
zY?4vxQmPESEqM8+Opdb6IhGJnohNOVO<ws(Z+kT7&ojs6VUx|p_b%VN%zXO6mwCo(
z=50K*tSk8bNrxPJ4hF8i+{Q(}n-W*+WwX_Mi*U|f^djHh&;3ff?)K^j8$VBBac|L9
zG%h;6bfM`|1C@f*YlRwycP2fS?Pz;8=`B02+Two-kF2B=nASEgyHSvHC+G#&^<QRD
zTeiqA)_iq1EH?IT!|`CDIfCn2&a6^<zh(k|Uf$KR!&#EtlOE*+v@{4TJeyiuYn#%d
zzdrr9W3#5+CdRDwach6Qkt{gA%!zCD+-GN1XWi<*DDpM&^^1#(ndQ!V^>r4gri7JR
z8b1imIe2gFm1)Ty8EcKUsA+q5mM1Lu99mmzTN2x!p_^l$p^({|>XBv3r|AFBR!%?W
zNZeWt0pGXBGrE3l2n`N4e(>?+Pfw7`P6<zLnf8TK@%X1z_U0?3UTdH6X)tm~jtmbM
z|CqlFWRPX(ZKr2hrYU}|(O!&8guX6!Io-YNTe6Ak-}tc1%$E(vpZj}s7pSJBU9IGH
zY8P5v?s#=i+tuXM?qz8Q%p9^KgMyfRFDpfH-{ya%y>PAA&C=fszr4D->Rj}JxV0LB
zP&a)&CY^uaZP|D4EtV@c&X_ViBOo-zjMvim;nw3$OdoD0Uz}hon{Y#_)QojT<Q%5d
zhGRv4e|`P%vqo@j`&;&}p)nr?Ma~NU`SjH5gj@185s!6iQ+H%!+q(r{X<vKnm|M=>
zU0d%Lx(e>7DqP4YI#Dunm29f8{(*fr<BzzD+jRUjUf1}n!+4j@>7B3cIH?@F#XjfG
zuENL1I?Si#*ss{$^35vc+B@!-S64~wm)Uh{b?{=xEnC5HJZ*|l{+^G=8n(~1w&iw>
z{3y7t<IJlYKRyS9ZV<4WJ-OKUkb>s9w$tKbhn9WYKk3C`etVbj@bDwqNxvQUK9#@C
z6Z*OBOV-urXA;(jiF6$MmTWTfQP1Y8udf)}nQ~S&?be^qwwqPlVX=V#6LZ`%r^Sy}
zxwd-rz5l;fgkfIgGsy}YIp$SKza8t!%B?qLl{sJZ|JE1M6VKPXH!4su>URIdq^=F6
ze|{9&{QvWr`JUNQ1<v?LQ^P}|f`R#`(^DT`YGvK9+H3!@PkX=LJ3LJ{nrHT%Q{S2y
z99EUd$Zr>!C-HykinnjBc1c~lQ`aM=*uG<0(Vrh5SFBjkkzm>E?df^&-{0R8=gz(R
z{_KYzC3`+R6x{Rcq+#<aWvSh1Vycg=ub*?NTEu*c;qYeAVS?Az$LD7xpZwO$zz}rk
z*-Mwir_T-?`H{&J&1UTUyKq<4aqZwQIgAe8-rRE4Z#FXK7vB*1bNT1vk7rjeEAnX2
zXqtBZ)Uon)a~r?79B;V$Kl|F6gX!~Y(<+?7CORE>-sArB2=|2<XXA7i&s_Rff_K@=
zn@kMLFL&<$^HhJwyIrr@YLfTZ$*Q_XfB0R_w`kYRJCk2_EQ(y?e6aL%SK-S@R*#O4
z>;12MH{O|ioG+&Mtm%q1YfKg$sk>1p;L2{iO@8^}@;yeOH<%i>Y%$sM`JA=I?>C#-
za|}#l552v(A<<tqtUjdg8sEC5E+$bqTm?4|F~#gMke58^XOZ)&VgBJ$r@TPN-fC!S
zcCOMjyHO_~dHl`W;~q1uau^RB=@kBWkX?SkiWM0L%(*_)d%yjbb)$5N<ZXWQ#|6I9
zeOJp}b_6MX_U_u8nB~YN=Hqqv&c~G=-X(_;!xb<5zpcTrW!tt#ZPIxMc9p(fR1_<-
zP2Oc<^44$3Dn9btS_DAH>i_#ReLv{NgJ!cC3=b}s{4nA4oqmCNe^zO*c$D=n<xste
zn!V>eTQ0A25M)}Vl@Kg)gQ<8H+wU`1uU~&WEjsUDyL_F**6CTB|0;0VuihrFocL=4
zD?`^J1$}*ffBU~C>vlZqQj|Wk?@Ju7x*$V|nd!mWMUt75)udy+t^`b7D1B_-w|95D
zXXo#e{Qd21^L6RFhx2pnI}V*b_4arHuXT>^d^=foKA8@Wz~#;yjX!=={CVMSe`x#u
zzqv<_9O+qcQDxPiH^x)`{f(9Rcl@`9p3b4^|38KQ<DJ`Pntkm-_5I&+t5&V@F+Se(
zmOZe<Ao;hU%;C6SirU)RZ;sC4)Krbp6R-Pqd4AHpJ(U&zem?)bR>;?6#<^u`fBqil
zU;O3$d#BG;7i*UAJe4++h@G~w=GV*RJAORs{<w90E${JudGk<E`Z^JjmS^v$s;sR1
z<hkPEYdZ=bABsG^qHy<J&@}-2zOKy&-3C$dZs+rYFE0Yk=9nzm@ulR6ehkOW*UWLh
zzL)<fFXmdic5TJmt=9|we!UJlc=GtJ($^R6-OIc6KR?HQ&GFFi<KOkYBG>+v@JUNc
zJ8^#7!gq5fPZqwG<TiPV(A>FmZ*0qz_VV&d*nZnE{hUlp;Zf0uO(~p{CQml3{+7ch
z9MI9a{eELtza1CbI%WB~4q?%!9@6#)ADmj`o|>xKCu`jXx{2v-`Te8z|332XxSO}*
zZr<g1-7C#++e_zI6tS%T_c>O>B3<y@zR!M3MEW29PFt|?LLJYN{PWi)6mR?YdjCJ}
z@AvELZ*+5shlVC@zn!@KxB2#v&~;)yfA7YIG}tURzM+tBb+M^jN{V-#R@IALe6iOT
zW=ideTc4`7eje9t{^DI`*22X?LJPFGY<BhW&z}A9WoOuodfuX9snu_fmtK!;-<o}$
ztzK?Z`sy7!EZ(rTPF|LI!Gt$&`|TG&8eMx;Ro~4q;<UYAE3T&c=<4Cr7n?5pVU)7m
zCjV@*v~Y7~Vc`bNf4seOyP9@gE1Q#%*_gI5QL8Jjc6lPNW%}zw-1;s)K0X$&6^-uf
zyB4;ka_>P)W<J-0mNO-nSBMC@&erDUeh}in&Z}<8-PXJ6eg+wVM|5L%nSi1?EGS4w
zZ}*!`8^l~vOx92N;a=+dAzhJ0@7!tA4N6K<D_?qg&X_cXW9#)lYs~w@7tXf5B9d5H
zSvkWv-S5Ok#lvC@F;y>@CTe$RMCIgXwYgt!-Wz?g%=+1qB@!{Bg1pyVD=iDy+V~k0
z^1ZqH%1Rn)qeL=o#jk!TJGG(o>(%gLjfpzz&pto=?AYYVk6HzG7@W5We=O9S`h3aq
z#TIsQUhCu5eqWvaFmb(@WWv=|p&kAG{FY^>HcXv5wRNg?c-vZyMHw4cu2Xyx{h_6W
zMdZjasW5)QxwE+H*H2sQzy6xxx2%bbMn*;(N?ryX`DR%@$0&zW@xzbD{hQ0Xb>3Hm
zi+|g`jjdhi@80M+yIn=jilwG0+<nNwrn`RK<Ex9O&ROl+_T$&}{e4YMO?BD3=NjcO
z9_W!YF1Ve$y>+R<qKr%1%d`EmxF+Q|ubbfH!sZze8Z&J^d-eLbwP$&IGrm;ttm`?p
zXl3y7N2}xiY6Y>)cyGOC!%_{dx)06r8_K(N^2@!sU+uc1c-mpk{K>fmp)Mv9L@jT6
zY`E!Ewe{NdYX?uq=^7n~Ex+4(=gu9*avh1V8%%$=OYW9lk6j!k5x8X{gW1*V?Dcxt
z<qth}pWe~bk>Q|OW_|ALnFimE2Pfako0?|4d1to6NUHms)oUG4Y473TA@Si`Vt>Cz
zSJV9ef1Yb-Y98EG`r2)+!=jAOg|*C==K9rKy3w&q&%8vh!$YKWoz5Ben)PvO&DM)c
zzm|IN`1w>N9esWN{r|qM4-5%0c~RSTcQY#kCnqPUSTLyk^u$=NPa~>w=@ISYT7h?O
zvif?(U33vi6$%k84hm|z{fXf~`_|GI8$KL6CNft@SokC8;JSlNtQ&X@_m{gQax-*w
zb$z(xt*>ZlIn#RO<kZ4r?15j3GNtBO1$157W|k4OXy55xe`%?kt6c@ZZ=U~`XLZ<G
ztEY3y6rY~>Z&ez5TsnVG<L&(YvTOJ1O;uM?>Jo9~(DCthUG9H)-!?P8pTRDFpQzh|
z?<(u*34Xt{Ix3NyVNaa?w*32jxAS)Mw)4p*Jy23w)bUy}{-I=tlB%Jh;QwFi|962T
zU%q^KSn8?u+YPJ?vz9H~v`J|Dog!|t+*?NuxVpHwOq)7=db|3(3a06?Ws;L7O=|nQ
zL-72~SH7X4BI4qYzg~|&9$S9*sAY_ci%W`U`rJ~nYwKdWSFhh!<>JU~ad_U^dog<A
z+w$&q)&HDcpQtY`C@2`|6c;DA@BiQTkK3g49Q^$FLPBLf7WYKmU}BhmzWv*`vOj;{
z*B{rf`^Y_I$`peVK|#TZFH=%d9(=o<fBbIw{oXrwVvZa+GUpq|y%lY1<>dO=-@bi&
zV@IJf=n|1VpU+vZShFVOgVN~$#tb)cM;DjHTFT1I-qUmro|>v%_;TrVC3}1Mj~_p#
z+xTkfB(841{<`({TetFZb3Qqnj<2t;KR(QF-*Wq{TXeK^^}Z8Rrlq7jnDi%Rjcrut
zU0q$b>CP@L%N3QCnT6GS8qTI2ZeryI-GQVNwS}Xzv$McLCjH9ftKkuc#U@S-solpc
zE%#gXR$sW|^%{>8r;hoqj&IU6yY}J|Xr;p3i&r~bl09Rhq+&`-FPQ$Hrm*gp)tl<S
zrp>FBHm&<=UoB!C|3llP|M-ibj&mG`#V#5w6%kE7CccjEW!S$z`t@z=SD!wxs$<Q|
z5BB$tKP-I>o@xz$w@WzGy3FC#9gpraor&EUGg<^@{GS@Vz-sQnWZAD@-`rJ_N{u~x
z_Qt0-@(*6WYI^s1;l~G#Z+={se^|V`SFiWQ7K0qYUWb~nu>JSe=AO4_53k+Z7%CWf
zdYipn|F_4-o5ce(%dExzf4;k6ZqnxXMHxpoxSBX|zyBfis4CayRbJ-7YxaNUg<liu
zZJK4fyYR!??F%aR9!&n6ze{rEV|51&o79PxAN8kav?K)u8N5F>+o@_h-=3drQv7lz
z8?=-@U$&8}`LjCy;O(1|Hq)#UnbP9^tKO*My)QhI_psQ-%o&AmOFiZrss7k}r8KAF
z&-4qHjniLj$^CoSIKwVT%t)~Ar0t98x^)Z;++RIi97FCq#bm8&3>BPf*`~YbazcOa
z(VgG#NE@xWSnz;>Z_lxlpInwNPCK9XruOUA38`|+;_56viRm<0^zMDpv4|67pO(#U
z8K0=q!~%;zug<mS?Ys5XY5AKd$xY{$uKUPc5wq^W#wSfqbE?1FZYaK(u!#X=jVjBz
zzt?I5s$&(e2FCZ#{r_FvZ<@MPqwaZ|=54DUE6$&tdVjC{#>`B%Fjtc*iESO{9Gt?$
z&i(s!-MLM;eBTeIS6*H`Yr0O@^yT~zV834{yf5x>d-1*!=1-P29%6?!xR$h~#s79q
z`7%#ueWt~xcg)}N1m`-17aN=XKY#f{NeN5;Qok7uKeyjIX6t@32xR^QT{E%M`-<&F
zLR*au1)u-_;5g^=*=o1k?G;L^e|_2Rzi{pKM@v^7Zv4FOw=JLiq^CD}^cqfZ6+J(9
z^rwA|z)$Y;Zb@Zk?e-mh3wQ68?ON3Kh2i|}k7`fO&17z!FTY7b(ej$3iB^g4W6!1x
zmXi7WzwcKt&;R>wyT_^XheQ4CT4y`~&3;IMX82rEBw{ZIY%kYO3J#hO6L3Jc^28+2
zn8}HVASb3d&poCc1&x@b=qMhT;Tm@AUzC!P(jo)!Djg**WzbX-gxjTX_VK~v|NpW?
z^@T~qa)D=n!~$Ek$XIuU@2gY)wkEQ9yZjHkT~SdzdYu|;vcA1(TbJoJ-7&?YO?MGT
zhE)m2`kKFfCe!3vu9$2I3w!jQ|F6Klb$W}vmASf`^Y`~|-~T(d=F9y5eE!wDFFqBJ
z>`Ls`V7jE{>-5mFyUE^LGjMOQx?Rm5!xy{q5>j0juTMLlSMzK3@(XXXj{mzJe|$Ip
zKLJ@@UbpG4DH0$H1)LuIVV8Hh_lH%T->dWR`~B^*=k3|o>H36S3<+y1?f;`~HG4J#
zL(t`b-P>8-UcLG!$uU{%uvlP=#iPfC7th!AZTTqNbiBm(@V4jkjy7(;Z?wT^(M6Ef
z^7<bPw^pro?$iJOkAH$;t(8dLQRifl|DQUQH1u?Nr`vtAcw}tc4ASb}|5xbu{i@3c
zPIa8~F~|rFZT)gZZ^z%&Gj?Q&=J2&QUKNz=PVCk=G^x9*;HAENyRDg7h0o_I$sH%Q
z#FUmse1D;wv3eaJXVmAseUjXHdrhC@&&|+Dx}nr%pvbZ*{oE1P{(n7<-9G0-!`sX2
zelSS!%Qn3+RnPwRHU7|{^|i8nJ1Ur0D|hknM7y{NFdg-tZd5RFC2Mn7W~Rr5SzBH?
z>FoMFyWq%C$q3oNF9MUMI|@p=y|U`dyVdgj|I_0izC{&#Z@q2!{@MBmbMpTfw+OI>
zd6;Ziw#jJE|H<+Tmo8FzqIKAFwce4R{I)#lPECzh1zp9z<p@f8Xq;ML8#Dj^{r?Le
zE$-)8)0dH8JNcpil<CG9g1pR!#U>tP<Bl<2w@=E|dzwUqWMF+SJO87z@9$iHzsi|S
zchNz^96{H{c?Z6>F0bp}amGhPH?~Xl{y)Bu-FIJH>Tp`pC*6MKQBp@-cAD?rKSgu?
zUvTD$a%p}rM|V+%lIpGO?1w&HP0I7a3j<4D<>VdPZC}GsTKzrgU9Wl4L)r3A@26&P
zfR;&{B<W6_y5jzJ@yF-m8LNGIE<P1-H3g-0DMRpH@W9Z;-ilpSAf=$OL(WewYS)Y2
zXjsjj)uY$k(ZP0bp01McWgEFYb?<F6R<AoWNB@3DW&BSraYt39E~7U$m5est)!)~!
ztG4>$#Ty-G|Nl0L+x<MxWV*cJE*+zVw%OMnEUvGYu>-Z!J9OG@qg~Xl7QNAk`+4j7
zgR-s6jr|(~L{{*zKl^vNcSiMN-wsbdvmIVtWowUXfBaZ)+qf$C_JVAwus<)3&#1Y0
zG$7Y(vA6Ojo;F>j$&-STu5;HP?fd`TeMfY(b6#++*^%_r<b!LsC;qw`UYs%U*F_t-
zH@|P+-|+UoE&umU;e)+P9&g@M@b>*bc28DTws4OWS)OPYwPn9+3a(yHygd1T@27q{
zu5Sg54FXJEXWO=L3U7Qd|GnGAozJBrG+ie@zP;_?<mK~@bbczzkn=y0d+vx!%$FDY
z7ZzN6G$Hg+=Zi0fIf9W5&ps~rwE6sphxImn=i1sP+-?yFcvB{#7uT~nZ?Ejl&1sS$
zs*-EJR;Zf&fB%2MqsRS!i#Pu=`TsM0ZtK(g^$eb^t}<>aQm#DFE@BI_rS{B~)rj0J
zwma@e_Wp&guAvKW<eZqjpTT(jZ>3}U@p%DDMKVD(?dE5yZz?N!ZRXCMFiWhcIwwl%
z+|OUJGipvQ-EjO^(T$lIQ$SAZdG>kX;(dI(!}oXCW?y4@{^*N97t_(S!(Ht1ho+p?
zd)|5VP?giQd;9<L&iiJTVHdyu_nCi}cxRM9_U$--s_D=@okbfGZYXWiIQ!c5^F*VZ
z`gf5sFOBDGo9XhJua9GPPg>L{8nlB)J>}`SdCjWd@3w!@3{EVz;$1N*;|)lkfu?H7
zdU4;SOK<#JZojDJv73XJ&aY>-5g(>TTQJ^QWYW*RI{z<MRKJ|-eKk8XUEb$)pW}RX
zJYf1iLGeFZ$DzK&?hKs?LQx7OZzF#jo!kAt`pwl%JMQYQJ+^#*rB=n(#GELpwECB9
zXZAdkI-;WLT)>>Us3Y-)l9cz7mS>+Gx88RDvf)*%^~5Q2n_K40F%WfIeD?Ou&a2z&
zSnr)XmvEv;MeU=OGiVB3@S^74qU&=rv}{|>NM1I4`pA2tb-i3r_i@QsvAIrv_tkow
zI^S$-*QnTi!ht8+#bn8{!|fkG$!>T4T=6H|Xq8sWDkVd8am(Uo3iSt>M09MV3neAp
zre}F>tu9-f_T2Bv+uPmT@;^0m&dqpeAK}#yK3hn#FTS)R!-M@^op9BIEVGrbFO<lB
zsJd9Rg=y_^?Z98>ZVPlZO?gzPVe>oZ$+_A6O`FfR>87zPY-p-F6#8~u?22DC>?QO0
zcP(QKT2%GiPh?Il-;{@bS?L#)y13rlR9d7cTlL@eP4(B%klKBV?{_`k%c-a!BI*>X
zAi^4HoTgBIF2-m7D{hZd=lc_mJ~N8gF=^Mm{N62+*W<cD_4NwAcE_ti7hfjaP+Fwu
z>D&D5^TN$5Io-{3ot{oRAFw%FeAn$;Z8dWOL^QgZT)*Gx-WmT-UC)r=|F3X&yITz5
zrKYn^oeJ3d`Lp8T(D;utXYP2pbb4ZcZ*Ra+7ZWMa?nGyyRa~=IDH)oJ8?WChc6t8?
zR*zWs!~bem+}bG|8ohl{)$`|ntM*p4$pnAmcKcFwHZ^rZkW%fXB^UpgE^_+Y$o%7t
zx&J}w8`A^cZ_YjEkQ5X=(L7zR==nM4kDF3u=BXMfw&^NKi7B$QoE5usNwxgmpa1vo
z-F;&s*qSKw-+%eChMKb~x0)_o`yrUEv_jk2BW9&xUddYN?Ny9b{A~FLZyV^{&HUrw
zo8#*xBA}~z?Shb%@51A*GdF56IcIEn@^kI2lr$^L)#~qmf0GePemrM?W%sV<A4{ud
zwNBTMsQB9zWGA1qtWsk#XXw=`tFH}@e(U7)NXzydf9cJW7%9elGO$WUoZ<V8!lc^0
z2W#8?Q*Q~mbnTQWT`yG=_t}PFU;QtSBYj05@BNkC{`FTskGXc_>^CpoW%Gu27N-{m
zzkD|9cfH>QnQ0!!18)dTjNPbo_NLCFz&8;+SDvVx?Bw)Go_lp^eodvZui@;aw+o$Y
zx7*mCk2=eJ=+>t<I;V?^8EWeO=}7$QyJ5C=t4V#vpKp)V7xvAsEcxmsu)r)?itX|L
zpv8iFrW>}&UBA2S>-8*ynZJ@VYEKtDUB9uT#H3YM@TRcfZMNHNd>71Z&YY~6BRpNN
z-RjPcD6NN6Pw$s8Ozz=~nzHuctM9KaeB<4D_Uh`Zx`(fYg-xI46q_F@wtW441*z_b
zOZtsw_&rn!<_cH(J?GH0jyIP3pGt(~E_HfzM&k8XtJd;-=g{7NtjRoaJALvyzCCTV
zE@!M`)85MJ`pvdgSMX;(PoLUOv#$aT$J{Qg3e}pD_K9JQj$V+a2!qDiCm&BueQ@tl
z`<->#A@!G^T3DP6`B0ltW3$4Bx2NaA+g&AJzqePV-B>)yWy$Bv*X*E9pxLE@hK`O7
p4{6Pu&W?_bEfWt-L*`!O|FvPxp0iv^UJMKj44$rjF6*2UngAk+MT`Id

diff --git a/vendor/container-interop/container-interop/docs/images/priority.png b/vendor/container-interop/container-interop/docs/images/priority.png
deleted file mode 100644
index 5760dc71b557fea7ec5bd5699adfd1c228b9cdec..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22949
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%0AKh43SR6PQXP;$T8}?dn$*oVemiBs{lNMae
zxU+WM%$YM^TwdOP{Wljk_r}D-Y~|XTf?H+uKMR^}xS0cL6NiKzeR6WLpo~n-#qSm}
zeBb#Ki`Pa51_m-Tbai$4?VM|)q{PH<=di4W4Bw5nWf>;3(xS^^40r3j-BI)XZutz0
zLM69;x!!*Je-fRYofXgLmK!7-Xz<o!h+*wJnso4d{lDTbudnmJeECu?`2N1yk0+G-
z7pz;yXEvL+`un@q!w(NE@tiCmBy?#}?v0#n-0zB0QdCqtv%WsRGV781Bo$EQyyN3B
z>5Y}2(?AJ}k&%&ukMG!<o116L%zGGQ+UFe_`rUBf$79kL_t*bd>;HI|-~LVE%&8qw
zZAV1{nH5>W*2QqHzS^}h`FPTu9fjh1Yl5SryC+Q&lHg%WNlUBJl@}3d5ma__n56RN
z-rnDnqVuDaY;5kl7V?dVkofiOEw>^|pS(SvYhXZhboZl2kGPN7)chzovFVLol$5ZO
zg0;1@`P~xXYwKdWFI))dkuYSE>RskqIB);nTeqS>t?H<?Vw#$o?{ZB{cg96;%@RG6
zW(?|56+S)|TXMVCet9D^d(~IZT{rCFSAFhY)6v1<GtWk{Yte&??(#?X)&71^V4+tX
zuW~*8oz<~PDzP6Vgaco1n4y%F^7`7^i2Zf8DxQZnrJgpZ{Z-O0UmrQmF#nznsIkw?
z#?x>&?|AzBS~l0f4HX}gR8&+d*5p4t)OzB~8JD;?xo!FP>ms{X1}=7c*r`6R;bKO~
z`REM^j6uP{fe{fM&h30Vqc!aQ|0%YR;RBDuoS$cFdu?;VK_(t4lM}L=4?k>(Tkl>~
zwd?rCjGD~LIcD)2N{{7jU%YRhoYh=DP~8}DEpL1B)m5PZBCPv=p3T3o*qwj<_t#&m
z`k69*e|rmZI>Q6||3CTD&dz!o7;th^&(7lKNw2T1l`u--kl|wwTOY?e`)u3&zwgSy
z?YsZy>%JND$k|Bz{Q2`;?Y@w*-Lh$$C9UT2adL9X{eJZ;-*b}9H~00|lh4huT>I+8
zy<0OtuD_9EcBlBfZQT9fa30;aKm1(g{h022rQ>MQ!TkE)(Q9IM3N^Fw9=f$Pd*bBD
z&Ccz7j*BlQyt%QlqqEa7Gjrwc_h(<P-{05DEuM5^L*k7+mBw~I9xzXtK0W!%i;Fv6
zty;~%@cnN2{Nu63)0+jDw%@O_-n41chP1O%Dr#y;@9yk0kl?BK^>R6=9bJC<uyp>O
zMpkaIgd-h-H+B>%gBq70qn@0YxZ~HW)r<_^@7M3IR{3`1h)d3$9fI!taz|H%t`3Nc
z>szx%=gdrF_M=CS-q@Obot0Z)_uam^*5yfuS~x3Stz2$U@*=>+&FxYA|6k&pHgEp;
zZuk47gH5aw=6N!pF|+dfwc?ePl?GD1pdPD1@iU)0b-&+6>?~TkyCZr}h2f;hlMQoj
z7=Q)~-1}q>E_7~JIBf*V&vLd^3)ZaR30p0?YSkmqsKK9~pAECFXyn}3z$jn)MbOLJ
z+c4<}M@;S4s}oc>`R#rvbai*%zT$MbB7T0wBTi8N@ZrOU6+fR&|M<Ay9@Mn+@b*5u
z|Nr0oJ)cf#Z@8HQ%GHKxXC&6|=D2;CUB0H_=jZ3ikB)Ty_;x!VRL4I&(kW~p)hl6L
zrjvGVPN!?P*u%^I_IoqrO_Z$okI#H`<YaYMPmhSd-OnY}7rd``T-&;J>!YpL<AiH}
zfBPztuWn}-2Wr^JEpA@DN~`SsJ<wpyL(_Gawq#y*DJ|U^u{CSz@fl7H#b=iO`c(yL
zI9Ks};dJ=(_kF#%Shp)^9PwSFZ0uv7+P`0~zq`00_V)TUYec@^DegCr;EDS!Auq3g
zui`Opzu@uEP|@mdZ$3)Qlqs;wfA{nG{O=N5qeDYCCLiYm`S1G-&*0^LqH2>pYySOw
z9;aMz{P^+i{QZB!ZseFPT(xS&%9VnkA&%dBFJ8O|ipA;IU)%{>9l9oBqtlY5ODlT|
zMFa&ELG{OXjt9N=%b%W}-u>_I@9LiCBI4re({!Vs88Yo!wF=ZUekXWJdVT$=DVmEG
zEpl2DxA#`^88rqaWo73nQ>Jw6t^QusqyOyIIZ#(^P1x${cy*r{3MNv$9lgDv5t+W@
zh3C(m6SM#S^Ze0`$;Xepy1M#q^8zM;$?E=Msi~<+XJ?tdD_k~f)^&?@mzVo@zj>3>
ze=s)oc*V&{s_zWXNy$GxZ};0LB_(A?|Me#)C%a~5u8i26*4xq7_wLJnPro@eg+&vC
zf`eV-;^aC`OnyDdr(e!iKvuSQ)+{LzQBlXhDQeMrDxOXr9voF)U$OSOH6J>3h`TJ!
zOsaQ7gihRfm&q!eiHV6TR<8WGOJ~K!3;`*rSNmr3GJsM>zuhm6=xsR%n^?IMwnj~y
zHjOPbwD8f9PHw)~2VIt?rlL`6zcm?pPhx34*buk3N>M|DqqVhFLtFcE)V7^}i`Ie$
zR~|lmsG*_pp^9yRisyybUte5ZEq>_Gp@6`^#-=8w8*jg*MR!Zp`vnFDu2{X=IWTbI
zZvCL()9mc*i^JE)UC07;J)J5mD>u&%&dAVM6P7*sx3G{9lWSmt*=+q?>wE2uJtql>
zincCUqB6&}TCBCTH9&;*;K73%ZoiGYou$>b?a0#WuP4r$)wN-R!5rJ_Z8wu^7Ul{F
zp8M;&d4|%b{O97q>lkG^J6?P$5)FRS02(E|!ltvVV;9H0Ykn?QEGx|AC(Z|rv98<q
zD@#ONy!e2t(jvbDcEO<G)aebi%Q`wbI&Lv`gNJ*~5)47(+F%1f!VTaN>_F)aGe9H6
zS<GT!UAYI6x<G^Iyb(U2q2R6b(43pjenGB{N3tn$bDE-p0)wQaWJh;*vx?_jS+R-t
zZ*0jF7I8gztXCQ|=;s_b<s9G2!v^&NTYbyV$?FAWWvx1K`t<8J7E!sEmUu?&C{P5=
zOkBAVqGrFSEXio*hP=C0HQ#QggT^$ova_wNmy{j<<5*Hz(*Eb-3<0JFd9h&Q^m9jo
z{cT$pI=34!3dN?SpPO^=^LhJz@wf^`v)OAmAI>y>#=ofV^3_l7!GG4xkTOo=nOF5n
zGp6$CRG%gnSsi<O`ThU@zTa5&HOoS#?;PLqt2697torvq@8>QQ4X(S$`1hRk`y;=;
zzBbIfwB#IL>xyVEKfhzk=ht;DpI;|cwRhj<!<nMb_!pgfdj99)r8WCfUoD*;cW9Ao
z_nq{~Hmg-$**I~miQ6j$YH#?c1*f+c2cD64*?0K<CwK23e^TxC#`TM8hb3HF6FEWU
z<s#1y4soh{Pi7Z<^3i>z!*?a}jYZ_8t=9Vlx4KSnY`!A5a6&5Q-^qt2NXWJX)-D!Y
zaXse4dtZ*mzrVjfUbTANp_iAJTN^x@mi$j)*PdNP|1x;z>o1d<A87XdV92#wAFgdb
zzVWYz<SU)n*H$`#>5>!WT6cyoSx{djVN!ItzS;>ifG=45?2Kb-YAU;XMd2BFm${3z
zpY&h*@G|KYC=gET@4u6yw8b){X2U}jyZd!qX6?5)1%*m$l`kzWc)i6$#f9B5@6r1J
zj>go}(;nWde&2dE>un3i>|=i%ul)RDTEAu5d9mQd?)}Hg@7J~;IB-BsIC164rsZ~b
z&Z|`{;uA=@kZ>_n@`RKC_u6B>>qHe<K;4Z!-)?1Zxczpnz(VzB{7Uy9=Kp*g^drY`
zYxVcM?-B;j)ekGTUak0ZH^=OxaOsBK>t1!gJS;TJr$bd$71TICb^5fmqLDu+#E-{+
zI==M7$%TUJ_I|sS2D15(i^mnuX|+?k-#kuVxZ=?3t#Y<i2_GLFHIU$$D{#{ir0Jym
zC->-|A*ZjrySp1y;jVYdC|(iqXTGe4&ieODPIPFTSa2|Sd!Iv)&xUY$j?FiF4mPtt
zzOgZRu88bs_KEtRzy2v)S+g!R>sXJZgjGq#<n?>MzAaR9TI3g&ANt|ct;HK|?zPTk
zXJL7;?RMVlEt|bTUVL`?=VIF*K89Nh9v)Jg{aiac_eWNFpt`H8ORub+L1ML^q)b=3
z(-alX@c3HOEm674j~xBu_~dtuY5f-V`I^g~otb(0$)D8tr=Py1D#?F(Ij!b~===RA
z9h=z}hOdvCYjn!uGyBB)4@du8l&e`ZW0py#(4oVJ_ddHVqqR+5^L0x{#|q1zOG_;x
zgSfx$Ik#kzO5&|8nX+|dC;vD;v9Hms-y%L=W7)Aj+1n|?e;fCB%?lO!xgd6@Xn{##
z`nfABgRN~Ojp_w{ipQUle|uEDYh_PQkJ|J17LVpX_7f;AZTAnYoEypHkdvd6vNQQI
z7sw?am;SjJSEKZ5$BrFp&!>k)T3HAwWp!@SG7h=;Wrm^b-RF%zn@{Zj5%e!Z-!9N+
z>9S>Jmiw=yyu0DhvBLG#>NOck;!2j5I}e}NnQ7ngr(6GN|F=iNf$S_SCYJj*UAuO0
zqClYc%vU+@7+=TCs^0P8>5)H<PwHz_LH>C0^6H&~j~B}`tmXOA$M3qukRhzS>yPnP
zjrHH|tLK=DNv9pSlE|rH5!}7jGBx9o&@O+j3nyQQig$g=;y$%%*Rk|M%{P3aOb+SG
z?Vj~NGpzr?w>QiwYLDQ?hm0F6L!QiAm-f%$`E!taj*3)rUpV>W<qnY;V>M2;xo_m^
z;u%g@2Y08&KY!#fZ)I_F&SK7)wg&kzMyFP-xiLSyQ)=`3|37+t`VYO`{7XsgOv7CF
zQy>2<XHN{SvFQ%pe)!KrYo@P8Vt%h$BbBS2mVf-CbM3wMu}|xZ1JeVo%ssM<#e(fL
zR2-UrKjS}iU`oLXrW<8Dc+|bJ7G6IkaYdWyuTbxg{gpF+++A&*@allKWRzsZo9Txq
zNQpPGPkZlJml-?zTKS6*(IUUl#|4R^YkX~z4or7xc~NkBOG%Hk1b6QnpSI_-mPGnY
ze4p^|gRZbq^@CLtJ1wG<4_})T6ms>Z;fipUwr_n$t|)$7VQl^3+ONk2AC{b1zj4MV
zL!pM*%a<oRcv)y=<y3syTWfJs<K>?H4^@nWdUvFi2)VFt&pthgrP;5|ZPJ3vTlVh0
z`>;vN=FhXZ`TDL-OeP>#3djp~=$DBuTy(2TdfAtEZ#H!7F{uABujx|NpVyyda;#%s
z<sFUNx|X5*%((+Si63W7xXHYFo9Kc?ZMA>?NOo(=U)I)>5N12(#F6lF)nU0#fr4#~
zPej6$mw!l@{GOltlG5Jgf{tvut6sgahzjA|e0Dcyq%xyz^0`}+U~2&uHwT2Jw%%N(
z;Ghoj2v3yc@$T%sdD{F}PIqu}H~78IS=PtN?=bf&qpP6C>P;0YTN0Yt_C9tNlw8z)
zblszjL{Y8RZ{iF+7=#u#2ZZLkm;T*(eRhwor3~BL9^s=~Es7^b-%IXc`_jqZ>Zkp<
z#C31+mb+@->=mszp7P%I=;Cw=@-g7@$_|WpS1CTDq2=yQ(H{?w8-r5QN#{p5BwXz}
ze;)q+$=xqew1{i9&9jwEH;Q(MOm6?;upq8^f`e?grv34xQ^$KwcC`8_D=*(5<$nG*
z^PUM89CY*MU%g%_xhk+drd?}8Qn8)gtr_gqi_@MQtW_%f|Hr3h-(rEKYTS9VuCX^-
z@v3+>F>J`nw!0Ts&$Nzl$@_h~<TtU+*?r{e^7*Mw3;`jH?)PtXH?xLza9w@;ZRSgf
znS#ub)9!5VTE!5SuYKV5{kbiBFLqpU{_XPUJh#!t|0$~fK7M4pA#?5r+xNaBwV#bQ
zmW2zR3z_xt^vYU+CHW$^w=wP6{IBKsKZbMiO}p2fI<TTgBIBuBt&3OI$49H2Pgobf
zYflY$@A0RyPHo?vP?mPB50f`~UdT+DGE?Wr<?P)7S2ZlJN6J(r-~A|7FXl406%<Ct
zk8&`Sv7bNpN48s2Udj8wfhh%`nZ3&N=sy}g3VVCl*UR_pv+X^hz4q|*-CY5Z+0OUp
zx&2A;5vnt@W8K8F=l5OD@3Q)nR2-+N_(;!cxZt4sZSIOA*X9_hxUnaGTjBC2CC8}9
z|9Zk_#pj#P?z>kl<(mH5usTJlr!lH#^LB}+SHmLSa&et{&B*YW?c0G5TQqWP3fQds
zr!8J~uP^T7!X0%%TI(d|b||-Ay;1bz&gM%ohI8(JKVe$`YC=VNj=J{7w*`_yi<%3r
zf^6~;>Jtr3{=CrWyJT*I-?916_}%uqC~tc<<>BeO%M-V2OU%E?yxC3Vfxo?Ui~GGh
z&7ayf+g~?3#{Z_VBfz##B<%5xmsu}NiYD_vRQXhTM*iPa`>O98ZElkSl8hE#yYuN$
zca3njrhL+clLl<rik=RMk+GATXPKs+n!vI|RbpcGF0uOReEBS?e+K1py2l&;c-ibI
zFi7k7Ir8g`&>XwhH(6w*RvcxwfAVm$@6UJXsxx!7Kw%ikoV3w)xeQ<E1BZE>J6o?x
z+%=bK{FSigc6863%U9)I-`cRBMY`Um`P8oBvsc+a`A$&fH1~bk`!I9jjd{UspMOW1
zm1kFHED)2=J9GT_>`xCfJOa{IH~s8Q+H8KrCNV+hQgvHWw4da(byjcQO_)`^ONwnS
zTX5TvM4$Z<Ywm_VDU4Be{`#ZtzvQ3irx$N9DYR@p5pPgm@#*Ow!ITRLpB_}4*wiA=
zH)X-OSF_8Nf=>TDvS99$B@@q=p4oEis#xjiiyj9=nUfT}g~D>RKUf{MoRaVK?xhsV
zE7KDmCRKa?2RMp`<=H;{c;Vz5VbKB&t)!lFc6_>_q50oETJ)BmdbNOyF?oXAraPYk
zUHRs&I+PyGeWz1^;oDpb?%hgrHoly*@#Lh>Yr>jZN^c&OOMkMe;Gf2dRiGqV{&}yr
z=Tg@9HRW?!MSj{o>;Ihe`Qe|!voBn}^za>e$z{Cnc0F6ydj3hS;zy@x$}6$lNw=-a
zJw3^7fn#&VVn(y}rbC~q*0W@VvwZT-zG$z>W4pLn(ffnMopV{?d*@9Ixo>b|p`UjA
zrHn0s3#-2P^SQ@VFnqD%t#V^^oThT3=yjV=hL+iN$(YACn7&H6v`Z?SK5%t$RgzO0
zfB$!vwigR0s<yDbTrg3!f1l9NscBb=3fx~Y&9Jxmne|WNnz~T&rl18}53X)?Ph9nO
zA9Hz`s?M^Sj<X9FZA<*HZQjL$69VckZdrKs#D(lsja46B%()p+>&(P?B|FOW)*2Ph
zwNZ8_795n_e92JJm`^G)>qW#$C*|$`lbNKBKeJMvuEM#paAAQ-p^Vq+H5N0{ow#>T
z6!<CotlztPt@3C0s2YvB>R9_1CPHzM)gtX&KDzs4y!Z7Uox;CSo9TFW_JnByT?bbR
zMr_^6aIO2!(}gRT_*@k(C^)XqUiZF%k0Bs9KmV%i-$^ZDy<h83e=+en(Q|m;<f#>p
zUng6HzT5LV)#JT~O~Ky<VL3Zh56<oO6+O4R?+u@*e|-hRasP1ho%7E`UYTlGzeUZW
zq~f1P7w4h*&-hym1KQ26&p*&6f4*YtoQeOF=4;Atep{d^61t$i$l{l3Yivnnx36RB
zT-mC%JyT`~tiL|@d@~oT!i4CU%X#UJ&*!VOv1Axnm@<{Q9*w>)=j>Q1%VM>x!SJ?7
zNXYF46IGA2N#D6`Td(x$)eQTn^~#^z`#Tu!>`xF_)XVteL3_=byMa$GPVfFB->oTM
zyy8I1Uv+IoZy~Y&Cc@1@hi&7gGo<i#9Q<6~<5c6qAk%eV+u>A!2?pgcMu(b9<xcyb
z>Txd0G4Pwe^+87B<@6Zcrva>M%0#7lTQn9QG}iNElA3kSwAU&#D>Z#jk+s>y`Tl{d
z+n!EgVpu0TyXAtyd$#bkZ{B2hfy3n9({u8H3#<NAI;vH<usoW4mNjDI(uTw9OC0x{
zd7k{H>%i*lq7N7J+msBo1p4n<@GL*|s$kU~J}FP9{YwlanoA9?-byIu;9$7_M)%N<
zGZ9OUu|1aGFV))H?iCRI-r@c{x1JLnY%Cl8%)VpRpSoxTlY9572@@sSqSKcw^mo!Y
z)ch3`>8(%GWb9H89ci@vFgu$);cZ_qLxZNX@PvEDUpA>ZAE=D}+H%I?%iGK&_w!{t
zdF`hySaYiB0fX)@)z;*S`5rd=A1Rc{t<CtlYpan#zLS=al+__M7dEG9jXf^Pb=J%6
zLl|YWR~@@Gw>6HLQK(eqS-*F&<>%w))xWz1m2fa{I#;<TI0);u{r+_B(Pdv&xpLP@
z^@)a0o4r=Asd(`9?u_YEn=%gzPY@Aqd2%Cxq2cPfgxWGryL)rmyQH4SDww9R|NC~&
z?v9bIY$S7%!SgN=hI5-QJU+U$;`8m8KNXjr6o#!_b<X8gK*)NtoKR7LLpP^C`jhrI
zG}>QL*^sBUTFOvgn^kOglj&{lg<Os1`|R2r=CUpR<(7QW^e+R0dUy7R{(k;P=Wf<6
zoO8W;^G=B<q1i=oIi+E&{<RzU&3)cAYdSyLkdU-$_u*BmxZc=Ay)$gum~o@+Qj@Vu
zvtM)J-{grBvQI8@n(0LJulcu;p<#u9?Y^7UQe~~qIswm<{(YGHN0IS@S;@TVstUFT
zt1CDeHdu;eY&DXRS#&htbLGmFO8WZigPTEfFhM~<d){4}@%hIuzpfMJ9=!jB<<>Z7
zOyCon-SsJJ^>6;2E1xodF{*N5ahj$wB|JJXd7Js|^NJ@HG@e~&R%s@(V){ZZlb<GK
zo=i!HcsPtQ0<$(PxL2je=)vIByrqMa+o5zX^V6$h91mp@Z!F|kpKB_9SoJuY!|I6w
z;*uQ>d)cn0v7ho4)9{tq%$>V<W$nHTJ2x`yx*Kb$f5%kn<i>+>YuO$?e7Is&*3ZR0
zx4M2V&O9T(Z=$_Q#dkq#`On8KW#`)8@-nF@$eH;manZwit?aie*6ghi-rZ3A<>9gP
z0P#x}opaCUWdG~&=2&ngh4q20T^B<@?0bjO+O@}PyoEboI~m3l<rKudvIq^k|Her7
zX4~~DR_l$E>l6R&Xt{CW-_OO?VqSLztrvh7+|gt72RiPw;O!fRj*gmn0&`^<OI;^j
zxhWW6ooMLla%GAe>y(V7xWzkNbg!(an55#d?!9og*8by3T^%oKoGiRm6%A57WR~&x
zI;5@l_@Lf@>+r!nn{O2FVbV5x?kuRYY8Mm8hF(*VAg54+(hQqAYxBvjB3oBCuAC?_
zLyEIG?AUK<Kc_&(&ekdM$?PRcO4Hq1rv!-pNy#ZncXx@saW#38qGPMTs@<wn{s?z#
zDlIzJ!o?xF>XF0y9|qgJE~X00ENFhU!Er^`=W6%5?xP}tfyz!C9HFhNZdhB3ykZME
z`Y>l^(&{Pk$%d{jEOTC$@HvEvavZ(5@?pStg%I|ZRaJMsIQ(muz0lba)56fQnZJ9L
zS-el~jOtu=HrLpLKfc>H9ZUEyYrPg%iyN!Locs1=F5kU#W-2LVx$NN5npzw2;*+pb
zrpAMtN>9&&#_V=l)?b*zDq4SM1v7_<){-A{KZolq>*$cm{*fsBCvh>~#Sga0AKzUE
zDV^J|8+^s_2G=c9^2Y#wn#Q`Y^e`JMnpS;_4gTDrCk_hjyA4aOE7#m8IC6GQuUzml
zB@NA;o1L@FIgQhkKPdMfnsM)Xb=>_Pzn-35+_~xO4lXX!C#opcJ<IvB@8k3d%*=|O
zlZy8VtgxKcJx4sgVdsh$oAT_p<g?|7if))TJ$9L|$2-nREF2e~*ep8T3JP%XX?qeB
zgP!TP?A;`EJU+hd)f^d*D%(YFJuZ*@*SYqe44(M?T=ev{H#j=F4?oy%)Ai}??ZT9o
zLJpz&r^`C5z>%t_rLtFl((`l8dp8N)<hSSW_T2b;>n`Erfq%}1UtnR0xfUj!{(3^q
zy4H>r+)1Eh*_fp6@A&3O=ZV^%_g@q~O*wLY2CJ_FgI3wQ10SERcQl+mvEr?a%9&Yj
z=j>0m?%Tgnrtei2gTpKRyq3ZP3^KKunmR|1%Dwjc`IFb++uQCrs`>}=R=NE7A~|78
zlt|4lL!ET5JxLp9`)n}(wO!3b<YaMO*NZhe5=x67tXO;W=HBWF|1Y+0FsrJ6Gj;OZ
z-ydFScbt^!Z<)Dyfw5Fz=?{TE{dl(Ghnnd&`*$#2TzuRj`jA`y!4LcGnXl#@-}v-&
z!0hTPd*?kqJzcr-U5rcrUZ&7?zK0h!pLf_AG3R59`E^PEkS)gZ-t0YB;nh{Bx#gI_
z5}k;K7lz3TjoS_e#q=y%zt7>Lc|0>;d+~p@*v=cClM5bwy*{zxZfS>PHR~!q`C|*8
z&u@*2ulKyYbX_kfg4nrw{2hKAa6D1-AW>q`qJpyLd@O3Jie-;fUMMTgsqLxyZfXAi
z)X57hY>zH{KF`F*zDD#Z$Ls6zhLMj8UQO=5`}%5IyK>#Hl8Do%7DSwxz|16YZNGiU
zY~E$e_HkRjdWuVSD%Mx>G};OW&fF_58of=yz*5q7-JG5iiHA47*XQ5et@7RO&VK=>
zq~ySj#q1?+%1Ui~&d>hxC%k9=emF3-Y4I+$Z>zLCI++foHJ?ps%G&OHW3FmULX6EJ
z_LQUpkN&qGXkob`XV2!jx>e=$1y{GE56b;Y8it%xe{TxhSi0JHUgu;1%Myui_P;n@
z`HOCOb>sD-MFvkMx+iwLZJbnk|3Fk&+lhyVCw^OPEg*24xiWu0=RysR4u6M=|BWyH
zx7%Aiwko_M8(tm#`%drMUHc}hZoN^rghxKdg7cfuYYR~JwVI&fIl)BgL=^A0KlkMm
zH8tDRG&l~=tC4!x%yu{^=*>KRcGkoj!u9Sy9w-{PxE`)r#*+U1O<PcS`;0Y(8d002
zRvl$x;5aYC61zgMRXf~aYs7-?jut%~nN>G=W}hs%xFbkBrvE_8Jd1Dh!{@9u;XNAu
zr)Q?e?#F&hboR(udjI3Jka_;iarxnS_J0MR9ddG*HnH&g-j2ORMm>Lx3d)Z2iL8xl
z-CSLkc%)eWLC&|hCpxiA8ePvfUdT%9=sL8oUEam_UEp(Wrv=~j^W6f@yU6^1zuMyO
z*KoOyUv~cWQ_+v;P}bk~K<`YH($D3eK|$31@1x1NcXydN8W(NNHu!L!U!m?+$&{Mi
ze9sm+o!=o>c|vl!K;6a8z2Pw&RYzM7grpyyzFY5cFYA*=XJrAwQUlHd8~^`3f4ALp
z<@)xQ5Bksj{Qq}-^}eY1{#DKPPS;*9?B`%-h&X*Z@aN+?7FD&m()S!D3CuQ?TXnau
zD|Yvs%_c@EbH%!@aurTgau62k>R5O<L08-L=CreNuFf~7o!u~Px^m6|hZjxFcmK{)
zVK^T5d;R7KObnr}N8iOxU|{*yk^gh!1eG~8&vpBoT!n?YK5!okZri}fypWeKv(R40
zx4=NDou~O{iQuZfCp)fd%9MrV+~&HO;7|}W$vvj>{l2$7-l2aNO~}eAxu3D2J?ePk
zX%WFdc3~%nt+#ESS-v`Z_S|$8&Pi(u_e!Rl)wI7bOctDN%D44+(ZcQ?mm3ZLR@l{W
zOxqOnyl54J3|C6?!$qv^dL}HtHW-A++Au6#xb*d%Z?6;Au5c(=fA2y|%b|N0%Dp)l
zuRfDpowU(`gE4Y_{?Cm8p)>sFyFJbhT34}(U%n}6tC^&~$9uaAZ7m1lN<W5~GhAR{
zbrzRnixh8OSYIpTG-vnffOMYbB^Mo}i`H2Puj=}BdHLUU9Yq(jZ-!l(2&!y;T3xU3
z<Xy!t-?nv+OknacrT>%r1q?F`wj5Nn_<We{d#e7?tj4{|q;`GakWf+%j1Rv2=ap%c
z$0U}8Cbl_^0aJ>T&0-r?v%X0>9qUtl^zlwVUKP)_y{B5b?(SBQvYNenMVYkL_jg}!
zKkBp+2Tgd{KVGrc_2;&=9y^|?bDVzBKI5bCgB7b=UmpMaE_KSUsw+>PDOLSpap{$4
z{ngZz#?5*(hW~0>vz`*ug{-^fTN%$yyj+@?7@#AjvGuHY%G;B&{uLGrE>`ThW+CUE
zo7;VTWt48fTCp2iz7|^_32WFDh2IOUuaR~V=2&Yduqlk)b5gWz%aH?93jVx(_HfUd
z>zz0FJY1f%dzt4qsjvt=KjRwlpK-;Rb8UN9y}HBXWMQ4B&8PCeM9#_hSLIseE%Eg(
zeR9n1xw@~qxdf-oX_;^(PVRKe*Z2Jgez1hdTX9s!#;$%GBFohxaDjz=`wrEUaj|!6
zZ2q1*`glclrQy>RD_vs~6`O>F1!r8?9Qxa##1Pb8_~cy5`g4VCrBEU>8<W$5FYUYn
zz3-+lH>`4I5B%^_-D94)ytDj&=~LTtUC(|@ZgA`FP;?fsGZ1c_zxK$@SnI$IMXbO6
zfBZk8^8Viw|9>dY=;ji<vs!%8^Rw+6ZcqIG(S7Z%;&ZMm*Eioyar$w<=ZNoY#)kz5
zN<J{?99=%UwtvIz!c~g%8tZ=<f3p86@$69Wxr(}9#s?lc98{OD{(5tlz{3rT3!ZZE
z{Mi57;KRP(6aQaiUtwFwv?;ECL*3uRH`n>y<D*_hP7vBE0BVBqsfe%&Fgb<ZGP|GV
ze6sxY#Cyy6*F1f?qKsGj!Nv&=|JdIz-nT(uCHH#wFFQVVNZK<pB&=WObkJRXQNdNO
z=W{D=Z-02=lIn}%(`#Q8-(G)bt%vDO_ldvv|6io{KIL>0tIad(tn7*ZKel`9FBZJ?
zZijF{=${|gk0)qq+U48Mo35Z;mSZn|e(m<T-OnTR`u={mUtwGMsOh7L>H9bH?w+W8
zSovkwPq8KUOSk{tG~-plgEQanTXq|J7V+J`aO9t$sk@i2uV`gu<y@&FCnu{<oHXgt
zRTi7)AHU8O5fqF)!(HC%R+MA#<nzD0!-o$CUTsYO{&t#uOM`$`NV_cGY{@cj-D`U*
ziYIsH&8U96w2hl#0yEQ{$Ihl|k~{*>@9r&I_*3w3oAT$z_JXRnQZn_)KU?Qlt9xEx
zv3@@(_{`UH8<)?Dikq~czo$t}L!c~JRA#HG@3*a4dGb#h7*>R>zFw`;%*c50;)d|h
z$}go^dA4r_{Wrg!rt;#@;f36$PAk{9f6ZyVzHvuJ%vzIwfBP30O6++Szs@e0{gc+m
z53{Rl%O3c}pOnviy6a_=Zm^4s?3$hOFPCvGOMC7u^k|tMbBn{xX};q14I2akva%EQ
zMW`1kCal(A*V5Y)QT)4LVXd)vCBIVT#ipgaA5C`WDJHC6)3SHdrqI{QS$v=#$xlV+
z9DWxb$*y0Af>&r~+)WPcSW&w%wX5R<|4U`1fMOkS)%)w3lg!G?EL`qNflGmq$;A@(
zcK<ZkXR3T++;hg=<;nU855b=-pjN7j3yHJc1sD937KP3F@v-Y1U*n(NGuyh?^?;f;
z+MZIr>Fo|Kb}dVdKs)NdbLv@LDhrn^Vyj8uj@2{Uy?C?pg0e$NT^%b7J(*NEg;a9x
zRPWimc%fd->3=oPAB(E4-0Zy24AioG^6XFGWGSvy|Le91$LCm`xTcv^Zq4^3@#Jsm
zhXGRiVs%#hkpcyV=_8#bDIS~H%4Q$9A0OYY{(rYr*I~AWs~Q9Z)_wBYaAuKMR>s>Y
zCQ>J)WKFD?P1+J(FgYolTqi9R5%5zR<bAzKEDlX7CnuOjWo)V92yI-oYJvjes-krb
zNs6v(6+I^~cx+;u<i_rq-LU4O^R%rKR3s-I;dcE8^0D9poh2;{Dx90vG+ubI;3BKZ
zo+XW|ZYZ{JDY`6n>S7h$I_1iTyOR{NOD1fs$|zww5ha@v`S{)H<ELx?b%FwnnUg_9
za)RlEtyT<+7Eblz4=uIO|NJn<P&L9QklT~@=#(o3oRQaF&2gRT_B?0pq?EWPpOZn&
zAgReJ9-DY1qdcNGC#`8+qb1<P8lxM`p#M4WwMTD$-UP+dQXW!kKO4>0+3b4i{Kgqd
zN<|Y@Je(Xnj8tykoU~w~DQ|0t^YLP_z$;?wu4!KH<y-eZzoHk~t&`%?O8+nVJT`2S
z0K<`;VVaA~CP?L#6qI`9&$!ts7#IyQ&T9VaNj(`hY!i-HUtf85L&vKqP~B$we2=^p
z=Yv$cENL<SSRqgeb?rgFV(A8jX0iIcnG#h;TS3Fq=j*EkmRUuwzHXf7p!05*7IW3y
zp6mPV+VsoCW7{%ztM>`Hxwt$zoHu)7+r2`?2`Ze;Rjv<S-ga|Xo_Y8D_Z^HIBmP`&
z<lwz@aKYsV*CaDfc$ma3>)0(1ic1%}oPew&I|Z*W9&uxNq@FxE>QCKTw_~}+mlVxQ
zeotn2Q7XmrTDWwk(z`m4g9U$Xn4F$v`%jlK!opDW;lW>Gd+QG#32|wAWvdtH&A|6;
z_ASFx??6p=!HN98AGA;2U>(x`@!MA`-n`i}>n?sj*24PWmZ9go!v+kXVRYuosc+@7
z%a4MVj+|(ptF!WG`14Y+=?p#+65ac3_3ylYdF^GU!3&%ESGjzm`Ss;Z{LWeKp!n>l
zx$|4v?@&ngXN?9G&qJ}{sV2YYEv!{C+*aQczWPe|?(Tqyu=1NpZ~Gvw-eJ|vJU{Q;
z_gVL??L>^-zkHds{_?3Eg<kUI?ZwkiMM>X_J0G_4+cB^^_}AR4<5Ks|vWZ^)V9%ZM
zefv5SU&zY8GS$0f{ks2fR=8gNg1ex~L`lhBfkEf@uNl{CUhX+vabTySfYf>W$e`~0
z?^9#;G3+)3hi}~@hd9-3&!@y*O5IgoTQ`IM^*$enn<j=|m-{HC^)LxEf7<zI)@iZe
za?s#J$BF)sYqw^->A5$@s=ImaIelY@LC-Fq{Tb)1YV!QB{HKC#$Et27zd8poNpiOH
zQSI#hn3A27Rk!~5w1?4t<zG;uQ~Kn*&izo#iqcna-&=?{xq}z-JXt=icJA#r*|&>N
zZBXC7h<WkLeOu<rHk^N)yX48~C7<1=FVyS(*>SFT(+;-P+vgrKO`dFXY|19f5S`yv
z+aI?%y?C~><7h~*RP9d};m-%El~!Cf@rszla`NlmH_tlPcqiK}>i&^(nX^Y;qWgnD
zv$bf=zO@YLTCeqz|DKJxBGJ9_Gv`AeU#Emq6D)irXEmIOn;5tFv{31?=F0Sq-+x5b
z?6TzVN>F;eX-5AGp|jHSyDA?C>;EpB(LE=^$Mo8S9WAR8UR|j8Q<kSTS?uQ$*hq}u
zq3ZkdTNYW#YdXeqd=~u4_)JN?%%MDU%8r&*57d(<TU#qF>fV)AVwAE%z^Qb5LV);z
z8kf3dyPqqG1^04_3TTBKZM^p}(S}=PzPQYS=2bToLyrFZyL4Ui&yGJH<>y^>mPrXZ
zIjqnMIePErLV>L_R$0tRZ@&A+XT$1bJEi)|bBhJLH6O&N`!lRs<)G2$$J@TbwB=Dl
zKxqHDQ%{c1=s)3K`aI?c-wQn_hC`Km!$W8L$4NhnyWQw0IM?{!UjBug93N(_U&Y4}
z$?agV|M=YvpVOxwu5q#J*?B@bdYP2qI+kT+`(N*UvVTr`)7{OPd$kdknm=!U?~`!%
zeYe9u9}};*Kkv$T&$vJ7-<7YIWOy~=@N|cg&H9W#&C5SM>d(7=2;^sLke{DFo~iIt
zwl00Q&NJmt+IPSIJ_Snn9V^IPyR}NXL&8v~_T3I{#=^q4yOTVfGVb$8u%|f*%hX&v
zy46kj5F4+P$NVkddYe1`uzeORb-i_tui=)bv(m=UkONV1&prknIuqF;V<@y$z3*^P
zP|?Mw(OOA23R3Qs+pF}leO>OK{J#0S^U9TZMUlQ98g2jHYO;LuY1nXU!}rGD0n?|K
zd)`)6l0RPKa+fE1*{+U;9Tq&5UkaD}d&K52$tLb}_4C{(`~Kw5xx4Z2o~QEJML(xa
zDz)<1#8d6d%Oor$V3^{u`LtWFOy_|e78a|r86w-3q{{kV2{n`tEI*vIs(XS8=Oi8H
zNh<48LZ;7epHv!uI4=0{&OKMYd|G=`jbTduZLX_Xu79p%PWV#wp0(8Ki2r;>??}y6
zeDX{RciyWmTG#%wW0&-_$8%k>d7Mvuy{=sKMdF21?*<X^#V@)|HU2%zb_iu;*f@E)
zLfIo1kUNj`%<lk=$Z+$zUVZ3nv9Ct*OzUz62F?9D7+q^D<})xz>VwV&xR`v5DN1+I
zv7VzJj<~ESv+mQa=G}U{NU-{8iprT8or~B1k^aic`h42;mp0Sv|NSa*>6PM5{{PS7
z*QKC{u5Q~T_z05t^aF8~*KF?xRk1B=W*4x_Fkq_w=JNOCWV!d;Z!fbe?)|->;3=2H
zqQ!grT4h9f=51c@bVf9i<IPNl6--y%`IO%`e-A8v(owzhhPJwL*&`R3>aU_M>AmH0
z{EG!cE!zufeiqH}7p+)Vd@bilO0V_ybBirc)c>~)F^^JbIN~#-<H+jujtNOZA)6)5
zf>m1t0(8Tk{QDky#e7Y8HjneCKR-cZLnX%yo~M7iDt_+#nTG|(EM9sY@te~koWG~<
zNcMWyGoq0ztZF3M=hcg4)z+@wukIq-`16I#Gv!?(IWu3e>{_A0Q~gQvi0{0vPiJRO
z{C@8ChR~T4%APBI+4XSxJLAm<c2u<R%e0(fmvcLH{@LPR9~496PdXmCka%Lxf5wd7
zL<R<TU)?vMp%WN5X7id&<}{nkc_^=Zow^;PV&=;WZBmS$O^bIeJNYzpw&=A_MlD}o
z_s>{UC})^`_^_aPuGAJs#{iwQ{_7#_%<0$axg!@l_H$0&b57^+azAzv)~C_tyM>FB
zUzXqLd@}!R`_3OGezl(rz0ChMY-ntrQ2F1PqocoEUtB`G{{!PpiHiTu9y9kdTy-y+
zb3FM&K+3<LbuSJn-#NYPZXNri=lUOF(*HMt6mfWXScu>5nR(*J*ZhSMxhLx1%g(vG
zoBg2XN{$zT?B0=@A-m81oyq(6^?d>RT((o&bBpWJmU%7t`-<<&zK7G_on~Py{Kz3~
zAn^D92lpd=^E-AmF?mGks?4m<dNO-Pzm1{%#ia?SL)1ZTX`2xtQ}Zc*#hvNA3>s0p
z*=F+F_57H*IbhE_=?Jf`xxV+McvI%`RsYL3Jmc!xpribFUcB<RQzs3+oj!0=);i$J
z&vc93)#`5lKD&ZkXz4w@LWMJ3cvo?gfJW3_uJrG34xM;Dy+Zf>iq*|Q(cR!NsoiX=
zZq8hBh&|0oKFj4|y7s~-oq5(O43`f!Z<sb!QB9kBxm`4)d#EUbgS>F_2|?w+o%+)M
z_wTLd?_Xti!Q$UMW8<B^c@7)`3U{7rDXoauvQ70$Q^vw~Uca}z&RrX^efO;}`PkR5
zZslEHySB9Yrk!1X?$T?!Vh?z)KCib;wBr#g>mDVhCIKN8&h0IC)QT<B|Iau%!9duf
z=+T*(Pk#SAUXb?e$L!OU^S}RjHpe)(v~*Ig`W`vc`d^FfqP|ME`pvP4*s^t*oACOb
zey+x8$G&@5@0ZKJTe&-G^=j42S0c^pgO!ukAHR5Z_Tu%=H`ia<ci-+->D;SVXBE6H
z)tY7J-00k%l9HNvMO<w4-gSQRf1bEs{C%ux`;%bqkiTaxe`HQMz5b8%(<yxy`q=B2
zB<JUK@9X>jegCY==dn^dUwpROQn&XOUzq#x7hkoiZy4+?zP~r?)?V#jb0*v5AK*Q)
zc-;x*FRWipj@s1iZ<|-V?pD^St2?sOYj(==y*!b<{?z2z+W&8C{P?tOiS7P66{(m>
zDUnvYa#!<s?o>W~<^HXHnTsFazSqn@6Y;cHx1aY=z{{rY)YijRyK<v1@fzN_wB}cM
zT-dh_LZb6+t@rIIIe7Hbv!^S+weCOF^>*gGRjL2?=_v}wZj0ZRs+oOaf?oBswk3P}
z|3$4eHND6>ZE5oDZC=~f&JkSv=)3Q(bE~vYZkj3^y<FWo`re<KtyiyUT@pO8ZSA#Y
zQ=>g`mE50HOZTJ~U-|aY(e&LPg@1qE7I?VF-`6p=j{f(_@BPfgjQ{oj?WAI+xfUGU
zdSbE56Tx3iGgpdye)99FwqDS+3k$8j|6@<Nt^WN+O{=RBkMq4he|{L<-j>SR9D7YL
zGkbFGZKKJuF)yd&u6}p4S8HbdLND={CC~WFPn(yl;7a$o-pOC4QLtm*?c-PXZ}LoD
z_hXS;sLrK}=5f;#XGwkBd0w;N#RR{a9ly6o7k=vyl&X8k^wfWjM*scwYZRRqUB1{R
z$-AWQfW_t47hmrCSn4-J!N0C9XYRZgR;sQ{jIDk0;c=Ba_q4Wh$yqA>tkIfRyzWhb
z$H5!-)~KJ?j}M%9W=+o7pWA;6-#6}ekK1oAH)mVw%CC?6Idyl)RZfwqY`M3{XX%WG
zoq0A3kFm+#{nYj*c;DvjPL8HWmfhN&eB7+-g``H?l7DwS{AxZl-r|?Pwt@TE>Q^hb
zN*TS*`T6JPs@q?J{_JQ^xy2`UrE{)zs73CsBKQ6<zmo+|r}bX@r!E)1W9ib{y_HWE
zd7J)xZGMVt+v^|I?=>Uh^&_YCd=#!KN%Oyc{qYkk^}8QRZ!S#O{(4KZqwMW%p-;8<
zEvmHt)hT6vXYHO%Mo*{phJBrNHEVr0Tj})gIk&@ZZfv%;j##*$Z~tGh#MT~XIaQ_p
z3*u8&ifq2cyy+G*mt6jZ#^v*;T)j8%ouVp-x%ul8uV;sD`%)z8J9pVb@%pHT*ThWs
zeSeo}9$+nVZQ)n_6&cTbdZTuD>`YDFbnABMm)`5UYv*j=;PH6hAJMJy>#ke>uj+3)
zz9{{v$k{nd6`!AZdHIL+HA$PIi1&BO*EhNMmqk54nSH*ZyUQf$;`7okU(aT(ULAVx
z#m1~#TfM96KTFHje}DU<P<rnD&9Bnu1+{EWFmRaQ9y`(fh4!hCuGZPJt_B4!{=+Fe
zHQFpn_qW}v>0hHBcI4dd``6>d|83s6lK;QL<F36pJuU0Zrl+UoTX-Jdme=WTJpbIs
z^7~;M7CJ5#)1R0)%j(aiZZ4U3|GJLF?T?S!AJ1F;y~J{vLiLXicJcYkK3g50dp$B}
z(TjP-Az_6ZYgk*kwr^YY>*aFMyiC7c`wD_LNAbyp99(kpl&<vJXSVX+GGiKUBiwlN
z;e=K5>%5HL?eX5c@3;P{sK4x{?{BLcTSvQIPG3=Q%jE5^oAp|E=F~X9@>{aibzvKu
z=y|K?#bU8q)<S`YzkL^3VS8oy@9i=xf<Eu7)tY5!T=nOmx4xQ>y1KAkp_BXl8*2i)
z^(QCZUUhdzT$#$Hw||}0{WL1x%;-v=zZeu@XXW2s-N3DPWyk7ulOBHj^2+o@-dtah
z*yrcjckahsed=|*@m7><{qx-3h=_#~MY|Vq=SCkq#wJ_;TsCy=PkGj??9_JWRX-ma
z&no;a3o8GtK0J{!eS25iSliq6^0L(+FZ_F2uX*Lhh2<ZaUOLH@y2>qFuMwPCkaIii
zZOscu-#!1{n?8M(f9$)j)w=#9*5*lxF6LFYr{$L3{b7AbVV8|ntZZK1wSQYzo2EWB
zH>rH;J1O<$-S_vGJH+N*`g-Jj{pGW<@8!AmttCR<9^;*5RJrL^zf7mxhRUuV7Ji(|
zZ=Le${q;xuO3c>yv(?|rW(I9nN<10%=SGi*_vSMDKi<Coua%p8ou4;VQS-)y1^sf>
zK99p|cAlP5{jF+F%=0bL``2#%_i@_f*EN3(dw0J&y~#>0U&5%kNW`kpiG5yGP??5?
zv9<e8VYL-sE>G8}KjgBv_I$Z$X5O`p=G!x$pO?GTlD+==ld1P#{F)b<H$^nZ{%tke
z4$(>%xr3I;e|~)Y_Rr-1fyeu5f1Bjp+0o+tOaK4Bwktdbwx!;lwx+=2VZv;u#<aa3
zK4(w9_w}fL?Z*HA_O~g<=VX~*y0z+Cvb(UJQu?zeDsk>hlPjyM50(FSE8AA&<t37p
z^JbIz&AU~*cJCMY{qVx>ch`=eUw`@DeY;s-n9A?=9iFZlIq}F|hr<&dem-gUlt)6c
zZIieA2?L(3^6RF{cAof<dXlew*P7ko>yJxbvs{!kaoL(bZDoJ|EVugeN?Tn%TVmF?
zweK@-R6c*b_Wi%jQLDd|N2bT$H(svy@32&5QIXIz{k?y`Z#olGxw$B{s#g8H#jlpX
zUzTx)#J!qcdFub_9Xld=ZGUhr+rPxt{+D#6i`-6|{$I-7cP7dEmCh+Ra3;j+<~FC}
z{n{meDz=xu%u{}mxAX43x=&IDeDCxRUpUb!Iw|+{ht>M(yz4HnGZ*pM6|-%wM9jvg
zZ%enP$GESL>o;Cwyt=~U&!NV-m4E7<_R1~xP?%70r>XfnPl4&D6{m|naqM-R=@fKx
zsj|tFIhI+r5sRlWv!DCZz*CZQTda5IA1>d&-*TlYUoPd6Sv7U$^yLdTr=Na&{`$Rm
zdm;PT><+&sxIdYAJ8;>AkZThZvu^En-zt4g`_i?tXY45prv3fB^=;p6ldQy6uJg0B
z{<m;;ZD9@hp0qSe+kDm5RbAOz8T1_FCc5Xj&vXj%wYI-deSd%cf&4uO54VSIO)GuG
z%lxO3d1i}^)Q$7i3JZJ|RyU_I%jujKK9SO#YAvgCzPRCGdmkeMgUkXSMg|58hnY+a
z3<V8FtPBhf7*e?y7!EL=5@BFyV2+VmI9;#u)65cn#^$Lf_wnyi>YpH%63BEaL|;<Q
ze^)yL!=w|+2Xt3VXJBC93s^SEkmssguF&;`t+!d7AC~Yl&NunQA(^ltT`+Z(@!<(P
z&TTxoRoVHw+?nTGT>U=m<R;O-Z;}!e`zJWERf`2Kd$dTNL0K$e|F6qpYpZ|Oeq(zW
z6@730rSswY*A!TM)0ADJXl5|c{e(=4Ap3%HL0-M!wwHk#8L#cb{)YblccQqfrFoOC
zcGdD5{Q<X*NClk<$XRyCB(<vMQ`*y0ljo|(`|aboEWBTwjqMXho~xMZBA-$N9?v$O
z!&6><JoWhOq+HjO+uM8&Psw#vu@;NmW_!X;t$_9L1jUmEwnnyglJ|6G&eNH>EW9o8
zl);P)IfE0*J0v5gG#IJ6HlN<6dU!%+RZ4ZuryoU0=9MX~PMdPQx8)xH&T@2~LeRO6
zTDQg3&CATa<>I&btoL8`vQs|USYr7Nc9BmU>)gfWb{UB#drV67TIRm&y86k!x1wn$
zHyzrTSvotjbct_GmhHEz{V%_|HlKMsIk9Td>C3hrU${SU<hg;paP6b)hCN1m+ITK&
zU+y}wO?PFof559P<{V2VT>QBpC3xA(i4Q-zEx+bl9PpNvkL!uxoh}_OhncSuB#d&R
zw<Vr3SiJUja#hm7RQK<HICOV79+yiz&Ui}pfA8Hk#s(WFHHGd+8o_gqGU@z^&HvKF
za(J8SP4(|gjN%4K>>A}V98%FUjtMTjKhgaJLrS1X>Z=gh%hP2OMgK2YlJDVQ)NHwf
zjrS9WWP{EkpVIeJ_*)eX*YcH19BDMonCM=hyh)?a=&E#00mBZ~N|qhR9_-#E#=ziU
zzX*SloTACVz`(8%3`ubegwyb-hGnz}rFDA2l{e>=@H0A??~zl!>ujO>iMc?3`*ZjF
zor`=}nHraz?*6<v$VQ04HuTB)Nz#ud{9!QakN&iH|BgjISFc`Gjg6Z#f9|7+3@<tl
z*{t_DJRz~9_wcV@RX4ZIy|i(HyhB=HaNQU2@F^=-ty;C@w0CzA*r>oa=O;}}*}iGt
zzPM?rOG|W~uuq7*Ge!RIQPI>_7Zy5uPWP9LodGs<<KfS#YMh66?b<cvedHu0^X~30
zSC6fGcVwZa9B0G48TMOU?x|$%sQq2$sx)y*U+W(Rqwd)dSK5BRQ_RJ}#MxW&WI~Lu
zp0>y36$~nmO_$Dm+yyeaSK3@lhHrU^%@g(smUpH>9C2cz@~us&-iL}Vn{0V=Xk(^?
zV8gqZk1IE7o%pJ1TTya(nXe|l^C#vLGI^)_|2^t5O1-^pUiG`3OSac$RjoYb{Z~^?
zupx!(^PXLA_H6uAC3ODC$~9|3qNAfv9e1f?n0c`G=f(J#z-20#UteAIT>fgWT(Eh(
zneRTvvPOLc;aJ1^HC=x?tEW!-azeRZLxN{nV#pKr37mIk$^SiQn!0M)GPl)XYrU#&
zM<#Q9Ef<{}WTV6|H`XY-MQpygn_d4*fi}?jcVCW4=P!BtAn+4&fw}o}_xb|gnVWK>
z%kS5gUkX;XUA9p5dGE#PVpEo9mK=Cswt0_7c(~6b``eRC)_*!~|8HYdbo6C|O&ZXo
z0Ma~ZNn0D+-w*BfK2_1vu3rhaGj{x6a5QAun?{jcDc3k^Uwa#ytWnU;6j&F#J8ZUj
zzTfXS)t`(z{Fgmx4?gze<Kwq~e}7+IEmL^&=FO@{o$4h|r-rN5K6Fm>zP(!N%j(kI
zUp{U;V;jL+u=|cqaCn@JU-$Fgz`DNhNkZFBf{v0qJzYP%w6xT!ZAQZ%hC7PFpBL*}
zr5%b5U#61z;=;nH?Rj(0+5i8uq)}pH4r`O(-XC#m!}f3S@6}ys(jz1>W6!cJPxcr_
z)!fUNDw3*wdUj3LzFoVbrpMRq+?Id;-KzNw3ib_OPJa3GLN|Q6rsph^%t_bQ$FKkN
z>C=+@7LmKBbNF4qoO3_ECHK7HTgwtB_E*tCHbDxXMW0ogmilab<|ntRSdHi6g{GX;
zpEgEQc9?5=_V)HhZA@x4%enF3)ayeN<Q-n|Z29wo_xg0r!v-eh?_z8}9uc;By=L<+
zUKdX;cb!({ZA#O0wZ9#)v%9tI*tBmUyy7Q3gx$n6Zl|9z;i<G~+p|nF|ILg=@3!sy
z^{Xnj_UqMEYu1#!U3umS`-hX#D}G*-UZ)>CDP`8OQ>RXS`EZy&`{kvj%XyCkN6u{$
zbSRSh{N-Tzs_*yf<Kutdy1pg(IA5#NyMI+Ze;Di{nJw+BwBnX6^PQdc{?1P0vxi^K
zOO*KZ`|qyb?{=5IUb|gOU441@LXHLXpkv9l-z}TXCucLm@VLbU`3CEhq`EII?lX<N
zy}d8nOu4){H~Q?^v%l_r-?!Yd_*ur)RiT{MCo+CGS^0MB^^%uMr@v~G&I|DM^>t%a
z{K>c^T<!VsnNy}rIr86Z-OguHzsvXkj+JV^T-=tZVQwD2IqmEvU-P?5y1Ke9%O!9v
z$d{6q4vmald0f6e=JoaU;laVd&*ItJ{xAe3DLivGy1d-~dY`Pdis!wF%I?c5Eo{?o
zZ;OhK-dg%PEcgDtSiAZDo72x<yR_7MYr;V$QBl#CZ#JJ-lWB}wwQk+DMrQUc>F4Ea
z|Nr@1^{`c3go8zdgT?4y&TKwV;7aiPoapm>=E@$eU|F5hUGY`_u7<~7ou(W8<g;tN
z&BezbmsFNGJlm+_JuOvJs8d6Pi+4t|^JGQ)hJU6rJ}ut-@NoO_|KIwg&GmYn3-yFL
zHH11f1UQydYcLq`{A66P{#d`f{QuiATQVjV6%}1FmttUO;3>Z7Dt`3888<ig)|8Wz
zO!(Lt7!-=9Or4tf?aj@P^|L2!srdM43oi!)gTmyJIa@9roU$bK^t6wm@(c_P{2?JB
zC*FTQ{y*0%C^K`Vm|o0`ZH|l#3@J^MCJDusTy#Bk_H3`d@zNJZ-++#bN?Xprz~J}z
zm~{S?8HUNbVkVz^^CS6KkL0dzx3VuA889#~Y@cmax@z72e^sL5;^mQY`oYUGU-enP
zODN-FU{L6ssvVwnWkn$8{wWD%|BnCo_;_p4(^FIUco-NCynS|d_VTBvr)%5W+dnir
zZ1+_C%Iw**x8~e5%Du5cF_oExfuUgarcFj`V|Ry%#}qW~iOWCq_Ss7APoF=3eX+Pd
z>(mrYO-Tg?hK6WS5s??-`+u}PJ2!Xs77tI)Q&Uu?PM@BAc9yA@mewQjD~t>W7JO}%
z|KlJkD!SZunN8+QBOYf^bSL-Qx-Dd4U}(N%`~A-1^>trY$F3`z=X1$O)%E<l-ETIX
z-ja9M%6Fzws}m~&16ylT6O-+a2hF>lPK!3lxv|0cp8Z3HFTt)#f}!EzuV1ZRe@%P+
zo<+uYWEmI~lBZ6c`f_2r+@(pX-XReYHx?f+u{OSX@bSltJ39)izTHgUTJ+Q_Z3P3v
zfd-TOdp5RTuLMVJ%Zcpoo^qvm=E`%kX3yT5dRpvm_4~bNf*2VZ7#FTt<FoyK-R`h8
z5ep|OyPtae@yn}^d$ocmiSV^wy>ev<=%|NX|Ns5oTKl`qOO%1(goUcA>aKUYUYC46
zYo2{&Mc}EECtqGRFW9RWEZcN&!K_)cwq#yb1EpwC!MJMmYRxbPh67u@yu7v~9Awgs
z*%8n!u7B;t#l=s*|CW_KcICOzRYeglO#zM-d-ulfE_-|FST8uYIVda;R`)X~W@TWw
zv}nl^7h!e3Dc4_Ly|c6U>&^3ZVV|F$4|jBI+_Y)aFB{=ft>d5`M}mR%<C`@M3=A*s
b{b!zWYFV!O4QB-g1_lOCS3j3^P6<r_h2)Jx

diff --git a/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png b/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png
deleted file mode 100644
index 24ca03c7cfd77afd6bd70094bcd532e4aef9f8e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22519
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

diff --git a/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php b/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
deleted file mode 100644
index dee5ffa..0000000
--- a/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Interop\Container;
-
-use Interop\Container\Exception\ContainerException;
-use Interop\Container\Exception\NotFoundException;
-
-/**
- * Describes the interface of a container that exposes methods to read its entries.
- */
-interface ContainerInterface
-{
-    /**
-     * Finds an entry of the container by its identifier and returns it.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @throws NotFoundException  No entry was found for this identifier.
-     * @throws ContainerException Error while retrieving the entry.
-     *
-     * @return mixed Entry.
-     */
-    public function get($id);
-
-    /**
-     * Returns true if the container can return an entry for the given identifier.
-     * Returns false otherwise.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @return boolean
-     */
-    public function has($id);
-}
diff --git a/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php b/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php
deleted file mode 100644
index d867434..0000000
--- a/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Interop\Container\Exception;
-
-/**
- * Base interface representing a generic exception in a container.
- */
-interface ContainerException
-{
-}
diff --git a/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php b/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php
deleted file mode 100644
index 714d7a9..0000000
--- a/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
- */
-
-namespace Interop\Container\Exception;
-
-/**
- * No entry was found in the container.
- */
-interface NotFoundException extends ContainerException
-{
-}
diff --git a/vendor/nikic/fast-route/.hhconfig b/vendor/nikic/fast-route/.hhconfig
deleted file mode 100644
index 0c2153c..0000000
--- a/vendor/nikic/fast-route/.hhconfig
+++ /dev/null
@@ -1 +0,0 @@
-assume_php=false
diff --git a/vendor/nikic/fast-route/.travis.yml b/vendor/nikic/fast-route/.travis.yml
deleted file mode 100644
index e16ed63..0000000
--- a/vendor/nikic/fast-route/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - hhvm
-
-matrix:
-  allow_failures:
-    - php: 7.0
diff --git a/vendor/nikic/fast-route/FastRoute.hhi b/vendor/nikic/fast-route/FastRoute.hhi
deleted file mode 100644
index c34bb8e..0000000
--- a/vendor/nikic/fast-route/FastRoute.hhi
+++ /dev/null
@@ -1,126 +0,0 @@
-<?hh // decl
-
-namespace FastRoute {
-    class BadRouteException extends \LogicException {
-    }
-
-    interface RouteParser {
-        public function parse(string $route): array<array>;
-    }
-
-    class RouteCollector {
-        public function __construct(RouteParser $routeParser, DataGenerator $dataGenerator);
-        public function addRoute(mixed $httpMethod, string $route, mixed $handler): void;
-        public function getData(): array;
-    }
-
-    class Route {
-        public function __construct(string $httpMethod, mixed $handler, string $regex, array $variables);
-        public function matches(string $str): bool;
-    }
-
-    interface DataGenerator {
-        public function addRoute(string $httpMethod, array $routeData, mixed $handler);
-        public function getData(): array;
-    }
-
-    interface Dispatcher {
-        const int NOT_FOUND = 0;
-        const int FOUND = 1;
-        const int METHOD_NOT_ALLOWED = 2;
-        public function dispatch(string $httpMethod, string $uri): array;
-    }
-
-    function simpleDispatcher(
-        (function(RouteCollector): void) $routeDefinitionCallback,
-        shape(
-          'routeParser' => ?classname<RouteParser>,
-          'dataGenerator' => ?classname<DataGenerator>,
-          'dispatcher' => ?classname<Dispatcher>,
-          'routeCollector' => ?classname<RouteCollector>,
-        ) $options = shape()): Dispatcher;
-
-    function cachedDispatcher(
-        (function(RouteCollector): void) $routeDefinitionCallback,
-        shape(
-          'routeParser' => ?classname<RouteParser>,
-          'dataGenerator' => ?classname<DataGenerator>,
-          'dispatcher' => ?classname<Dispatcher>,
-          'routeCollector' => ?classname<RouteCollector>,
-          'cacheDisabled' => ?bool,
-          'cacheFile' => ?string,
-        ) $options = shape()): Dispatcher;
-}
-
-namespace FastRoute\DataGenerator {
-    abstract class RegexBasedAbstract implements \FastRoute\DataGenerator {
-        protected abstract function getApproxChunkSize();
-        protected abstract function processChunk($regexToRoutesMap);
-
-        public function addRoute(string $httpMethod, array $routeData, mixed $handler): void;
-        public function getData(): array;
-    }
-
-    class CharCountBased extends RegexBasedAbstract {
-        protected function getApproxChunkSize(): int;
-        protected function processChunk(array<string, string> $regexToRoutesMap): array<string, mixed>;
-    }
-
-    class GroupCountBased extends RegexBasedAbstract {
-        protected function getApproxChunkSize(): int;
-        protected function processChunk(array<string, string> $regexToRoutesMap): array<string, mixed>;
-    }
-
-    class GroupPosBased extends RegexBasedAbstract {
-        protected function getApproxChunkSize(): int;
-        protected function processChunk(array<string, string> $regexToRoutesMap): array<string, mixed>;
-    }
-
-    class MarkBased extends RegexBasedAbstract {
-        protected function getApproxChunkSize(): int;
-        protected function processChunk(array<string, string> $regexToRoutesMap): array<string, mixed>;
-    }
-}
-
-namespace FastRoute\Dispatcher {
-    abstract class RegexBasedAbstract implements \FastRoute\Dispatcher {
-        protected abstract function dispatchVariableRoute(array<array> $routeData, string $uri): array;
-
-        public function dispatch(string $httpMethod, string $uri): array;
-    }
-
-    class GroupPosBased extends RegexBasedAbstract {
-        public function __construct(array $data);
-        protected function dispatchVariableRoute(array<array> $routeData, string $uri): array;
-    }
-
-    class GroupCountBased extends RegexBasedAbstract {
-        public function __construct(array $data);
-        protected function dispatchVariableRoute(array<array> $routeData, string $uri): array;
-    }
-
-    class CharCountBased extends RegexBasedAbstract {
-        public function __construct(array $data);
-        protected function dispatchVariableRoute(array<array> $routeData, string $uri): array;
-    }
-
-    class MarkBased extends RegexBasedAbstract {
-        public function __construct(array $data);
-        protected function dispatchVariableRoute(array<array> $routeData, string $uri): array;
-    }
-}
-
-namespace FastRoute\RouteParser {
-    class Std implements \FastRoute\RouteParser {
-        const string VARIABLE_REGEX = <<<'REGEX'
-\{
-    \s* ([a-zA-Z][a-zA-Z0-9_]*) \s*
-    (?:
-        : \s* ([^{}]*(?:\{(?-1)\}[^{}]*)*)
-    )?
-\}
-REGEX;
-        const string DEFAULT_DISPATCH_REGEX = '[^/]+';
-        public function parse(string $route): array<array>;
-    }
-}
diff --git a/vendor/nikic/fast-route/LICENSE b/vendor/nikic/fast-route/LICENSE
deleted file mode 100644
index 478e764..0000000
--- a/vendor/nikic/fast-route/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2013 by Nikita Popov.
-
-Some rights reserved.
-
-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.
-
-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.
diff --git a/vendor/nikic/fast-route/README.md b/vendor/nikic/fast-route/README.md
deleted file mode 100644
index f812a2a..0000000
--- a/vendor/nikic/fast-route/README.md
+++ /dev/null
@@ -1,273 +0,0 @@
-FastRoute - Fast request router for PHP
-=======================================
-
-This library provides a fast implementation of a regular expression based router. [Blog post explaining how the
-implementation works and why it is fast.][blog_post]
-
-Install
--------
-
-To install with composer:
-
-```sh
-composer require nikic/fast-route
-```
-
-Requires PHP 5.4 or newer.
-
-Usage
------
-
-Here's a basic usage example:
-
-```php
-<?php
-
-require '/path/to/vendor/autoload.php';
-
-$dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r) {
-    $r->addRoute('GET', '/users', 'get_all_users_handler');
-    // {id} must be a number (\d+)
-    $r->addRoute('GET', '/user/{id:\d+}', 'get_user_handler');
-    // The /{title} suffix is optional
-    $r->addRoute('GET', '/articles/{id:\d+}[/{title}]', 'get_article_handler');
-});
-
-// Fetch method and URI from somewhere
-$httpMethod = $_SERVER['REQUEST_METHOD'];
-$uri = $_SERVER['REQUEST_URI'];
-
-// Strip query string (?foo=bar) and decode URI
-if (false !== $pos = strpos($uri, '?')) {
-    $uri = substr($uri, 0, $pos);
-}
-$uri = rawurldecode($uri);
-
-$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
-switch ($routeInfo[0]) {
-    case FastRoute\Dispatcher::NOT_FOUND:
-        // ... 404 Not Found
-        break;
-    case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
-        $allowedMethods = $routeInfo[1];
-        // ... 405 Method Not Allowed
-        break;
-    case FastRoute\Dispatcher::FOUND:
-        $handler = $routeInfo[1];
-        $vars = $routeInfo[2];
-        // ... call $handler with $vars
-        break;
-}
-```
-
-### Defining routes
-
-The routes are defined by calling the `FastRoute\simpleDispatcher()` function, which accepts
-a callable taking a `FastRoute\RouteCollector` instance. The routes are added by calling
-`addRoute()` on the collector instance:
-
-```php
-$r->addRoute($method, $routePattern, $handler);
-```
-
-The `$method` is an uppercase HTTP method string for which a certain route should match. It
-is possible to specify multiple valid methods using an array:
-
-```php
-// These two calls
-$r->addRoute('GET', '/test', 'handler');
-$r->addRoute('POST', '/test', 'handler');
-// Are equivalent to this one call
-$r->addRoute(['GET', 'POST'], '/test', 'handler');
-```
-
-By default the `$routePattern` uses a syntax where `{foo}` specifies a placeholder with name `foo`
-and matching the regex `[^/]+`. To adjust the pattern the placeholder matches, you can specify
-a custom pattern by writing `{bar:[0-9]+}`. Some examples:
-
-```php
-// Matches /user/42, but not /user/xyz
-$r->addRoute('GET', '/user/{id:\d+}', 'handler');
-
-// Matches /user/foobar, but not /user/foo/bar
-$r->addRoute('GET', '/user/{name}', 'handler');
-
-// Matches /user/foo/bar as well
-$r->addRoute('GET', '/user/{name:.+}', 'handler');
-```
-
-Custom patterns for route placeholders cannot use capturing groups. For example `{lang:(en|de)}`
-is not a valid placeholder, because `()` is a capturing group. Instead you can use either
-`{lang:en|de}` or `{lang:(?:en|de)}`.
-
-Furthermore parts of the route enclosed in `[...]` are considered optional, so that `/foo[bar]`
-will match both `/foo` and `/foobar`. Optional parts are only supported in a trailing position,
-not in the middle of a route.
-
-```php
-// This route
-$r->addRoute('GET', '/user/{id:\d+}[/{name}]', 'handler');
-// Is equivalent to these two routes
-$r->addRoute('GET', '/user/{id:\d+}', 'handler');
-$r->addRoute('GET', '/user/{id:\d+}/{name}', 'handler');
-
-// Multiple nested optional parts are possible as well
-$r->addRoute('GET', '/user[/{id:\d+}[/{name}]]', 'handler');
-
-// This route is NOT valid, because optional parts can only occur at the end
-$r->addRoute('GET', '/user[/{id:\d+}]/{name}', 'handler');
-```
-
-The `$handler` parameter does not necessarily have to be a callback, it could also be a controller
-class name or any other kind of data you wish to associate with the route. FastRoute only tells you
-which handler corresponds to your URI, how you interpret it is up to you.
-
-### Caching
-
-The reason `simpleDispatcher` accepts a callback for defining the routes is to allow seamless
-caching. By using `cachedDispatcher` instead of `simpleDispatcher` you can cache the generated
-routing data and construct the dispatcher from the cached information:
-
-```php
-<?php
-
-$dispatcher = FastRoute\cachedDispatcher(function(FastRoute\RouteCollector $r) {
-    $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0');
-    $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1');
-    $r->addRoute('GET', '/user/{name}', 'handler2');
-}, [
-    'cacheFile' => __DIR__ . '/route.cache', /* required */
-    'cacheDisabled' => IS_DEBUG_ENABLED,     /* optional, enabled by default */
-]);
-```
-
-The second parameter to the function is an options array, which can be used to specify the cache
-file location, among other things.
-
-### Dispatching a URI
-
-A URI is dispatched by calling the `dispatch()` method of the created dispatcher. This method
-accepts the HTTP method and a URI. Getting those two bits of information (and normalizing them
-appropriately) is your job - this library is not bound to the PHP web SAPIs.
-
-The `dispatch()` method returns an array whose first element contains a status code. It is one
-of `Dispatcher::NOT_FOUND`, `Dispatcher::METHOD_NOT_ALLOWED` and `Dispatcher::FOUND`. For the
-method not allowed status the second array element contains a list of HTTP methods allowed for
-the supplied URI. For example:
-
-    [FastRoute\Dispatcher::METHOD_NOT_ALLOWED, ['GET', 'POST']]
-
-> **NOTE:** The HTTP specification requires that a `405 Method Not Allowed` response include the
-`Allow:` header to detail available methods for the requested resource. Applications using FastRoute
-should use the second array element to add this header when relaying a 405 response.
-
-For the found status the second array element is the handler that was associated with the route
-and the third array element is a dictionary of placeholder names to their values. For example:
-
-    /* Routing against GET /user/nikic/42 */
-
-    [FastRoute\Dispatcher::FOUND, 'handler0', ['name' => 'nikic', 'id' => '42']]
-
-### Overriding the route parser and dispatcher
-
-The routing process makes use of three components: A route parser, a data generator and a
-dispatcher. The three components adhere to the following interfaces:
-
-```php
-<?php
-
-namespace FastRoute;
-
-interface RouteParser {
-    public function parse($route);
-}
-
-interface DataGenerator {
-    public function addRoute($httpMethod, $routeData, $handler);
-    public function getData();
-}
-
-interface Dispatcher {
-    const NOT_FOUND = 0, FOUND = 1, METHOD_NOT_ALLOWED = 2;
-
-    public function dispatch($httpMethod, $uri);
-}
-```
-
-The route parser takes a route pattern string and converts it into an array of route infos, where
-each route info is again an array of it's parts. The structure is best understood using an example:
-
-    /* The route /user/{id:\d+}[/{name}] converts to the following array: */
-    [
-        [
-            '/user/',
-            ['id', '\d+'],
-        ],
-        [
-            '/user/',
-            ['id', '\d+'],
-            '/',
-            ['name', '[^/]+'],
-        ],
-    ]
-
-This array can then be passed to the `addRoute()` method of a data generator. After all routes have
-been added the `getData()` of the generator is invoked, which returns all the routing data required
-by the dispatcher. The format of this data is not further specified - it is tightly coupled to
-the corresponding dispatcher.
-
-The dispatcher accepts the routing data via a constructor and provides a `dispatch()` method, which
-you're already familiar with.
-
-The route parser can be overwritten individually (to make use of some different pattern syntax),
-however the data generator and dispatcher should always be changed as a pair, as the output from
-the former is tightly coupled to the input of the latter. The reason the generator and the
-dispatcher are separate is that only the latter is needed when using caching (as the output of
-the former is what is being cached.)
-
-When using the `simpleDispatcher` / `cachedDispatcher` functions from above the override happens
-through the options array:
-
-```php
-<?php
-
-$dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r) {
-    /* ... */
-}, [
-    'routeParser' => 'FastRoute\\RouteParser\\Std',
-    'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
-    'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
-]);
-```
-
-The above options array corresponds to the defaults. By replacing `GroupCountBased` by
-`GroupPosBased` you could switch to a different dispatching strategy.
-
-### A Note on HEAD Requests
-
-The HTTP spec requires servers to [support both GET and HEAD methods][2616-511]:
-
-> The methods GET and HEAD MUST be supported by all general-purpose servers
-
-To avoid forcing users to manually register HEAD routes for each resource we fallback to matching an
-available GET route for a given resource. The PHP web SAPI transparently removes the entity body
-from HEAD responses so this behavior has no effect on the vast majority of users.
-
-However, implementers using FastRoute outside the web SAPI environment (e.g. a custom server) MUST
-NOT send entity bodies generated in response to HEAD requests. If you are a non-SAPI user this is
-*your responsibility*; FastRoute has no purview to prevent you from breaking HTTP in such cases.
-
-Finally, note that applications MAY always specify their own HEAD method route for a given
-resource to bypass this behavior entirely.
-
-### Credits
-
-This library is based on a router that [Levi Morrison][levi] implemented for the Aerys server.
-
-A large number of tests, as well as HTTP compliance considerations, were provided by [Daniel Lowrey][rdlowrey].
-
-
-[2616-511]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.1 "RFC 2616 Section 5.1.1"
-[blog_post]: http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html
-[levi]: https://github.com/morrisonlevi
-[rdlowrey]: https://github.com/rdlowrey
diff --git a/vendor/nikic/fast-route/composer.json b/vendor/nikic/fast-route/composer.json
deleted file mode 100644
index 62aad22..0000000
--- a/vendor/nikic/fast-route/composer.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-  "name": "nikic/fast-route",
-  "description": "Fast request router for PHP",
-  "keywords": ["routing", "router"],
-  "license": "BSD-3-Clause",
-  "authors": [
-    {
-      "name": "Nikita Popov",
-      "email": "nikic@php.net"
-    }
-  ],
-  "require": {
-    "php": ">=5.4.0"
-  },
-  "autoload": {
-    "psr-4": {
-      "FastRoute\\": "src/"
-    },
-    "files": ["src/functions.php"]
-  }
-}
diff --git a/vendor/nikic/fast-route/phpunit.xml b/vendor/nikic/fast-route/phpunit.xml
deleted file mode 100644
index 3c807b6..0000000
--- a/vendor/nikic/fast-route/phpunit.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         syntaxCheck="false"
-         bootstrap="test/bootstrap.php"
-        >
-    <testsuites>
-        <testsuite name="FastRoute Tests">
-            <directory>./test/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./src/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/nikic/fast-route/src/BadRouteException.php b/vendor/nikic/fast-route/src/BadRouteException.php
deleted file mode 100644
index 7e38479..0000000
--- a/vendor/nikic/fast-route/src/BadRouteException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-class BadRouteException extends \LogicException {
-}
diff --git a/vendor/nikic/fast-route/src/DataGenerator.php b/vendor/nikic/fast-route/src/DataGenerator.php
deleted file mode 100644
index 16053db..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-interface DataGenerator {
-    /**
-     * Adds a route to the data generator. The route data uses the
-     * same format that is returned by RouterParser::parser().
-     *
-     * The handler doesn't necessarily need to be a callable, it
-     * can be arbitrary data that will be returned when the route
-     * matches.
-     *
-     * @param string $httpMethod
-     * @param array $routeData
-     * @param mixed $handler
-     */
-    public function addRoute($httpMethod, $routeData, $handler);
-
-    /**
-     * Returns dispatcher data in some unspecified format, which
-     * depends on the used method of dispatch.
-     */
-    public function getData();
-}
diff --git a/vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php b/vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php
deleted file mode 100644
index 5c38b89..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace FastRoute\DataGenerator;
-
-class CharCountBased extends RegexBasedAbstract {
-    protected function getApproxChunkSize() {
-        return 30;
-    }
-
-    protected function processChunk($regexToRoutesMap) {
-        $routeMap = [];
-        $regexes = [];
-
-        $suffixLen = 0;
-        $suffix = '';
-        $count = count($regexToRoutesMap);
-        foreach ($regexToRoutesMap as $regex => $route) {
-            $suffixLen++;
-            $suffix .= "\t";
-
-            $regexes[] = '(?:' . $regex . '/(\t{' . $suffixLen . '})\t{' . ($count - $suffixLen) . '})';
-            $routeMap[$suffix] = [$route->handler, $route->variables];
-        }
-
-        $regex = '~^(?|' . implode('|', $regexes) . ')$~';
-        return ['regex' => $regex, 'suffix' => '/' . $suffix, 'routeMap' => $routeMap];
-    }
-}
diff --git a/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php b/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php
deleted file mode 100644
index d51807f..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace FastRoute\DataGenerator;
-
-class GroupCountBased extends RegexBasedAbstract {
-    protected function getApproxChunkSize() {
-        return 10;
-    }
-
-    protected function processChunk($regexToRoutesMap) {
-        $routeMap = [];
-        $regexes = [];
-        $numGroups = 0;
-        foreach ($regexToRoutesMap as $regex => $route) {
-            $numVariables = count($route->variables);
-            $numGroups = max($numGroups, $numVariables);
-
-            $regexes[] = $regex . str_repeat('()', $numGroups - $numVariables);
-            $routeMap[$numGroups + 1] = [$route->handler, $route->variables];
-
-            ++$numGroups;
-        }
-
-        $regex = '~^(?|' . implode('|', $regexes) . ')$~';
-        return ['regex' => $regex, 'routeMap' => $routeMap];
-    }
-}
-
diff --git a/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php b/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php
deleted file mode 100644
index 4152f7a..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace FastRoute\DataGenerator;
-
-class GroupPosBased extends RegexBasedAbstract {
-    protected function getApproxChunkSize() {
-        return 10;
-    }
-
-    protected function processChunk($regexToRoutesMap) {
-        $routeMap = [];
-        $regexes = [];
-        $offset = 1;
-        foreach ($regexToRoutesMap as $regex => $route) {
-            $regexes[] = $regex;
-            $routeMap[$offset] = [$route->handler, $route->variables];
-
-            $offset += count($route->variables);
-        }
-
-        $regex = '~^(?:' . implode('|', $regexes) . ')$~';
-        return ['regex' => $regex, 'routeMap' => $routeMap];
-    }
-}
-
diff --git a/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php b/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php
deleted file mode 100644
index 61359f5..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace FastRoute\DataGenerator;
-
-class MarkBased extends RegexBasedAbstract {
-    protected function getApproxChunkSize() {
-        return 30;
-    }
-
-    protected function processChunk($regexToRoutesMap) {
-        $routeMap = [];
-        $regexes = [];
-        $markName = 'a';
-        foreach ($regexToRoutesMap as $regex => $route) {
-            $regexes[] = $regex . '(*MARK:' . $markName . ')';
-            $routeMap[$markName] = [$route->handler, $route->variables];
-
-            ++$markName;
-        }
-
-        $regex = '~^(?|' . implode('|', $regexes) . ')$~';
-        return ['regex' => $regex, 'routeMap' => $routeMap];
-    }
-}
-
diff --git a/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php b/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
deleted file mode 100644
index 713d897..0000000
--- a/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-namespace FastRoute\DataGenerator;
-
-use FastRoute\DataGenerator;
-use FastRoute\BadRouteException;
-use FastRoute\Route;
-
-abstract class RegexBasedAbstract implements DataGenerator {
-    protected $staticRoutes = [];
-    protected $methodToRegexToRoutesMap = [];
-
-    protected abstract function getApproxChunkSize();
-    protected abstract function processChunk($regexToRoutesMap);
-
-    public function addRoute($httpMethod, $routeData, $handler) {
-        if ($this->isStaticRoute($routeData)) {
-            $this->addStaticRoute($httpMethod, $routeData, $handler);
-        } else {
-            $this->addVariableRoute($httpMethod, $routeData, $handler);
-        }
-    }
-
-    public function getData() {
-        if (empty($this->methodToRegexToRoutesMap)) {
-            return [$this->staticRoutes, []];
-        }
-
-        return [$this->staticRoutes, $this->generateVariableRouteData()];
-    }
-
-    private function generateVariableRouteData() {
-        $data = [];
-        foreach ($this->methodToRegexToRoutesMap as $method => $regexToRoutesMap) {
-            $chunkSize = $this->computeChunkSize(count($regexToRoutesMap));
-            $chunks = array_chunk($regexToRoutesMap, $chunkSize, true);
-            $data[$method] =  array_map([$this, 'processChunk'], $chunks);
-        }
-        return $data;
-    }
-
-    private function computeChunkSize($count) {
-        $numParts = max(1, round($count / $this->getApproxChunkSize()));
-        return ceil($count / $numParts);
-    }
-
-    private function isStaticRoute($routeData) {
-        return count($routeData) === 1 && is_string($routeData[0]);
-    }
-
-    private function addStaticRoute($httpMethod, $routeData, $handler) {
-        $routeStr = $routeData[0];
-
-        if (isset($this->staticRoutes[$httpMethod][$routeStr])) {
-            throw new BadRouteException(sprintf(
-                'Cannot register two routes matching "%s" for method "%s"',
-                $routeStr, $httpMethod
-            ));
-        }
-
-        if (isset($this->methodToRegexToRoutesMap[$httpMethod])) {
-            foreach ($this->methodToRegexToRoutesMap[$httpMethod] as $route) {
-                if ($route->matches($routeStr)) {
-                    throw new BadRouteException(sprintf(
-                        'Static route "%s" is shadowed by previously defined variable route "%s" for method "%s"',
-                        $routeStr, $route->regex, $httpMethod
-                    ));
-                }
-            }
-        }
-
-        $this->staticRoutes[$httpMethod][$routeStr] = $handler;
-    }
-
-    private function addVariableRoute($httpMethod, $routeData, $handler) {
-        list($regex, $variables) = $this->buildRegexForRoute($routeData);
-
-        if (isset($this->methodToRegexToRoutesMap[$httpMethod][$regex])) {
-            throw new BadRouteException(sprintf(
-                'Cannot register two routes matching "%s" for method "%s"',
-                $regex, $httpMethod
-            ));
-        }
-
-        $this->methodToRegexToRoutesMap[$httpMethod][$regex] = new Route(
-            $httpMethod, $handler, $regex, $variables
-        );
-    }
-
-    private function buildRegexForRoute($routeData) {
-        $regex = '';
-        $variables = [];
-        foreach ($routeData as $part) {
-            if (is_string($part)) {
-                $regex .= preg_quote($part, '~');
-                continue;
-            }
-
-            list($varName, $regexPart) = $part;
-
-            if (isset($variables[$varName])) {
-                throw new BadRouteException(sprintf(
-                    'Cannot use the same placeholder "%s" twice', $varName
-                ));
-            }
-
-            if ($this->regexHasCapturingGroups($regexPart)) {
-                throw new BadRouteException(sprintf(
-                    'Regex "%s" for parameter "%s" contains a capturing group',
-                    $regexPart, $varName
-                ));
-            }
-
-            $variables[$varName] = $varName;
-            $regex .= '(' . $regexPart . ')';
-        }
-
-        return [$regex, $variables];
-    }
-
-    private function regexHasCapturingGroups($regex) {
-        if (false === strpos($regex, '(')) {
-            // Needs to have at least a ( to contain a capturing group
-            return false;
-        }
-
-        // Semi-accurate detection for capturing groups
-        return preg_match(
-            '~
-                (?:
-                    \(\?\(
-                  | \[ [^\]\\\\]* (?: \\\\ . [^\]\\\\]* )* \]
-                  | \\\\ .
-                ) (*SKIP)(*FAIL) |
-                \(
-                (?!
-                    \? (?! <(?![!=]) | P< | \' )
-                  | \*
-                )
-            ~x',
-            $regex
-        );
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher.php b/vendor/nikic/fast-route/src/Dispatcher.php
deleted file mode 100644
index ea98009..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-interface Dispatcher {
-    const NOT_FOUND = 0;
-    const FOUND = 1;
-    const METHOD_NOT_ALLOWED = 2;
-
-    /**
-     * Dispatches against the provided HTTP method verb and URI.
-     *
-     * Returns array with one of the following formats:
-     *
-     *     [self::NOT_FOUND]
-     *     [self::METHOD_NOT_ALLOWED, ['GET', 'OTHER_ALLOWED_METHODS']]
-     *     [self::FOUND, $handler, ['varName' => 'value', ...]]
-     *
-     * @param string $httpMethod
-     * @param string $uri
-     *
-     * @return array
-     */
-    public function dispatch($httpMethod, $uri);
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php b/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php
deleted file mode 100644
index 22ba240..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class CharCountBased extends RegexBasedAbstract {
-    public function __construct($data) {
-        list($this->staticRouteMap, $this->variableRouteData) = $data;
-    }
-
-    protected function dispatchVariableRoute($routeData, $uri) {
-        foreach ($routeData as $data) {
-            if (!preg_match($data['regex'], $uri . $data['suffix'], $matches)) {
-                continue;
-            }
-
-            list($handler, $varNames) = $data['routeMap'][end($matches)];
-
-            $vars = [];
-            $i = 0;
-            foreach ($varNames as $varName) {
-                $vars[$varName] = $matches[++$i];
-            }
-            return [self::FOUND, $handler, $vars];
-        }
-
-        return [self::NOT_FOUND];
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php b/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php
deleted file mode 100644
index 0abd322..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class GroupCountBased extends RegexBasedAbstract {
-    public function __construct($data) {
-        list($this->staticRouteMap, $this->variableRouteData) = $data;
-    }
-
-    protected function dispatchVariableRoute($routeData, $uri) {
-        foreach ($routeData as $data) {
-            if (!preg_match($data['regex'], $uri, $matches)) {
-                continue;
-            }
-
-            list($handler, $varNames) = $data['routeMap'][count($matches)];
-
-            $vars = [];
-            $i = 0;
-            foreach ($varNames as $varName) {
-                $vars[$varName] = $matches[++$i];
-            }
-            return [self::FOUND, $handler, $vars];
-        }
-
-        return [self::NOT_FOUND];
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php b/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php
deleted file mode 100644
index 32227d4..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class GroupPosBased extends RegexBasedAbstract {
-    public function __construct($data) {
-        list($this->staticRouteMap, $this->variableRouteData) = $data;
-    }
-
-    protected function dispatchVariableRoute($routeData, $uri) {
-        foreach ($routeData as $data) {
-            if (!preg_match($data['regex'], $uri, $matches)) {
-                continue;
-            }
-
-            // find first non-empty match
-            for ($i = 1; '' === $matches[$i]; ++$i);
-
-            list($handler, $varNames) = $data['routeMap'][$i];
-
-            $vars = [];
-            foreach ($varNames as $varName) {
-                $vars[$varName] = $matches[$i++];
-            }
-            return [self::FOUND, $handler, $vars];
-        }
-
-        return [self::NOT_FOUND];
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php b/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php
deleted file mode 100644
index fefa711..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class MarkBased extends RegexBasedAbstract {
-    public function __construct($data) {
-        list($this->staticRouteMap, $this->variableRouteData) = $data;
-    }
-
-    protected function dispatchVariableRoute($routeData, $uri) {
-        foreach ($routeData as $data) {
-            if (!preg_match($data['regex'], $uri, $matches)) {
-                continue;
-            }
-
-            list($handler, $varNames) = $data['routeMap'][$matches['MARK']];
-
-            $vars = [];
-            $i = 0;
-            foreach ($varNames as $varName) {
-                $vars[$varName] = $matches[++$i];
-            }
-            return [self::FOUND, $handler, $vars];
-        }
-
-        return [self::NOT_FOUND];
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php b/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php
deleted file mode 100644
index 8823b9b..0000000
--- a/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-use FastRoute\Dispatcher;
-
-abstract class RegexBasedAbstract implements Dispatcher {
-    protected $staticRouteMap;
-    protected $variableRouteData;
-
-    protected abstract function dispatchVariableRoute($routeData, $uri);
-
-    public function dispatch($httpMethod, $uri) {
-        if (isset($this->staticRouteMap[$httpMethod][$uri])) {
-            $handler = $this->staticRouteMap[$httpMethod][$uri];
-            return [self::FOUND, $handler, []];
-        }
-
-        $varRouteData = $this->variableRouteData;
-        if (isset($varRouteData[$httpMethod])) {
-            $result = $this->dispatchVariableRoute($varRouteData[$httpMethod], $uri);
-            if ($result[0] === self::FOUND) {
-                return $result;
-            }
-        }
-
-        // For HEAD requests, attempt fallback to GET
-        if ($httpMethod === 'HEAD') {
-            if (isset($this->staticRouteMap['GET'][$uri])) {
-                $handler = $this->staticRouteMap['GET'][$uri];
-                return [self::FOUND, $handler, []];
-            }
-            if (isset($varRouteData['GET'])) {
-                $result = $this->dispatchVariableRoute($varRouteData['GET'], $uri);
-                if ($result[0] === self::FOUND) {
-                    return $result;
-                }
-            }
-        }
-
-        // If nothing else matches, try fallback routes
-        if (isset($this->staticRouteMap['*'][$uri])) {
-            $handler = $this->staticRouteMap['*'][$uri];
-            return [self::FOUND, $handler, []];
-        }
-        if (isset($varRouteData['*'])) {
-            $result = $this->dispatchVariableRoute($varRouteData['*'], $uri);
-            if ($result[0] === self::FOUND) {
-                return $result;
-            }
-        }
-
-        // Find allowed methods for this URI by matching against all other HTTP methods as well
-        $allowedMethods = [];
-
-        foreach ($this->staticRouteMap as $method => $uriMap) {
-            if ($method !== $httpMethod && isset($uriMap[$uri])) {
-                $allowedMethods[] = $method;
-            }
-        }
-
-        foreach ($varRouteData as $method => $routeData) {
-            if ($method === $httpMethod) {
-                continue;
-            }
-
-            $result = $this->dispatchVariableRoute($routeData, $uri);
-            if ($result[0] === self::FOUND) {
-                $allowedMethods[] = $method;
-            }
-        }
-
-        // If there are no allowed methods the route simply does not exist
-        if ($allowedMethods) {
-            return [self::METHOD_NOT_ALLOWED, $allowedMethods];
-        } else {
-            return [self::NOT_FOUND];
-        }
-    }
-}
diff --git a/vendor/nikic/fast-route/src/Route.php b/vendor/nikic/fast-route/src/Route.php
deleted file mode 100644
index d71ded1..0000000
--- a/vendor/nikic/fast-route/src/Route.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-class Route {
-    public $httpMethod;
-    public $regex;
-    public $variables;
-    public $handler;
-
-    /**
-     * Constructs a route (value object).
-     *
-     * @param string $httpMethod
-     * @param mixed  $handler
-     * @param string $regex
-     * @param array  $variables
-     */
-    public function __construct($httpMethod, $handler, $regex, $variables) {
-        $this->httpMethod = $httpMethod;
-        $this->handler = $handler;
-        $this->regex = $regex;
-        $this->variables = $variables;
-    }
-
-    /**
-     * Tests whether this route matches the given string.
-     *
-     * @param string $str
-     *
-     * @return bool
-     */
-    public function matches($str) {
-        $regex = '~^' . $this->regex . '$~';
-        return (bool) preg_match($regex, $str);
-    }
-}
-
diff --git a/vendor/nikic/fast-route/src/RouteCollector.php b/vendor/nikic/fast-route/src/RouteCollector.php
deleted file mode 100644
index 4386bbf..0000000
--- a/vendor/nikic/fast-route/src/RouteCollector.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-class RouteCollector {
-    private $routeParser;
-    private $dataGenerator;
-
-    /**
-     * Constructs a route collector.
-     *
-     * @param RouteParser   $routeParser
-     * @param DataGenerator $dataGenerator
-     */
-    public function __construct(RouteParser $routeParser, DataGenerator $dataGenerator) {
-        $this->routeParser = $routeParser;
-        $this->dataGenerator = $dataGenerator;
-    }
-
-    /**
-     * Adds a route to the collection.
-     *
-     * The syntax used in the $route string depends on the used route parser.
-     *
-     * @param string|string[] $httpMethod
-     * @param string $route
-     * @param mixed  $handler
-     */
-    public function addRoute($httpMethod, $route, $handler) {
-        $routeDatas = $this->routeParser->parse($route);
-        foreach ((array) $httpMethod as $method) {
-            foreach ($routeDatas as $routeData) {
-                $this->dataGenerator->addRoute($method, $routeData, $handler);
-            }
-        }
-    }
-
-    /**
-     * Returns the collected route data, as provided by the data generator.
-     *
-     * @return array
-     */
-    public function getData() {
-        return $this->dataGenerator->getData();
-    }
-}
diff --git a/vendor/nikic/fast-route/src/RouteParser.php b/vendor/nikic/fast-route/src/RouteParser.php
deleted file mode 100644
index c089c31..0000000
--- a/vendor/nikic/fast-route/src/RouteParser.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-interface RouteParser {
-    /**
-     * Parses a route string into multiple route data arrays.
-     *
-     * The expected output is defined using an example:
-     *
-     * For the route string "/fixedRoutePart/{varName}[/moreFixed/{varName2:\d+}]", if {varName} is interpreted as
-     * a placeholder and [...] is interpreted as an optional route part, the expected result is:
-     *
-     * [
-     *     // first route: without optional part
-     *     [
-     *         "/fixedRoutePart/",
-     *         ["varName", "[^/]+"],
-     *     ],
-     *     // second route: with optional part
-     *     [
-     *         "/fixedRoutePart/",
-     *         ["varName", "[^/]+"],
-     *         "/moreFixed/",
-     *         ["varName2", [0-9]+"],
-     *     ],
-     * ]
-     *
-     * Here one route string was converted into two route data arrays.
-     *
-     * @param string $route Route string to parse
-     * 
-     * @return mixed[][] Array of route data arrays
-     */
-    public function parse($route);
-}
diff --git a/vendor/nikic/fast-route/src/RouteParser/Std.php b/vendor/nikic/fast-route/src/RouteParser/Std.php
deleted file mode 100644
index a6c21bd..0000000
--- a/vendor/nikic/fast-route/src/RouteParser/Std.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-namespace FastRoute\RouteParser;
-
-use FastRoute\BadRouteException;
-use FastRoute\RouteParser;
-
-/**
- * Parses route strings of the following form:
- *
- * "/user/{name}[/{id:[0-9]+}]"
- */
-class Std implements RouteParser {
-    const VARIABLE_REGEX = <<<'REGEX'
-\{
-    \s* ([a-zA-Z_][a-zA-Z0-9_-]*) \s*
-    (?:
-        : \s* ([^{}]*(?:\{(?-1)\}[^{}]*)*)
-    )?
-\}
-REGEX;
-    const DEFAULT_DISPATCH_REGEX = '[^/]+';
-
-    public function parse($route) {
-        $routeWithoutClosingOptionals = rtrim($route, ']');
-        $numOptionals = strlen($route) - strlen($routeWithoutClosingOptionals);
-
-        // Split on [ while skipping placeholders
-        $segments = preg_split('~' . self::VARIABLE_REGEX . '(*SKIP)(*F) | \[~x', $routeWithoutClosingOptionals);
-        if ($numOptionals !== count($segments) - 1) {
-            // If there are any ] in the middle of the route, throw a more specific error message
-            if (preg_match('~' . self::VARIABLE_REGEX . '(*SKIP)(*F) | \]~x', $routeWithoutClosingOptionals)) {
-                throw new BadRouteException("Optional segments can only occur at the end of a route");
-            }
-            throw new BadRouteException("Number of opening '[' and closing ']' does not match");
-        }
-
-        $currentRoute = '';
-        $routeDatas = [];
-        foreach ($segments as $n => $segment) {
-            if ($segment === '' && $n !== 0) {
-                throw new BadRouteException("Empty optional part");
-            }
-
-            $currentRoute .= $segment;
-            $routeDatas[] = $this->parsePlaceholders($currentRoute);
-        }
-        return $routeDatas;
-    }
-
-    /**
-     * Parses a route string that does not contain optional segments.
-     */
-    private function parsePlaceholders($route) {
-        if (!preg_match_all(
-            '~' . self::VARIABLE_REGEX . '~x', $route, $matches,
-            PREG_OFFSET_CAPTURE | PREG_SET_ORDER
-        )) {
-            return [$route];
-        }
-
-        $offset = 0;
-        $routeData = [];
-        foreach ($matches as $set) {
-            if ($set[0][1] > $offset) {
-                $routeData[] = substr($route, $offset, $set[0][1] - $offset);
-            }
-            $routeData[] = [
-                $set[1][0],
-                isset($set[2]) ? trim($set[2][0]) : self::DEFAULT_DISPATCH_REGEX
-            ];
-            $offset = $set[0][1] + strlen($set[0][0]);
-        }
-
-        if ($offset != strlen($route)) {
-            $routeData[] = substr($route, $offset);
-        }
-
-        return $routeData;
-    }
-}
diff --git a/vendor/nikic/fast-route/src/bootstrap.php b/vendor/nikic/fast-route/src/bootstrap.php
deleted file mode 100644
index add216c..0000000
--- a/vendor/nikic/fast-route/src/bootstrap.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-require __DIR__ . '/functions.php';
-
-spl_autoload_register(function($class) {
-    if (strpos($class, 'FastRoute\\') === 0) {
-        $name = substr($class, strlen('FastRoute'));
-        require __DIR__ . strtr($name, '\\', DIRECTORY_SEPARATOR) . '.php';
-    }
-});
diff --git a/vendor/nikic/fast-route/src/functions.php b/vendor/nikic/fast-route/src/functions.php
deleted file mode 100644
index 3af6779..0000000
--- a/vendor/nikic/fast-route/src/functions.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-if (!function_exists('FastRoute\simpleDispatcher')) {
-    /**
-     * @param callable $routeDefinitionCallback
-     * @param array $options
-     *
-     * @return Dispatcher
-     */
-    function simpleDispatcher(callable $routeDefinitionCallback, array $options = []) {
-        $options += [
-            'routeParser' => 'FastRoute\\RouteParser\\Std',
-            'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
-            'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
-            'routeCollector' => 'FastRoute\\RouteCollector',
-        ];
-
-        /** @var RouteCollector $routeCollector */
-        $routeCollector = new $options['routeCollector'](
-            new $options['routeParser'], new $options['dataGenerator']
-        );
-        $routeDefinitionCallback($routeCollector);
-
-        return new $options['dispatcher']($routeCollector->getData());
-    }
-
-    /**
-     * @param callable $routeDefinitionCallback
-     * @param array $options
-     *
-     * @return Dispatcher
-     */
-    function cachedDispatcher(callable $routeDefinitionCallback, array $options = []) {
-        $options += [
-            'routeParser' => 'FastRoute\\RouteParser\\Std',
-            'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased',
-            'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased',
-            'routeCollector' => 'FastRoute\\RouteCollector',
-            'cacheDisabled' => false,
-        ];
-
-        if (!isset($options['cacheFile'])) {
-            throw new \LogicException('Must specify "cacheFile" option');
-        }
-
-        if (!$options['cacheDisabled'] && file_exists($options['cacheFile'])) {
-            $dispatchData = require $options['cacheFile'];
-            if (!is_array($dispatchData)) {
-                throw new \RuntimeException('Invalid cache file "' . $options['cacheFile'] . '"');
-            }
-            return new $options['dispatcher']($dispatchData);
-        }
-
-        $routeCollector = new $options['routeCollector'](
-            new $options['routeParser'], new $options['dataGenerator']
-        );
-        $routeDefinitionCallback($routeCollector);
-
-        /** @var RouteCollector $routeCollector */
-        $dispatchData = $routeCollector->getData();
-        file_put_contents(
-            $options['cacheFile'],
-            '<?php return ' . var_export($dispatchData, true) . ';'
-        );
-
-        return new $options['dispatcher']($dispatchData);
-    }
-}
diff --git a/vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php b/vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php
deleted file mode 100644
index 8168498..0000000
--- a/vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class CharCountBasedTest extends DispatcherTest {
-    protected function getDispatcherClass() {
-        return 'FastRoute\\Dispatcher\\CharCountBased';
-    }
-
-    protected function getDataGeneratorClass() {
-        return 'FastRoute\\DataGenerator\\CharCountBased';
-    }
-}
diff --git a/vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php b/vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php
deleted file mode 100644
index a6d6205..0000000
--- a/vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php
+++ /dev/null
@@ -1,561 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-use FastRoute\RouteCollector;
-
-abstract class DispatcherTest extends \PHPUnit_Framework_TestCase {
-
-    /**
-     * Delegate dispatcher selection to child test classes
-     */
-    abstract protected function getDispatcherClass();
-
-    /**
-     * Delegate dataGenerator selection to child test classes
-     */
-    abstract protected function getDataGeneratorClass();
-
-    /**
-     * Set appropriate options for the specific Dispatcher class we're testing
-     */
-    private function generateDispatcherOptions() {
-        return [
-            'dataGenerator' => $this->getDataGeneratorClass(),
-            'dispatcher' => $this->getDispatcherClass()
-        ];
-    }
-
-    /**
-     * @dataProvider provideFoundDispatchCases
-     */
-    public function testFoundDispatches($method, $uri, $callback, $handler, $argDict) {
-        $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions());
-        $info = $dispatcher->dispatch($method, $uri);
-        $this->assertSame($dispatcher::FOUND, $info[0]);
-        $this->assertSame($handler, $info[1]);
-        $this->assertSame($argDict, $info[2]);
-    }
-
-    /**
-     * @dataProvider provideNotFoundDispatchCases
-     */
-    public function testNotFoundDispatches($method, $uri, $callback) {
-        $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions());
-        $routeInfo = $dispatcher->dispatch($method, $uri);
-        $this->assertFalse(isset($routeInfo[1]),
-            "NOT_FOUND result must only contain a single element in the returned info array"
-        );
-        $this->assertSame($dispatcher::NOT_FOUND, $routeInfo[0]);
-    }
-
-    /**
-     * @dataProvider provideMethodNotAllowedDispatchCases
-     */
-    public function testMethodNotAllowedDispatches($method, $uri, $callback, $availableMethods) {
-        $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions());
-        $routeInfo = $dispatcher->dispatch($method, $uri);
-        $this->assertTrue(isset($routeInfo[1]),
-            "METHOD_NOT_ALLOWED result must return an array of allowed methods at index 1"
-        );
-
-        list($routedStatus, $methodArray) = $dispatcher->dispatch($method, $uri);
-        $this->assertSame($dispatcher::METHOD_NOT_ALLOWED, $routedStatus);
-        $this->assertSame($availableMethods, $methodArray);
-    }
-
-    /**
-     * @expectedException \FastRoute\BadRouteException
-     * @expectedExceptionMessage Cannot use the same placeholder "test" twice
-     */
-    public function testDuplicateVariableNameError() {
-        \FastRoute\simpleDispatcher(function(RouteCollector $r) {
-            $r->addRoute('GET', '/foo/{test}/{test:\d+}', 'handler0');
-        }, $this->generateDispatcherOptions());
-    }
-
-    /**
-     * @expectedException \FastRoute\BadRouteException
-     * @expectedExceptionMessage Cannot register two routes matching "/user/([^/]+)" for method "GET"
-     */
-    public function testDuplicateVariableRoute() {
-        \FastRoute\simpleDispatcher(function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{id}', 'handler0'); // oops, forgot \d+ restriction ;)
-            $r->addRoute('GET', '/user/{name}', 'handler1');
-        }, $this->generateDispatcherOptions());
-    }
-
-    /**
-     * @expectedException \FastRoute\BadRouteException
-     * @expectedExceptionMessage Cannot register two routes matching "/user" for method "GET"
-     */
-    public function testDuplicateStaticRoute() {
-        \FastRoute\simpleDispatcher(function(RouteCollector $r) {
-            $r->addRoute('GET', '/user', 'handler0');
-            $r->addRoute('GET', '/user', 'handler1');
-        }, $this->generateDispatcherOptions());
-    }
-
-    /**
-     * @expectedException \FastRoute\BadRouteException
-     * @expectedExceptionMessage Static route "/user/nikic" is shadowed by previously defined variable route "/user/([^/]+)" for method "GET"
-     */
-    public function testShadowedStaticRoute() {
-        \FastRoute\simpleDispatcher(function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}', 'handler0');
-            $r->addRoute('GET', '/user/nikic', 'handler1');
-        }, $this->generateDispatcherOptions());
-    }
-
-    /**
-     * @expectedException \FastRoute\BadRouteException
-     * @expectedExceptionMessage Regex "(en|de)" for parameter "lang" contains a capturing group
-     */
-    public function testCapturing() {
-        \FastRoute\simpleDispatcher(function(RouteCollector $r) {
-            $r->addRoute('GET', '/{lang:(en|de)}', 'handler0');
-        }, $this->generateDispatcherOptions());
-    }
-
-    public function provideFoundDispatchCases() {
-        $cases = [];
-
-        // 0 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/resource/123/456', 'handler0');
-        };
-
-        $method = 'GET';
-        $uri = '/resource/123/456';
-        $handler = 'handler0';
-        $argDict = [];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 1 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/handler0', 'handler0');
-            $r->addRoute('GET', '/handler1', 'handler1');
-            $r->addRoute('GET', '/handler2', 'handler2');
-        };
-
-        $method = 'GET';
-        $uri = '/handler2';
-        $handler = 'handler2';
-        $argDict = [];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 2 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0');
-            $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1');
-            $r->addRoute('GET', '/user/{name}', 'handler2');
-        };
-
-        $method = 'GET';
-        $uri = '/user/rdlowrey';
-        $handler = 'handler2';
-        $argDict = ['name' => 'rdlowrey'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 3 -------------------------------------------------------------------------------------->
-
-        // reuse $callback from #2
-
-        $method = 'GET';
-        $uri = '/user/12345';
-        $handler = 'handler1';
-        $argDict = ['id' => '12345'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 4 -------------------------------------------------------------------------------------->
-
-        // reuse $callback from #3
-
-        $method = 'GET';
-        $uri = '/user/NaN';
-        $handler = 'handler2';
-        $argDict = ['name' => 'NaN'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 5 -------------------------------------------------------------------------------------->
-
-        // reuse $callback from #4
-
-        $method = 'GET';
-        $uri = '/user/rdlowrey/12345';
-        $handler = 'handler0';
-        $argDict = ['name' => 'rdlowrey', 'id' => '12345'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 6 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler0');
-            $r->addRoute('GET', '/user/12345/extension', 'handler1');
-            $r->addRoute('GET', '/user/{id:[0-9]+}.{extension}', 'handler2');
-
-        };
-
-        $method = 'GET';
-        $uri = '/user/12345.svg';
-        $handler = 'handler2';
-        $argDict = ['id' => '12345', 'extension' => 'svg'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 7 ----- Test GET method fallback on HEAD route miss ------------------------------------>
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}', 'handler0');
-            $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler1');
-            $r->addRoute('GET', '/static0', 'handler2');
-            $r->addRoute('GET', '/static1', 'handler3');
-            $r->addRoute('HEAD', '/static1', 'handler4');
-        };
-
-        $method = 'HEAD';
-        $uri = '/user/rdlowrey';
-        $handler = 'handler0';
-        $argDict = ['name' => 'rdlowrey'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 8 ----- Test GET method fallback on HEAD route miss ------------------------------------>
-
-        // reuse $callback from #7
-
-        $method = 'HEAD';
-        $uri = '/user/rdlowrey/1234';
-        $handler = 'handler1';
-        $argDict = ['name' => 'rdlowrey', 'id' => '1234'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 9 ----- Test GET method fallback on HEAD route miss ------------------------------------>
-
-        // reuse $callback from #8
-
-        $method = 'HEAD';
-        $uri = '/static0';
-        $handler = 'handler2';
-        $argDict = [];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 10 ---- Test existing HEAD route used if available (no fallback) ----------------------->
-
-        // reuse $callback from #9
-
-        $method = 'HEAD';
-        $uri = '/static1';
-        $handler = 'handler4';
-        $argDict = [];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 11 ---- More specified routes are not shadowed by less specific of another method ------>
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}', 'handler0');
-            $r->addRoute('POST', '/user/{name:[a-z]+}', 'handler1');
-        };
-
-        $method = 'POST';
-        $uri = '/user/rdlowrey';
-        $handler = 'handler1';
-        $argDict = ['name' => 'rdlowrey'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 12 ---- Handler of more specific routes is used, if it occurs first -------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}', 'handler0');
-            $r->addRoute('POST', '/user/{name:[a-z]+}', 'handler1');
-            $r->addRoute('POST', '/user/{name}', 'handler2');
-        };
-
-        $method = 'POST';
-        $uri = '/user/rdlowrey';
-        $handler = 'handler1';
-        $argDict = ['name' => 'rdlowrey'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 13 ---- Route with constant suffix ----------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}', 'handler0');
-            $r->addRoute('GET', '/user/{name}/edit', 'handler1');
-        };
-
-        $method = 'GET';
-        $uri = '/user/rdlowrey/edit';
-        $handler = 'handler1';
-        $argDict = ['name' => 'rdlowrey'];
-
-        $cases[] = [$method, $uri, $callback, $handler, $argDict];
-
-        // 14 ---- Handle multiple methods with the same handler ---------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute(['GET', 'POST'], '/user', 'handlerGetPost');
-            $r->addRoute(['DELETE'], '/user', 'handlerDelete');
-            $r->addRoute([], '/user', 'handlerNone');
-        };
-
-        $argDict = [];
-        $cases[] = ['GET', '/user', $callback, 'handlerGetPost', $argDict];
-        $cases[] = ['POST', '/user', $callback, 'handlerGetPost', $argDict];
-        $cases[] = ['DELETE', '/user', $callback, 'handlerDelete', $argDict];
-
-        // 15 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('POST', '/user.json', 'handler0');
-            $r->addRoute('GET', '/{entity}.json', 'handler1');
-        };
-
-        $cases[] = ['GET', '/user.json', $callback, 'handler1', ['entity' => 'user']];
-
-        // 16 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '', 'handler0');
-        };
-
-        $cases[] = ['GET', '', $callback, 'handler0', []];
-
-        // 17 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('HEAD', '/a/{foo}', 'handler0');
-            $r->addRoute('GET', '/b/{foo}', 'handler1');
-        };
-
-        $cases[] = ['HEAD', '/b/bar', $callback, 'handler1', ['foo' => 'bar']];
-
-        // 18 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('HEAD', '/a', 'handler0');
-            $r->addRoute('GET', '/b', 'handler1');
-        };
-
-        $cases[] = ['HEAD', '/b', $callback, 'handler1', []];
-
-        // 19 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/foo', 'handler0');
-            $r->addRoute('HEAD', '/{bar}', 'handler1');
-        };
-
-        $cases[] = ['HEAD', '/foo', $callback, 'handler1', ['bar' => 'foo']];
-
-        // 20 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('*', '/user', 'handler0');
-            $r->addRoute('*', '/{user}', 'handler1');
-            $r->addRoute('GET', '/user', 'handler2');
-        };
-
-        $cases[] = ['GET', '/user', $callback, 'handler2', []];
-
-        // 21 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('*', '/user', 'handler0');
-            $r->addRoute('GET', '/user', 'handler1');
-        };
-
-        $cases[] = ['POST', '/user', $callback, 'handler0', []];
-
-        // 22 ----
-
-        $cases[] = ['HEAD', '/user', $callback, 'handler1', []];
-
-        // 23 ----
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/{bar}', 'handler0');
-            $r->addRoute('*', '/foo', 'handler1');
-        };
-
-        $cases[] = ['GET', '/foo', $callback, 'handler0', ['bar' => 'foo']];
-
-        // x -------------------------------------------------------------------------------------->
-
-        return $cases;
-    }
-
-    public function provideNotFoundDispatchCases() {
-        $cases = [];
-
-        // 0 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/resource/123/456', 'handler0');
-        };
-
-        $method = 'GET';
-        $uri = '/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 1 -------------------------------------------------------------------------------------->
-
-        // reuse callback from #0
-        $method = 'POST';
-        $uri = '/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 2 -------------------------------------------------------------------------------------->
-
-        // reuse callback from #1
-        $method = 'PUT';
-        $uri = '/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 3 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/handler0', 'handler0');
-            $r->addRoute('GET', '/handler1', 'handler1');
-            $r->addRoute('GET', '/handler2', 'handler2');
-        };
-
-        $method = 'GET';
-        $uri = '/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 4 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0');
-            $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1');
-            $r->addRoute('GET', '/user/{name}', 'handler2');
-        };
-
-        $method = 'GET';
-        $uri = '/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 5 -------------------------------------------------------------------------------------->
-
-        // reuse callback from #4
-        $method = 'GET';
-        $uri = '/user/rdlowrey/12345/not-found';
-
-        $cases[] = [$method, $uri, $callback];
-
-        // 6 -------------------------------------------------------------------------------------->
-
-        // reuse callback from #5
-        $method = 'HEAD';
-
-        $cases[] = array($method, $uri, $callback);
-
-        // x -------------------------------------------------------------------------------------->
-
-        return $cases;
-    }
-
-    public function provideMethodNotAllowedDispatchCases() {
-        $cases = [];
-
-        // 0 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/resource/123/456', 'handler0');
-        };
-
-        $method = 'POST';
-        $uri = '/resource/123/456';
-        $allowedMethods = ['GET'];
-
-        $cases[] = [$method, $uri, $callback, $allowedMethods];
-
-        // 1 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/resource/123/456', 'handler0');
-            $r->addRoute('POST', '/resource/123/456', 'handler1');
-            $r->addRoute('PUT', '/resource/123/456', 'handler2');
-            $r->addRoute('*', '/', 'handler3');
-        };
-
-        $method = 'DELETE';
-        $uri = '/resource/123/456';
-        $allowedMethods = ['GET', 'POST', 'PUT'];
-
-        $cases[] = [$method, $uri, $callback, $allowedMethods];
-
-        // 2 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0');
-            $r->addRoute('POST', '/user/{name}/{id:[0-9]+}', 'handler1');
-            $r->addRoute('PUT', '/user/{name}/{id:[0-9]+}', 'handler2');
-            $r->addRoute('PATCH', '/user/{name}/{id:[0-9]+}', 'handler3');
-        };
-
-        $method = 'DELETE';
-        $uri = '/user/rdlowrey/42';
-        $allowedMethods = ['GET', 'POST', 'PUT', 'PATCH'];
-
-        $cases[] = [$method, $uri, $callback, $allowedMethods];
-
-        // 3 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('POST', '/user/{name}', 'handler1');
-            $r->addRoute('PUT', '/user/{name:[a-z]+}', 'handler2');
-            $r->addRoute('PATCH', '/user/{name:[a-z]+}', 'handler3');
-        };
-
-        $method = 'GET';
-        $uri = '/user/rdlowrey';
-        $allowedMethods = ['POST', 'PUT', 'PATCH'];
-
-        $cases[] = [$method, $uri, $callback, $allowedMethods];
-
-        // 4 -------------------------------------------------------------------------------------->
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute(['GET', 'POST'], '/user', 'handlerGetPost');
-            $r->addRoute(['DELETE'], '/user', 'handlerDelete');
-            $r->addRoute([], '/user', 'handlerNone');
-        };
-
-        $cases[] = ['PUT', '/user', $callback, ['GET', 'POST', 'DELETE']];
-
-        // 5
-
-        $callback = function(RouteCollector $r) {
-            $r->addRoute('POST', '/user.json', 'handler0');
-            $r->addRoute('GET', '/{entity}.json', 'handler1');
-        };
-
-        $cases[] = ['PUT', '/user.json', $callback, ['POST', 'GET']];
-
-        // x -------------------------------------------------------------------------------------->
-
-        return $cases;
-    }
-
-}
diff --git a/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php b/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php
deleted file mode 100644
index 74820fc..0000000
--- a/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class GroupCountBasedTest extends DispatcherTest {
-    protected function getDispatcherClass() {
-        return 'FastRoute\\Dispatcher\\GroupCountBased';
-    }
-
-    protected function getDataGeneratorClass() {
-        return 'FastRoute\\DataGenerator\\GroupCountBased';
-    }
-}
diff --git a/vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php b/vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php
deleted file mode 100644
index c3d4f8d..0000000
--- a/vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class GroupPosBasedTest extends DispatcherTest {
-    protected function getDispatcherClass() {
-        return 'FastRoute\\Dispatcher\\GroupPosBased';
-    }
-
-    protected function getDataGeneratorClass() {
-        return 'FastRoute\\DataGenerator\\GroupPosBased';
-    }
-}
diff --git a/vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php b/vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php
deleted file mode 100644
index 04b0af9..0000000
--- a/vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace FastRoute\Dispatcher;
-
-class MarkBasedTest extends DispatcherTest {
-    public function setUp() {
-        preg_match('/(*MARK:A)a/', 'a', $matches);
-        if (!isset($matches['MARK'])) {
-            $this->markTestSkipped('PHP 5.6 required for MARK support');
-        }
-    }
-
-    protected function getDispatcherClass() {
-        return 'FastRoute\\Dispatcher\\MarkBased';
-    }
-
-    protected function getDataGeneratorClass() {
-        return 'FastRoute\\DataGenerator\\MarkBased';
-    }
-}
diff --git a/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php b/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php
deleted file mode 100644
index 7bc6ebb..0000000
--- a/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace FastRoute;
-
-class HackTypecheckerTest extends \PhpUnit_Framework_TestCase {
-    const SERVER_ALREADY_RUNNING_CODE = 77;
-    public function testTypechecks($recurse = true) {
-        if (!defined('HHVM_VERSION')) {
-            $this->markTestSkipped("HHVM only");
-        }
-        if (!version_compare(HHVM_VERSION, '3.9.0', '>=')) {
-          $this->markTestSkipped('classname<T> requires HHVM 3.9+');
-        }
-
-        // The typechecker recurses the whole tree, so it makes sure
-        // that everything in fixtures/ is valid when this runs.
-
-        $output = array();
-        $exit_code = null;
-        exec(
-            'hh_server --check '.escapeshellarg(__DIR__.'/../../').' 2>&1',
-            $output,
-            $exit_code
-        );
-        if ($exit_code === self::SERVER_ALREADY_RUNNING_CODE) {
-            $this->assertTrue(
-              $recurse,
-              "Typechecker still running after running hh_client stop"
-            );
-            // Server already running - 3.10 => 3.11 regression:
-            // https://github.com/facebook/hhvm/issues/6646
-            exec('hh_client stop 2>/dev/null');
-            $this->testTypechecks(/* recurse = */ false);
-            return;
-
-        }
-        $this->assertSame(0, $exit_code, implode("\n", $output));
-    }
-}
diff --git a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php b/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php
deleted file mode 100644
index 05a9af2..0000000
--- a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?hh
-
-namespace FastRoute\TestFixtures;
-
-function all_options_simple(): \FastRoute\Dispatcher {
-    return \FastRoute\simpleDispatcher(
-      $collector ==> {},
-      shape(
-        'routeParser' => \FastRoute\RouteParser\Std::class,
-        'dataGenerator' => \FastRoute\DataGenerator\GroupCountBased::class,
-        'dispatcher' => \FastRoute\Dispatcher\GroupCountBased::class,
-        'routeCollector' => \FastRoute\RouteCollector::class,
-      ),
-    );
-}
-
-function all_options_cached(): \FastRoute\Dispatcher {
-    return \FastRoute\cachedDispatcher(
-      $collector ==> {},
-      shape(
-        'routeParser' => \FastRoute\RouteParser\Std::class,
-        'dataGenerator' => \FastRoute\DataGenerator\GroupCountBased::class,
-        'dispatcher' => \FastRoute\Dispatcher\GroupCountBased::class,
-        'routeCollector' => \FastRoute\RouteCollector::class,
-        'cacheFile' => '/dev/null',
-        'cacheDisabled' => false,
-      ),
-    );
-}
diff --git a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php b/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php
deleted file mode 100644
index 61eb541..0000000
--- a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?hh
-
-namespace FastRoute\TestFixtures;
-
-function empty_options_simple(): \FastRoute\Dispatcher {
-    return \FastRoute\simpleDispatcher($collector ==> {}, shape());
-}
-
-function empty_options_cached(): \FastRoute\Dispatcher {
-    return \FastRoute\cachedDispatcher($collector ==> {}, shape());
-}
diff --git a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php b/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php
deleted file mode 100644
index 44b5422..0000000
--- a/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?hh
-
-namespace FastRoute\TestFixtures;
-
-function no_options_simple(): \FastRoute\Dispatcher {
-    return \FastRoute\simpleDispatcher($collector ==> {});
-}
-
-function no_options_cached(): \FastRoute\Dispatcher {
-    return \FastRoute\cachedDispatcher($collector ==> {});
-}
diff --git a/vendor/nikic/fast-route/test/RouteParser/StdTest.php b/vendor/nikic/fast-route/test/RouteParser/StdTest.php
deleted file mode 100644
index 41f194b..0000000
--- a/vendor/nikic/fast-route/test/RouteParser/StdTest.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-namespace FastRoute\RouteParser;
-
-class StdTest extends \PhpUnit_Framework_TestCase {
-    /** @dataProvider provideTestParse */
-    public function testParse($routeString, $expectedRouteDatas) {
-        $parser = new Std();
-        $routeDatas = $parser->parse($routeString);
-        $this->assertSame($expectedRouteDatas, $routeDatas);
-    }
-
-    /** @dataProvider provideTestParseError */
-    public function testParseError($routeString, $expectedExceptionMessage) {
-        $parser = new Std();
-        $this->setExpectedException('FastRoute\\BadRouteException', $expectedExceptionMessage);
-        $parser->parse($routeString);
-    }
-
-    public function provideTestParse() {
-        return [
-            [
-                '/test',
-                [
-                    ['/test'],
-                ]
-            ],
-            [
-                '/test/{param}',
-                [
-                    ['/test/', ['param', '[^/]+']],
-                ]
-            ],
-            [
-                '/te{ param }st',
-                [
-                    ['/te', ['param', '[^/]+'], 'st']
-                ]
-            ],
-            [
-                '/test/{param1}/test2/{param2}',
-                [
-                    ['/test/', ['param1', '[^/]+'], '/test2/', ['param2', '[^/]+']]
-                ]
-            ],
-            [
-                '/test/{param:\d+}',
-                [
-                    ['/test/', ['param', '\d+']]
-                ]
-            ],
-            [
-                '/test/{ param : \d{1,9} }',
-                [
-                    ['/test/', ['param', '\d{1,9}']]
-                ]
-            ],
-            [
-                '/test[opt]',
-                [
-                    ['/test'],
-                    ['/testopt'],
-                ]
-            ],
-            [
-                '/test[/{param}]',
-                [
-                    ['/test'],
-                    ['/test/', ['param', '[^/]+']],
-                ]
-            ],
-            [
-                '/{param}[opt]',
-                [
-                    ['/', ['param', '[^/]+']],
-                    ['/', ['param', '[^/]+'], 'opt']
-                ]
-            ],
-            [
-                '/test[/{name}[/{id:[0-9]+}]]',
-                [
-                    ['/test'],
-                    ['/test/', ['name', '[^/]+']],
-                    ['/test/', ['name', '[^/]+'], '/', ['id', '[0-9]+']],
-                ]
-            ],
-            [
-                '',
-                [
-                    [''],
-                ]
-            ],
-            [
-                '[test]',
-                [
-                    [''],
-                    ['test'],
-                ]
-            ],
-            [
-                '/{foo-bar}',
-                [
-                    ['/', ['foo-bar', '[^/]+']]
-                ]
-            ],
-            [
-                '/{_foo:.*}',
-                [
-                    ['/', ['_foo', '.*']]
-                ]
-            ],
-        ];
-    }
-
-    public function provideTestParseError() {
-        return [
-            [
-                '/test[opt',
-                "Number of opening '[' and closing ']' does not match"
-            ],
-            [
-                '/test[opt[opt2]',
-                "Number of opening '[' and closing ']' does not match"
-            ],
-            [
-                '/testopt]',
-                "Number of opening '[' and closing ']' does not match"
-            ],
-            [
-                '/test[]',
-                "Empty optional part"
-            ],
-            [
-                '/test[[opt]]',
-                "Empty optional part"
-            ],
-            [
-                '[[test]]',
-                "Empty optional part"
-            ],
-            [
-                '/test[/opt]/required',
-                "Optional segments can only occur at the end of a route"
-            ],
-        ];
-    }
-}
diff --git a/vendor/nikic/fast-route/test/bootstrap.php b/vendor/nikic/fast-route/test/bootstrap.php
deleted file mode 100644
index 27e6d4c..0000000
--- a/vendor/nikic/fast-route/test/bootstrap.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-require_once __DIR__ . '/../src/functions.php';
-
-spl_autoload_register(function($class) {
-    if (strpos($class, 'FastRoute\\') === 0) {
-        $dir = strcasecmp(substr($class, -4), 'Test') ? 'src/' : 'test/';
-        $name = substr($class, strlen('FastRoute'));
-        require __DIR__ . '/../' . $dir . strtr($name, '\\', DIRECTORY_SEPARATOR) . '.php';
-    }
-});
diff --git a/vendor/pimple/pimple/.gitignore b/vendor/pimple/pimple/.gitignore
deleted file mode 100644
index c089b09..0000000
--- a/vendor/pimple/pimple/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-phpunit.xml
-composer.lock
-/vendor/
diff --git a/vendor/pimple/pimple/.travis.yml b/vendor/pimple/pimple/.travis.yml
deleted file mode 100644
index 5f8bb7c..0000000
--- a/vendor/pimple/pimple/.travis.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-language: php
-
-env:
-  matrix:
-    - PIMPLE_EXT=no
-    - PIMPLE_EXT=yes
-  global:
-    - REPORT_EXIT_STATUS=1
-
-php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
-
-before_script:
-  - composer self-update
-  - COMPOSER_ROOT_VERSION=dev-master composer dump-autoload
-  - 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
-  - cd ../..
-  - phpunit
-
-matrix:
-  exclude:
-    - php: hhvm
-      env: PIMPLE_EXT=yes
diff --git a/vendor/pimple/pimple/CHANGELOG b/vendor/pimple/pimple/CHANGELOG
deleted file mode 100644
index cc67997..0000000
--- a/vendor/pimple/pimple/CHANGELOG
+++ /dev/null
@@ -1,35 +0,0 @@
-* 3.0.2 (2015-09-11)
-
- * refactored the C extension
- * minor non-significant changes
-
-* 3.0.1 (2015-07-30)
-
- * simplified some code
- * fixed a segfault in the C extension
-
-* 3.0.0 (2014-07-24)
-
- * removed the Pimple class alias (use Pimple\Container instead)
-
-* 2.1.1 (2014-07-24)
-
- * fixed compiler warnings for the C extension
- * fixed code when dealing with circular references
-
-* 2.1.0 (2014-06-24)
-
- * moved the Pimple to Pimple\Container (with a BC layer -- Pimple is now a
-   deprecated alias which will be removed in Pimple 3.0)
- * added Pimple\ServiceProviderInterface (and Pimple::register())
-
-* 2.0.0 (2014-02-10)
-
- * changed extend to automatically re-assign the extended service and keep it as shared or factory
-   (to keep BC, extend still returns the extended service)
- * changed services to be shared by default (use factory() for factory
-   services)
-
-* 1.0.0
-
- * initial version
diff --git a/vendor/pimple/pimple/LICENSE b/vendor/pimple/pimple/LICENSE
deleted file mode 100644
index d7949e2..0000000
--- a/vendor/pimple/pimple/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2009-2015 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/pimple/pimple/README.rst b/vendor/pimple/pimple/README.rst
deleted file mode 100644
index 93fb35a..0000000
--- a/vendor/pimple/pimple/README.rst
+++ /dev/null
@@ -1,201 +0,0 @@
-Pimple
-======
-
-.. caution::
-
-    This is the documentation for Pimple 3.x. If you are using Pimple 1.x, read
-    the `Pimple 1.x documentation`_. Reading the Pimple 1.x code is also a good
-    way to learn more about how to create a simple Dependency Injection
-    Container (recent versions of Pimple are more focused on performance).
-
-Pimple is a small Dependency Injection Container for PHP.
-
-Installation
-------------
-
-Before using Pimple in your project, add it to your ``composer.json`` file:
-
-.. code-block:: bash
-
-    $ ./composer.phar require pimple/pimple ~3.0
-
-Alternatively, Pimple is also available as a PHP C extension:
-
-.. code-block:: bash
-
-    $ git clone https://github.com/silexphp/Pimple
-    $ cd Pimple/ext/pimple
-    $ phpize
-    $ ./configure
-    $ make
-    $ make install
-
-Usage
------
-
-Creating a container is a matter of creating a ``Container`` instance:
-
-.. code-block:: php
-
-    use Pimple\Container;
-
-    $container = new Container();
-
-As many other dependency injection containers, Pimple manages two different
-kind of data: **services** and **parameters**.
-
-Defining Services
-~~~~~~~~~~~~~~~~~
-
-A service is an object that does something as part of a larger system. Examples
-of services: a database connection, a templating engine, or a mailer. Almost
-any **global** object can be a service.
-
-Services are defined by **anonymous functions** that return an instance of an
-object:
-
-.. code-block:: php
-
-    // define some services
-    $container['session_storage'] = function ($c) {
-        return new SessionStorage('SESSION_ID');
-    };
-
-    $container['session'] = function ($c) {
-        return new Session($c['session_storage']);
-    };
-
-Notice that the anonymous function has access to the current container
-instance, allowing references to other services or parameters.
-
-As objects are only created when you get them, the order of the definitions
-does not matter.
-
-Using the defined services is also very easy:
-
-.. code-block:: php
-
-    // get the session object
-    $session = $container['session'];
-
-    // the above call is roughly equivalent to the following code:
-    // $storage = new SessionStorage('SESSION_ID');
-    // $session = new Session($storage);
-
-Defining Factory Services
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default, each time you get a service, Pimple returns the **same instance**
-of it. If you want a different instance to be returned for all calls, wrap your
-anonymous function with the ``factory()`` method
-
-.. code-block:: php
-
-    $container['session'] = $container->factory(function ($c) {
-        return new Session($c['session_storage']);
-    });
-
-Now, each call to ``$container['session']`` returns a new instance of the
-session.
-
-Defining Parameters
-~~~~~~~~~~~~~~~~~~~
-
-Defining a parameter allows to ease the configuration of your container from
-the outside and to store global values:
-
-.. code-block:: php
-
-    // define some parameters
-    $container['cookie_name'] = 'SESSION_ID';
-    $container['session_storage_class'] = 'SessionStorage';
-
-If you change the ``session_storage`` service definition like below:
-
-.. code-block:: php
-
-    $container['session_storage'] = function ($c) {
-        return new $c['session_storage_class']($c['cookie_name']);
-    };
-
-You can now easily change the cookie name by overriding the
-``session_storage_class`` parameter instead of redefining the service
-definition.
-
-Protecting Parameters
-~~~~~~~~~~~~~~~~~~~~~
-
-Because Pimple sees anonymous functions as service definitions, you need to
-wrap anonymous functions with the ``protect()`` method to store them as
-parameters:
-
-.. code-block:: php
-
-    $container['random_func'] = $container->protect(function () {
-        return rand();
-    });
-
-Modifying Services after Definition
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In some cases you may want to modify a service definition after it has been
-defined. You can use the ``extend()`` method to define additional code to be
-run on your service just after it is created:
-
-.. code-block:: php
-
-    $container['session_storage'] = function ($c) {
-        return new $c['session_storage_class']($c['cookie_name']);
-    };
-
-    $container->extend('session_storage', function ($storage, $c) {
-        $storage->...();
-
-        return $storage;
-    });
-
-The first argument is the name of the service to extend, the second a function
-that gets access to the object instance and the container.
-
-Extending a Container
-~~~~~~~~~~~~~~~~~~~~~
-
-If you use the same libraries over and over, you might want to reuse some
-services from one project to the next one; package your services into a
-**provider** by implementing ``Pimple\ServiceProviderInterface``:
-
-.. code-block:: php
-
-    use Pimple\Container;
-
-    class FooProvider implements Pimple\ServiceProviderInterface
-    {
-        public function register(Container $pimple)
-        {
-            // register some services and parameters
-            // on $pimple
-        }
-    }
-
-Then, register the provider on a Container:
-
-.. code-block:: php
-
-    $pimple->register(new FooProvider());
-
-Fetching the Service Creation Function
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-When you access an object, Pimple automatically calls the anonymous function
-that you defined, which creates the service object for you. If you want to get
-raw access to this function, you can use the ``raw()`` method:
-
-.. code-block:: php
-
-    $container['session'] = function ($c) {
-        return new Session($c['session_storage']);
-    };
-
-    $sessionFunction = $container->raw('session');
-
-.. _Pimple 1.x documentation: https://github.com/silexphp/Pimple/tree/1.1
diff --git a/vendor/pimple/pimple/composer.json b/vendor/pimple/pimple/composer.json
deleted file mode 100644
index a5268f1..0000000
--- a/vendor/pimple/pimple/composer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "name": "pimple/pimple",
-    "type": "library",
-    "description": "Pimple, a simple Dependency Injection Container",
-    "keywords": ["dependency injection", "container"],
-    "homepage": "http://pimple.sensiolabs.org",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-0": { "Pimple": "src/" }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/pimple/pimple/ext/pimple/.gitignore b/vendor/pimple/pimple/ext/pimple/.gitignore
deleted file mode 100644
index 1861088..0000000
--- 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 7b39eb2..0000000
--- 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 c9ba17d..0000000
--- 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 39857b3..0000000
--- 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 49431f0..0000000
--- a/vendor/pimple/pimple/ext/pimple/php_pimple.h
+++ /dev/null
@@ -1,121 +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.0.2"
-#define PIMPLE_NS "Pimple"
-
-#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM   5
-#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
-
-zend_module_entry *get_module(void);
-
-PHP_MINIT_FUNCTION(pimple);
-PHP_MINFO_FUNCTION(pimple);
-
-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 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 239c01d..0000000
--- a/vendor/pimple/pimple/ext/pimple/pimple.c
+++ /dev/null
@@ -1,922 +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;
-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);
-
-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()
-
-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_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
-};
-
-static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = {
-	PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register)
-	PHP_FE_END
-};
-
-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);
-			zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot override frozen service \"%s\".", Z_STRVAL_P(offset));
-			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);
-			zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot override frozen service \"%ld\".", index);
-			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) {
-			zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset));
-			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 everytime 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(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(spl_ce_InvalidArgumentException, "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) {
-				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset));
-				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) {
-				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset));
-				RETURN_NULL();
-			}
-			if (value->type != PIMPLE_IS_SERVICE) {
-				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" does not contain an object definition.", Z_STRVAL_P(offset));
-				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) {
-				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%ld\" is not defined.", index);
-				RETURN_NULL();
-			}
-			if (value->type != PIMPLE_IS_SERVICE) {
-				zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%ld\" does not contain an object definition.", index);
-				RETURN_NULL();
-			}
-		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(spl_ce_InvalidArgumentException, "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(spl_ce_InvalidArgumentException, "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 || !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_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce;
-	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 d234e17..0000000
--- 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 0809ea2..0000000
--- 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 7b56d2c..0000000
--- 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 a22cfa3..0000000
--- 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 1e1d251..0000000
--- 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 0479ee0..0000000
--- 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 cfe8a11..0000000
--- 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 5aac683..0000000
--- 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 db7eeec..0000000
--- 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 bb05ea2..0000000
--- 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 badce01..0000000
--- 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 6682ab8..0000000
--- 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 4c6ac48..0000000
--- 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 f419958..0000000
--- 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 ac93721..0000000
--- 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 314f008..0000000
--- 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 e55edb0..0000000
--- 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 bac23ce..0000000
--- 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 8f881d6..0000000
--- 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 27c12a1..0000000
--- 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 28a9aec..0000000
--- 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 8f983e6..0000000
--- 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 aec541f..0000000
--- 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
deleted file mode 100644
index 5c8d487..0000000
--- a/vendor/pimple/pimple/phpunit.xml.dist
+++ /dev/null
@@ -1,14 +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/4.1/phpunit.xsd"
-         backupGlobals="false"
-         colors="true"
-         bootstrap="vendor/autoload.php"
->
-    <testsuites>
-        <testsuite name="Pimple Test Suite">
-            <directory>./src/Pimple/Tests</directory>
-        </testsuite>
-    </testsuites>
-</phpunit>
diff --git a/vendor/pimple/pimple/src/Pimple/Container.php b/vendor/pimple/pimple/src/Pimple/Container.php
deleted file mode 100644
index c976431..0000000
--- a/vendor/pimple/pimple/src/Pimple/Container.php
+++ /dev/null
@@ -1,282 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple;
-
-/**
- * Container main class.
- *
- * @author  Fabien Potencier
- */
-class Container implements \ArrayAccess
-{
-    private $values = array();
-    private $factories;
-    private $protected;
-    private $frozen = array();
-    private $raw = array();
-    private $keys = array();
-
-    /**
-     * Instantiate the container.
-     *
-     * Objects and parameters can be passed as argument to the constructor.
-     *
-     * @param array $values The parameters or objects.
-     */
-    public function __construct(array $values = array())
-    {
-        $this->factories = new \SplObjectStorage();
-        $this->protected = new \SplObjectStorage();
-
-        foreach ($values as $key => $value) {
-            $this->offsetSet($key, $value);
-        }
-    }
-
-    /**
-     * Sets a parameter or an object.
-     *
-     * Objects must be defined as Closures.
-     *
-     * Allowing any PHP callable leads to difficult to debug problems
-     * as function names (strings) are callable (creating a function with
-     * the same name as an existing parameter would break your container).
-     *
-     * @param string $id    The unique identifier for the parameter or object
-     * @param mixed  $value The value of the parameter or a closure to define an object
-     *
-     * @throws \RuntimeException Prevent override of a frozen service
-     */
-    public function offsetSet($id, $value)
-    {
-        if (isset($this->frozen[$id])) {
-            throw new \RuntimeException(sprintf('Cannot override frozen service "%s".', $id));
-        }
-
-        $this->values[$id] = $value;
-        $this->keys[$id] = true;
-    }
-
-    /**
-     * Gets a parameter or an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return mixed The value of the parameter or an object
-     *
-     * @throws \InvalidArgumentException if the identifier is not defined
-     */
-    public function offsetGet($id)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
-        }
-
-        if (
-            isset($this->raw[$id])
-            || !is_object($this->values[$id])
-            || isset($this->protected[$this->values[$id]])
-            || !method_exists($this->values[$id], '__invoke')
-        ) {
-            return $this->values[$id];
-        }
-
-        if (isset($this->factories[$this->values[$id]])) {
-            return $this->values[$id]($this);
-        }
-
-        $raw = $this->values[$id];
-        $val = $this->values[$id] = $raw($this);
-        $this->raw[$id] = $raw;
-
-        $this->frozen[$id] = true;
-
-        return $val;
-    }
-
-    /**
-     * Checks if a parameter or an object is set.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return bool
-     */
-    public function offsetExists($id)
-    {
-        return isset($this->keys[$id]);
-    }
-
-    /**
-     * Unsets a parameter or an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     */
-    public function offsetUnset($id)
-    {
-        if (isset($this->keys[$id])) {
-            if (is_object($this->values[$id])) {
-                unset($this->factories[$this->values[$id]], $this->protected[$this->values[$id]]);
-            }
-
-            unset($this->values[$id], $this->frozen[$id], $this->raw[$id], $this->keys[$id]);
-        }
-    }
-
-    /**
-     * Marks a callable as being a factory service.
-     *
-     * @param callable $callable A service definition to be used as a factory
-     *
-     * @return callable The passed callable
-     *
-     * @throws \InvalidArgumentException Service definition has to be a closure of an invokable object
-     */
-    public function factory($callable)
-    {
-        if (!method_exists($callable, '__invoke')) {
-            throw new \InvalidArgumentException('Service definition is not a Closure or invokable object.');
-        }
-
-        $this->factories->attach($callable);
-
-        return $callable;
-    }
-
-    /**
-     * Protects a callable from being interpreted as a service.
-     *
-     * This is useful when you want to store a callable as a parameter.
-     *
-     * @param callable $callable A callable to protect from being evaluated
-     *
-     * @return callable The passed callable
-     *
-     * @throws \InvalidArgumentException Service definition has to be a closure of an invokable object
-     */
-    public function protect($callable)
-    {
-        if (!method_exists($callable, '__invoke')) {
-            throw new \InvalidArgumentException('Callable is not a Closure or invokable object.');
-        }
-
-        $this->protected->attach($callable);
-
-        return $callable;
-    }
-
-    /**
-     * Gets a parameter or the closure defining an object.
-     *
-     * @param string $id The unique identifier for the parameter or object
-     *
-     * @return mixed The value of the parameter or the closure defining an object
-     *
-     * @throws \InvalidArgumentException if the identifier is not defined
-     */
-    public function raw($id)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
-        }
-
-        if (isset($this->raw[$id])) {
-            return $this->raw[$id];
-        }
-
-        return $this->values[$id];
-    }
-
-    /**
-     * Extends an object definition.
-     *
-     * Useful when you want to extend an existing object definition,
-     * without necessarily loading that object.
-     *
-     * @param string   $id       The unique identifier for the object
-     * @param callable $callable A service definition to extend the original
-     *
-     * @return callable The wrapped callable
-     *
-     * @throws \InvalidArgumentException if the identifier is not defined or not a service definition
-     */
-    public function extend($id, $callable)
-    {
-        if (!isset($this->keys[$id])) {
-            throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
-        }
-
-        if (!is_object($this->values[$id]) || !method_exists($this->values[$id], '__invoke')) {
-            throw new \InvalidArgumentException(sprintf('Identifier "%s" does not contain an object definition.', $id));
-        }
-
-        if (!is_object($callable) || !method_exists($callable, '__invoke')) {
-            throw new \InvalidArgumentException('Extension service definition is not a Closure or invokable object.');
-        }
-
-        $factory = $this->values[$id];
-
-        $extended = function ($c) use ($callable, $factory) {
-            return $callable($factory($c), $c);
-        };
-
-        if (isset($this->factories[$factory])) {
-            $this->factories->detach($factory);
-            $this->factories->attach($extended);
-        }
-
-        return $this[$id] = $extended;
-    }
-
-    /**
-     * Returns all defined value names.
-     *
-     * @return array An array of value names
-     */
-    public function keys()
-    {
-        return array_keys($this->values);
-    }
-
-    /**
-     * Registers a service provider.
-     *
-     * @param ServiceProviderInterface $provider A ServiceProviderInterface instance
-     * @param array                    $values   An array of values that customizes the provider
-     *
-     * @return static
-     */
-    public function register(ServiceProviderInterface $provider, array $values = array())
-    {
-        $provider->register($this);
-
-        foreach ($values as $key => $value) {
-            $this[$key] = $value;
-        }
-
-        return $this;
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
deleted file mode 100644
index c004594..0000000
--- a/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple;
-
-/**
- * Pimple service provider interface.
- *
- * @author  Fabien Potencier
- * @author  Dominik Zogg
- */
-interface ServiceProviderInterface
-{
-    /**
-     * Registers services on the given container.
-     *
-     * This method should only be used to configure services and parameters.
-     * It should not get services.
-     *
-     * @param Container $pimple A container instance
-     */
-    public function register(Container $pimple);
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
deleted file mode 100644
index aba453b..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-class Invokable
-{
-    public function __invoke($value = null)
-    {
-        $service = new Service();
-        $service->value = $value;
-
-        return $service;
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
deleted file mode 100644
index 33cd4e5..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-class NonInvokable
-{
-    public function __call($a, $b)
-    {
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
deleted file mode 100644
index 0c910af..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-use Pimple\Container;
-use Pimple\ServiceProviderInterface;
-
-class PimpleServiceProvider implements ServiceProviderInterface
-{
-    /**
-     * Registers services on the given container.
-     *
-     * This method should only be used to configure services and parameters.
-     * It should not get services.
-     *
-     * @param Container $pimple An Container instance
-     */
-    public function register(Container $pimple)
-    {
-        $pimple['param'] = 'value';
-
-        $pimple['service'] = function () {
-            return new Service();
-        };
-
-        $pimple['factory'] = $pimple->factory(function () {
-            return new Service();
-        });
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php b/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
deleted file mode 100644
index d71b184..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests\Fixtures;
-
-/**
- * @author  Igor Wiedler <igor@wiedler.ch>
- */
-class Service
-{
-    public $value;
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
deleted file mode 100644
index 8e5c4c7..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests;
-
-use Pimple\Container;
-
-/**
- * @author  Dominik Zogg <dominik.zogg@gmail.com>
- */
-class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
-{
-    public function testProvider()
-    {
-        $pimple = new Container();
-
-        $pimpleServiceProvider = new Fixtures\PimpleServiceProvider();
-        $pimpleServiceProvider->register($pimple);
-
-        $this->assertEquals('value', $pimple['param']);
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
-        $serviceOne = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-
-    public function testProviderWithRegisterMethod()
-    {
-        $pimple = new Container();
-
-        $pimple->register(new Fixtures\PimpleServiceProvider(), array(
-            'anotherParameter' => 'anotherValue',
-        ));
-
-        $this->assertEquals('value', $pimple['param']);
-        $this->assertEquals('anotherValue', $pimple['anotherParameter']);
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-
-        $serviceOne = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['factory'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-}
diff --git a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
deleted file mode 100644
index 918f620..0000000
--- a/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
+++ /dev/null
@@ -1,440 +0,0 @@
-<?php
-
-/*
- * This file is part of Pimple.
- *
- * Copyright (c) 2009 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.
- */
-
-namespace Pimple\Tests;
-
-use Pimple\Container;
-
-/**
- * @author  Igor Wiedler <igor@wiedler.ch>
- */
-class PimpleTest extends \PHPUnit_Framework_TestCase
-{
-    public function testWithString()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-
-        $this->assertEquals('value', $pimple['param']);
-    }
-
-    public function testWithClosure()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
-    }
-
-    public function testServicesShouldBeDifferent()
-    {
-        $pimple = new Container();
-        $pimple['service'] = $pimple->factory(function () {
-            return new Fixtures\Service();
-        });
-
-        $serviceOne = $pimple['service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertNotSame($serviceOne, $serviceTwo);
-    }
-
-    public function testShouldPassContainerAsParameter()
-    {
-        $pimple = new Container();
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-        $pimple['container'] = function ($container) {
-            return $container;
-        };
-
-        $this->assertNotSame($pimple, $pimple['service']);
-        $this->assertSame($pimple, $pimple['container']);
-    }
-
-    public function testIsset()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        $pimple['null'] = null;
-
-        $this->assertTrue(isset($pimple['param']));
-        $this->assertTrue(isset($pimple['service']));
-        $this->assertTrue(isset($pimple['null']));
-        $this->assertFalse(isset($pimple['non_existent']));
-    }
-
-    public function testConstructorInjection()
-    {
-        $params = array('param' => 'value');
-        $pimple = new Container($params);
-
-        $this->assertSame($params['param'], $pimple['param']);
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
-    public function testOffsetGetValidatesKeyIsPresent()
-    {
-        $pimple = new Container();
-        echo $pimple['foo'];
-    }
-
-    public function testOffsetGetHonorsNullValues()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = null;
-        $this->assertNull($pimple['foo']);
-    }
-
-    public function testUnset()
-    {
-        $pimple = new Container();
-        $pimple['param'] = 'value';
-        $pimple['service'] = function () {
-            return new Fixtures\Service();
-        };
-
-        unset($pimple['param'], $pimple['service']);
-        $this->assertFalse(isset($pimple['param']));
-        $this->assertFalse(isset($pimple['service']));
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testShare($service)
-    {
-        $pimple = new Container();
-        $pimple['shared_service'] = $service;
-
-        $serviceOne = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-
-        $serviceTwo = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-
-        $this->assertSame($serviceOne, $serviceTwo);
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testProtect($service)
-    {
-        $pimple = new Container();
-        $pimple['protected'] = $pimple->protect($service);
-
-        $this->assertSame($service, $pimple['protected']);
-    }
-
-    public function testGlobalFunctionNameAsParameterValue()
-    {
-        $pimple = new Container();
-        $pimple['global_function'] = 'strlen';
-        $this->assertSame('strlen', $pimple['global_function']);
-    }
-
-    public function testRaw()
-    {
-        $pimple = new Container();
-        $pimple['service'] = $definition = $pimple->factory(function () { return 'foo'; });
-        $this->assertSame($definition, $pimple->raw('service'));
-    }
-
-    public function testRawHonorsNullValues()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = null;
-        $this->assertNull($pimple->raw('foo'));
-    }
-
-    public function testFluentRegister()
-    {
-        $pimple = new Container();
-        $this->assertSame($pimple, $pimple->register($this->getMock('Pimple\ServiceProviderInterface')));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
-    public function testRawValidatesKeyIsPresent()
-    {
-        $pimple = new Container();
-        $pimple->raw('foo');
-    }
-
-    /**
-     * @dataProvider serviceDefinitionProvider
-     */
-    public function testExtend($service)
-    {
-        $pimple = new Container();
-        $pimple['shared_service'] = function () {
-            return new Fixtures\Service();
-        };
-        $pimple['factory_service'] = $pimple->factory(function () {
-            return new Fixtures\Service();
-        });
-
-        $pimple->extend('shared_service', $service);
-        $serviceOne = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-        $serviceTwo = $pimple['shared_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-        $this->assertSame($serviceOne, $serviceTwo);
-        $this->assertSame($serviceOne->value, $serviceTwo->value);
-
-        $pimple->extend('factory_service', $service);
-        $serviceOne = $pimple['factory_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
-        $serviceTwo = $pimple['factory_service'];
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
-        $this->assertNotSame($serviceOne, $serviceTwo);
-        $this->assertNotSame($serviceOne->value, $serviceTwo->value);
-    }
-
-    public function testExtendDoesNotLeakWithFactories()
-    {
-        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; });
-        unset($pimple['foo']);
-
-        $p = new \ReflectionProperty($pimple, 'values');
-        $p->setAccessible(true);
-        $this->assertEmpty($p->getValue($pimple));
-
-        $p = new \ReflectionProperty($pimple, 'factories');
-        $p->setAccessible(true);
-        $this->assertCount(0, $p->getValue($pimple));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" is not defined.
-     */
-    public function testExtendValidatesKeyIsPresent()
-    {
-        $pimple = new Container();
-        $pimple->extend('foo', function () {});
-    }
-
-    public function testKeys()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = 123;
-        $pimple['bar'] = 123;
-
-        $this->assertEquals(array('foo', 'bar'), $pimple->keys());
-    }
-
-    /** @test */
-    public function settingAnInvokableObjectShouldTreatItAsFactory()
-    {
-        $pimple = new Container();
-        $pimple['invokable'] = new Fixtures\Invokable();
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['invokable']);
-    }
-
-    /** @test */
-    public function settingNonInvokableObjectShouldTreatItAsParameter()
-    {
-        $pimple = new Container();
-        $pimple['non_invokable'] = new Fixtures\NonInvokable();
-
-        $this->assertInstanceOf('Pimple\Tests\Fixtures\NonInvokable', $pimple['non_invokable']);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Service definition is not a Closure or invokable object.
-     */
-    public function testFactoryFailsForInvalidServiceDefinitions($service)
-    {
-        $pimple = new Container();
-        $pimple->factory($service);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Callable is not a Closure or invokable object.
-     */
-    public function testProtectFailsForInvalidServiceDefinitions($service)
-    {
-        $pimple = new Container();
-        $pimple->protect($service);
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
-     */
-    public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
-    {
-        $pimple = new Container();
-        $pimple['foo'] = $service;
-        $pimple->extend('foo', function () {});
-    }
-
-    /**
-     * @dataProvider badServiceDefinitionProvider
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
-     */
-    public function testExtendFailsForInvalidServiceDefinitions($service)
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {};
-        $pimple->extend('foo', $service);
-    }
-
-    /**
-     * Provider for invalid service definitions.
-     */
-    public function badServiceDefinitionProvider()
-    {
-        return array(
-          array(123),
-          array(new Fixtures\NonInvokable()),
-        );
-    }
-
-    /**
-     * Provider for service definitions.
-     */
-    public function serviceDefinitionProvider()
-    {
-        return array(
-            array(function ($value) {
-                $service = new Fixtures\Service();
-                $service->value = $value;
-
-                return $service;
-            }),
-            array(new Fixtures\Invokable()),
-        );
-    }
-
-    public function testDefiningNewServiceAfterFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['bar'] = function () {
-            return 'bar';
-        };
-        $this->assertSame('bar', $pimple['bar']);
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     * @expectedExceptionMessage Cannot override frozen service "foo".
-     */
-    public function testOverridingServiceAfterFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['foo'] = function () {
-            return 'bar';
-        };
-    }
-
-    public function testRemovingServiceAfterFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $foo = $pimple['foo'];
-
-        unset($pimple['foo']);
-        $pimple['foo'] = function () {
-            return 'bar';
-        };
-        $this->assertSame('bar', $pimple['foo']);
-    }
-
-    public function testExtendingService()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
-            return "$foo.bar";
-        });
-        $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
-            return "$foo.baz";
-        });
-        $this->assertSame('foo.bar.baz', $pimple['foo']);
-    }
-
-    public function testExtendingServiceAfterOtherServiceFreeze()
-    {
-        $pimple = new Container();
-        $pimple['foo'] = function () {
-            return 'foo';
-        };
-        $pimple['bar'] = function () {
-            return 'bar';
-        };
-        $foo = $pimple['foo'];
-
-        $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) {
-            return "$bar.baz";
-        });
-        $this->assertSame('bar.baz', $pimple['bar']);
-    }
-}
diff --git a/vendor/psr/http-message/CHANGELOG.md b/vendor/psr/http-message/CHANGELOG.md
deleted file mode 100644
index 74b1ef9..0000000
--- a/vendor/psr/http-message/CHANGELOG.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.0.1 - 2016-08-06
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Updated all `@return self` annotation references in interfaces to use
-  `@return static`, which more closelly follows the semantics of the
-  specification.
-- Updated the `MessageInterface::getHeaders()` return annotation to use the
-  value `string[][]`, indicating the format is a nested array of strings.
-- Updated the `@link` annotation for `RequestInterface::withRequestTarget()`
-  to point to the correct section of RFC 7230.
-- Updated the `ServerRequestInterface::withUploadedFiles()` parameter annotation
-  to add the parameter name (`$uploadedFiles`).
-- Updated a `@throws` annotation for the `UploadedFileInterface::moveTo()`
-  method to correctly reference the method parameter (it was referencing an
-  incorrect parameter name previously).
-
-## 1.0.0 - 2016-05-18
-
-Initial stable release; reflects accepted PSR-7 specification.
diff --git a/vendor/psr/http-message/LICENSE b/vendor/psr/http-message/LICENSE
deleted file mode 100644
index c2d8e45..0000000
--- a/vendor/psr/http-message/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 PHP Framework Interoperability Group
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights 
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom the Software is 
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/psr/http-message/README.md b/vendor/psr/http-message/README.md
deleted file mode 100644
index 2818533..0000000
--- a/vendor/psr/http-message/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-PSR Http Message
-================
-
-This repository holds all interfaces/classes/traits related to
-[PSR-7](http://www.php-fig.org/psr/psr-7/).
-
-Note that this is not a HTTP message implementation of its own. It is merely an
-interface that describes a HTTP message. See the specification for more details.
-
-Usage
------
-
-We'll certainly need some stuff in here.
\ No newline at end of file
diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json
deleted file mode 100644
index b0d2937..0000000
--- a/vendor/psr/http-message/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "psr/http-message",
-    "description": "Common interface for HTTP messages",
-    "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
-    "homepage": "https://github.com/php-fig/http-message",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Psr\\Http\\Message\\": "src/"
-        }
-    },
-    "extra": {
-        "branch-alias": {
-            "dev-master": "1.0.x-dev"
-        }
-    }
-}
diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php
deleted file mode 100644
index dd46e5e..0000000
--- a/vendor/psr/http-message/src/MessageInterface.php
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * HTTP messages consist of requests from a client to a server and responses
- * from a server to a client. This interface defines the methods common to
- * each.
- *
- * Messages are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- *
- * @link http://www.ietf.org/rfc/rfc7230.txt
- * @link http://www.ietf.org/rfc/rfc7231.txt
- */
-interface MessageInterface
-{
-    /**
-     * Retrieves the HTTP protocol version as a string.
-     *
-     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
-     *
-     * @return string HTTP protocol version.
-     */
-    public function getProtocolVersion();
-
-    /**
-     * Return an instance with the specified HTTP protocol version.
-     *
-     * The version string MUST contain only the HTTP version number (e.g.,
-     * "1.1", "1.0").
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new protocol version.
-     *
-     * @param string $version HTTP protocol version
-     * @return static
-     */
-    public function withProtocolVersion($version);
-
-    /**
-     * Retrieves all message header values.
-     *
-     * The keys represent the header name as it will be sent over the wire, and
-     * each value is an array of strings associated with the header.
-     *
-     *     // Represent the headers as a string
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         echo $name . ": " . implode(", ", $values);
-     *     }
-     *
-     *     // Emit headers iteratively:
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         foreach ($values as $value) {
-     *             header(sprintf('%s: %s', $name, $value), false);
-     *         }
-     *     }
-     *
-     * While header names are not case-sensitive, getHeaders() will preserve the
-     * exact case in which headers were originally specified.
-     *
-     * @return string[][] Returns an associative array of the message's headers. Each
-     *     key MUST be a header name, and each value MUST be an array of strings
-     *     for that header.
-     */
-    public function getHeaders();
-
-    /**
-     * Checks if a header exists by the given case-insensitive name.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return bool Returns true if any header names match the given header
-     *     name using a case-insensitive string comparison. Returns false if
-     *     no matching header name is found in the message.
-     */
-    public function hasHeader($name);
-
-    /**
-     * Retrieves a message header value by the given case-insensitive name.
-     *
-     * This method returns an array of all the header values of the given
-     * case-insensitive header name.
-     *
-     * If the header does not appear in the message, this method MUST return an
-     * empty array.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string[] An array of string values as provided for the given
-     *    header. If the header does not appear in the message, this method MUST
-     *    return an empty array.
-     */
-    public function getHeader($name);
-
-    /**
-     * Retrieves a comma-separated string of the values for a single header.
-     *
-     * This method returns all of the header values of the given
-     * case-insensitive header name as a string concatenated together using
-     * a comma.
-     *
-     * NOTE: Not all header values may be appropriately represented using
-     * comma concatenation. For such headers, use getHeader() instead
-     * and supply your own delimiter when concatenating.
-     *
-     * If the header does not appear in the message, this method MUST return
-     * an empty string.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string A string of values as provided for the given header
-     *    concatenated together using a comma. If the header does not appear in
-     *    the message, this method MUST return an empty string.
-     */
-    public function getHeaderLine($name);
-
-    /**
-     * Return an instance with the provided value replacing the specified header.
-     *
-     * While header names are case-insensitive, the casing of the header will
-     * be preserved by this function, and returned from getHeaders().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new and/or updated header and value.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withHeader($name, $value);
-
-    /**
-     * Return an instance with the specified header appended with the given value.
-     *
-     * Existing values for the specified header will be maintained. The new
-     * value(s) will be appended to the existing list. If the header did not
-     * exist previously, it will be added.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new header and/or value.
-     *
-     * @param string $name Case-insensitive header field name to add.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withAddedHeader($name, $value);
-
-    /**
-     * Return an instance without the specified header.
-     *
-     * Header resolution MUST be done without case-sensitivity.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the named header.
-     *
-     * @param string $name Case-insensitive header field name to remove.
-     * @return static
-     */
-    public function withoutHeader($name);
-
-    /**
-     * Gets the body of the message.
-     *
-     * @return StreamInterface Returns the body as a stream.
-     */
-    public function getBody();
-
-    /**
-     * Return an instance with the specified message body.
-     *
-     * The body MUST be a StreamInterface object.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * new body stream.
-     *
-     * @param StreamInterface $body Body.
-     * @return static
-     * @throws \InvalidArgumentException When the body is not valid.
-     */
-    public function withBody(StreamInterface $body);
-}
diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php
deleted file mode 100644
index a96d4fd..0000000
--- a/vendor/psr/http-message/src/RequestInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, client-side request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * During construction, implementations MUST attempt to set the Host header from
- * a provided URI if no Host header is provided.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface RequestInterface extends MessageInterface
-{
-    /**
-     * Retrieves the message's request target.
-     *
-     * Retrieves the message's request-target either as it will appear (for
-     * clients), as it appeared at request (for servers), or as it was
-     * specified for the instance (see withRequestTarget()).
-     *
-     * In most cases, this will be the origin-form of the composed URI,
-     * unless a value was provided to the concrete implementation (see
-     * withRequestTarget() below).
-     *
-     * If no URI is available, and no request-target has been specifically
-     * provided, this method MUST return the string "/".
-     *
-     * @return string
-     */
-    public function getRequestTarget();
-
-    /**
-     * Return an instance with the specific request-target.
-     *
-     * If the request needs a non-origin-form request-target — e.g., for
-     * specifying an absolute-form, authority-form, or asterisk-form —
-     * this method may be used to create an instance with the specified
-     * request-target, verbatim.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request target.
-     *
-     * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
-     *     request-target forms allowed in request messages)
-     * @param mixed $requestTarget
-     * @return static
-     */
-    public function withRequestTarget($requestTarget);
-
-    /**
-     * Retrieves the HTTP method of the request.
-     *
-     * @return string Returns the request method.
-     */
-    public function getMethod();
-
-    /**
-     * Return an instance with the provided HTTP method.
-     *
-     * While HTTP method names are typically all uppercase characters, HTTP
-     * method names are case-sensitive and thus implementations SHOULD NOT
-     * modify the given string.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request method.
-     *
-     * @param string $method Case-sensitive method.
-     * @return static
-     * @throws \InvalidArgumentException for invalid HTTP methods.
-     */
-    public function withMethod($method);
-
-    /**
-     * Retrieves the URI instance.
-     *
-     * This method MUST return a UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @return UriInterface Returns a UriInterface instance
-     *     representing the URI of the request.
-     */
-    public function getUri();
-
-    /**
-     * Returns an instance with the provided URI.
-     *
-     * This method MUST update the Host header of the returned request by
-     * default if the URI contains a host component. If the URI does not
-     * contain a host component, any pre-existing Host header MUST be carried
-     * over to the returned request.
-     *
-     * You can opt-in to preserving the original state of the Host header by
-     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
-     * `true`, this method interacts with the Host header in the following ways:
-     *
-     * - If the Host header is missing or empty, and the new URI contains
-     *   a host component, this method MUST update the Host header in the returned
-     *   request.
-     * - If the Host header is missing or empty, and the new URI does not contain a
-     *   host component, this method MUST NOT update the Host header in the returned
-     *   request.
-     * - If a Host header is present and non-empty, this method MUST NOT update
-     *   the Host header in the returned request.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @param UriInterface $uri New request URI to use.
-     * @param bool $preserveHost Preserve the original state of the Host header.
-     * @return static
-     */
-    public function withUri(UriInterface $uri, $preserveHost = false);
-}
diff --git a/vendor/psr/http-message/src/ResponseInterface.php b/vendor/psr/http-message/src/ResponseInterface.php
deleted file mode 100644
index c306514..0000000
--- a/vendor/psr/http-message/src/ResponseInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an outgoing, server-side response.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - Status code and reason phrase
- * - Headers
- * - Message body
- *
- * Responses are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ResponseInterface extends MessageInterface
-{
-    /**
-     * Gets the response status code.
-     *
-     * The status code is a 3-digit integer result code of the server's attempt
-     * to understand and satisfy the request.
-     *
-     * @return int Status code.
-     */
-    public function getStatusCode();
-
-    /**
-     * Return an instance with the specified status code and, optionally, reason phrase.
-     *
-     * If no reason phrase is specified, implementations MAY choose to default
-     * to the RFC 7231 or IANA recommended reason phrase for the response's
-     * status code.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated status and reason phrase.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @param int $code The 3-digit integer result code to set.
-     * @param string $reasonPhrase The reason phrase to use with the
-     *     provided status code; if none is provided, implementations MAY
-     *     use the defaults as suggested in the HTTP specification.
-     * @return static
-     * @throws \InvalidArgumentException For invalid status code arguments.
-     */
-    public function withStatus($code, $reasonPhrase = '');
-
-    /**
-     * Gets the response reason phrase associated with the status code.
-     *
-     * Because a reason phrase is not a required element in a response
-     * status line, the reason phrase value MAY be null. Implementations MAY
-     * choose to return the default RFC 7231 recommended reason phrase (or those
-     * listed in the IANA HTTP Status Code Registry) for the response's
-     * status code.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @return string Reason phrase; must return an empty string if none present.
-     */
-    public function getReasonPhrase();
-}
diff --git a/vendor/psr/http-message/src/ServerRequestInterface.php b/vendor/psr/http-message/src/ServerRequestInterface.php
deleted file mode 100644
index 0251234..0000000
--- a/vendor/psr/http-message/src/ServerRequestInterface.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Representation of an incoming, server-side HTTP request.
- *
- * Per the HTTP specification, this interface includes properties for
- * each of the following:
- *
- * - Protocol version
- * - HTTP method
- * - URI
- * - Headers
- * - Message body
- *
- * Additionally, it encapsulates all data as it has arrived to the
- * application from the CGI and/or PHP environment, including:
- *
- * - The values represented in $_SERVER.
- * - Any cookies provided (generally via $_COOKIE)
- * - Query string arguments (generally via $_GET, or as parsed via parse_str())
- * - Upload files, if any (as represented by $_FILES)
- * - Deserialized body parameters (generally from $_POST)
- *
- * $_SERVER values MUST be treated as immutable, as they represent application
- * state at the time of request; as such, no methods are provided to allow
- * modification of those values. The other values provide such methods, as they
- * can be restored from $_SERVER or the request body, and may need treatment
- * during the application (e.g., body parameters may be deserialized based on
- * content type).
- *
- * Additionally, this interface recognizes the utility of introspecting a
- * request to derive and match additional parameters (e.g., via URI path
- * matching, decrypting cookie values, deserializing non-form-encoded body
- * content, matching authorization headers to users, etc). These parameters
- * are stored in an "attributes" property.
- *
- * Requests are considered immutable; all methods that might change state MUST
- * be implemented such that they retain the internal state of the current
- * message and return an instance that contains the changed state.
- */
-interface ServerRequestInterface extends RequestInterface
-{
-    /**
-     * Retrieve server parameters.
-     *
-     * Retrieves data related to the incoming request environment,
-     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
-     * REQUIRED to originate from $_SERVER.
-     *
-     * @return array
-     */
-    public function getServerParams();
-
-    /**
-     * Retrieve cookies.
-     *
-     * Retrieves cookies sent by the client to the server.
-     *
-     * The data MUST be compatible with the structure of the $_COOKIE
-     * superglobal.
-     *
-     * @return array
-     */
-    public function getCookieParams();
-
-    /**
-     * Return an instance with the specified cookies.
-     *
-     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
-     * be compatible with the structure of $_COOKIE. Typically, this data will
-     * be injected at instantiation.
-     *
-     * This method MUST NOT update the related Cookie header of the request
-     * instance, nor related values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated cookie values.
-     *
-     * @param array $cookies Array of key/value pairs representing cookies.
-     * @return static
-     */
-    public function withCookieParams(array $cookies);
-
-    /**
-     * Retrieve query string arguments.
-     *
-     * Retrieves the deserialized query string arguments, if any.
-     *
-     * Note: the query params might not be in sync with the URI or server
-     * params. If you need to ensure you are only getting the original
-     * values, you may need to parse the query string from `getUri()->getQuery()`
-     * or from the `QUERY_STRING` server param.
-     *
-     * @return array
-     */
-    public function getQueryParams();
-
-    /**
-     * Return an instance with the specified query string arguments.
-     *
-     * These values SHOULD remain immutable over the course of the incoming
-     * request. They MAY be injected during instantiation, such as from PHP's
-     * $_GET superglobal, or MAY be derived from some other value such as the
-     * URI. In cases where the arguments are parsed from the URI, the data
-     * MUST be compatible with what PHP's parse_str() would return for
-     * purposes of how duplicate query parameters are handled, and how nested
-     * sets are handled.
-     *
-     * Setting query string arguments MUST NOT change the URI stored by the
-     * request, nor the values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated query string arguments.
-     *
-     * @param array $query Array of query string arguments, typically from
-     *     $_GET.
-     * @return static
-     */
-    public function withQueryParams(array $query);
-
-    /**
-     * Retrieve normalized file upload data.
-     *
-     * This method returns upload metadata in a normalized tree, with each leaf
-     * an instance of Psr\Http\Message\UploadedFileInterface.
-     *
-     * These values MAY be prepared from $_FILES or the message body during
-     * instantiation, or MAY be injected via withUploadedFiles().
-     *
-     * @return array An array tree of UploadedFileInterface instances; an empty
-     *     array MUST be returned if no data is present.
-     */
-    public function getUploadedFiles();
-
-    /**
-     * Create a new instance with the specified uploaded files.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
-     * @return static
-     * @throws \InvalidArgumentException if an invalid structure is provided.
-     */
-    public function withUploadedFiles(array $uploadedFiles);
-
-    /**
-     * Retrieve any parameters provided in the request body.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, this method MUST
-     * return the contents of $_POST.
-     *
-     * Otherwise, this method may return any results of deserializing
-     * the request body content; as parsing returns structured content, the
-     * potential types MUST be arrays or objects only. A null value indicates
-     * the absence of body content.
-     *
-     * @return null|array|object The deserialized body parameters, if any.
-     *     These will typically be an array or object.
-     */
-    public function getParsedBody();
-
-    /**
-     * Return an instance with the specified body parameters.
-     *
-     * These MAY be injected during instantiation.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, use this method
-     * ONLY to inject the contents of $_POST.
-     *
-     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
-     * deserializing the request body content. Deserialization/parsing returns
-     * structured data, and, as such, this method ONLY accepts arrays or objects,
-     * or a null value if nothing was available to parse.
-     *
-     * As an example, if content negotiation determines that the request data
-     * is a JSON payload, this method could be used to create a request
-     * instance with the deserialized parameters.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param null|array|object $data The deserialized body data. This will
-     *     typically be in an array or object.
-     * @return static
-     * @throws \InvalidArgumentException if an unsupported argument type is
-     *     provided.
-     */
-    public function withParsedBody($data);
-
-    /**
-     * Retrieve attributes derived from the request.
-     *
-     * The request "attributes" may be used to allow injection of any
-     * parameters derived from the request: e.g., the results of path
-     * match operations; the results of decrypting cookies; the results of
-     * deserializing non-form-encoded message bodies; etc. Attributes
-     * will be application and request specific, and CAN be mutable.
-     *
-     * @return array Attributes derived from the request.
-     */
-    public function getAttributes();
-
-    /**
-     * Retrieve a single derived request attribute.
-     *
-     * Retrieves a single derived request attribute as described in
-     * getAttributes(). If the attribute has not been previously set, returns
-     * the default value as provided.
-     *
-     * This method obviates the need for a hasAttribute() method, as it allows
-     * specifying a default value to return if the attribute is not found.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $default Default value to return if the attribute does not exist.
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null);
-
-    /**
-     * Return an instance with the specified derived request attribute.
-     *
-     * This method allows setting a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $value The value of the attribute.
-     * @return static
-     */
-    public function withAttribute($name, $value);
-
-    /**
-     * Return an instance that removes the specified derived request attribute.
-     *
-     * This method allows removing a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @return static
-     */
-    public function withoutAttribute($name);
-}
diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php
deleted file mode 100644
index f68f391..0000000
--- a/vendor/psr/http-message/src/StreamInterface.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Describes a data stream.
- *
- * Typically, an instance will wrap a PHP stream; this interface provides
- * a wrapper around the most common operations, including serialization of
- * the entire stream to a string.
- */
-interface StreamInterface
-{
-    /**
-     * Reads all data from the stream into a string, from the beginning to end.
-     *
-     * This method MUST attempt to seek to the beginning of the stream before
-     * reading data and read the stream until the end is reached.
-     *
-     * Warning: This could attempt to load a large amount of data into memory.
-     *
-     * This method MUST NOT raise an exception in order to conform with PHP's
-     * string casting operations.
-     *
-     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
-     * @return string
-     */
-    public function __toString();
-
-    /**
-     * Closes the stream and any underlying resources.
-     *
-     * @return void
-     */
-    public function close();
-
-    /**
-     * Separates any underlying resources from the stream.
-     *
-     * After the stream has been detached, the stream is in an unusable state.
-     *
-     * @return resource|null Underlying PHP stream, if any
-     */
-    public function detach();
-
-    /**
-     * Get the size of the stream if known.
-     *
-     * @return int|null Returns the size in bytes if known, or null if unknown.
-     */
-    public function getSize();
-
-    /**
-     * Returns the current position of the file read/write pointer
-     *
-     * @return int Position of the file pointer
-     * @throws \RuntimeException on error.
-     */
-    public function tell();
-
-    /**
-     * Returns true if the stream is at the end of the stream.
-     *
-     * @return bool
-     */
-    public function eof();
-
-    /**
-     * Returns whether or not the stream is seekable.
-     *
-     * @return bool
-     */
-    public function isSeekable();
-
-    /**
-     * Seek to a position in the stream.
-     *
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @param int $offset Stream offset
-     * @param int $whence Specifies how the cursor position will be calculated
-     *     based on the seek offset. Valid values are identical to the built-in
-     *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
-     *     offset bytes SEEK_CUR: Set position to current location plus offset
-     *     SEEK_END: Set position to end-of-stream plus offset.
-     * @throws \RuntimeException on failure.
-     */
-    public function seek($offset, $whence = SEEK_SET);
-
-    /**
-     * Seek to the beginning of the stream.
-     *
-     * If the stream is not seekable, this method will raise an exception;
-     * otherwise, it will perform a seek(0).
-     *
-     * @see seek()
-     * @link http://www.php.net/manual/en/function.fseek.php
-     * @throws \RuntimeException on failure.
-     */
-    public function rewind();
-
-    /**
-     * Returns whether or not the stream is writable.
-     *
-     * @return bool
-     */
-    public function isWritable();
-
-    /**
-     * Write data to the stream.
-     *
-     * @param string $string The string that is to be written.
-     * @return int Returns the number of bytes written to the stream.
-     * @throws \RuntimeException on failure.
-     */
-    public function write($string);
-
-    /**
-     * Returns whether or not the stream is readable.
-     *
-     * @return bool
-     */
-    public function isReadable();
-
-    /**
-     * Read data from the stream.
-     *
-     * @param int $length Read up to $length bytes from the object and return
-     *     them. Fewer than $length bytes may be returned if underlying stream
-     *     call returns fewer bytes.
-     * @return string Returns the data read from the stream, or an empty string
-     *     if no bytes are available.
-     * @throws \RuntimeException if an error occurs.
-     */
-    public function read($length);
-
-    /**
-     * Returns the remaining contents in a string
-     *
-     * @return string
-     * @throws \RuntimeException if unable to read or an error occurs while
-     *     reading.
-     */
-    public function getContents();
-
-    /**
-     * Get stream metadata as an associative array or retrieve a specific key.
-     *
-     * The keys returned are identical to the keys returned from PHP's
-     * stream_get_meta_data() function.
-     *
-     * @link http://php.net/manual/en/function.stream-get-meta-data.php
-     * @param string $key Specific metadata to retrieve.
-     * @return array|mixed|null Returns an associative array if no key is
-     *     provided. Returns a specific key value if a key is provided and the
-     *     value is found, or null if the key is not found.
-     */
-    public function getMetadata($key = null);
-}
diff --git a/vendor/psr/http-message/src/UploadedFileInterface.php b/vendor/psr/http-message/src/UploadedFileInterface.php
deleted file mode 100644
index f8a6901..0000000
--- a/vendor/psr/http-message/src/UploadedFileInterface.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a file uploaded through an HTTP request.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- */
-interface UploadedFileInterface
-{
-    /**
-     * Retrieve a stream representing the uploaded file.
-     *
-     * This method MUST return a StreamInterface instance, representing the
-     * uploaded file. The purpose of this method is to allow utilizing native PHP
-     * stream functionality to manipulate the file upload, such as
-     * stream_copy_to_stream() (though the result will need to be decorated in a
-     * native PHP stream wrapper to work with such functions).
-     *
-     * If the moveTo() method has been called previously, this method MUST raise
-     * an exception.
-     *
-     * @return StreamInterface Stream representation of the uploaded file.
-     * @throws \RuntimeException in cases when no stream is available or can be
-     *     created.
-     */
-    public function getStream();
-
-    /**
-     * Move the uploaded file to a new location.
-     *
-     * Use this method as an alternative to move_uploaded_file(). This method is
-     * guaranteed to work in both SAPI and non-SAPI environments.
-     * Implementations must determine which environment they are in, and use the
-     * appropriate method (move_uploaded_file(), rename(), or a stream
-     * operation) to perform the operation.
-     *
-     * $targetPath may be an absolute path, or a relative path. If it is a
-     * relative path, resolution should be the same as used by PHP's rename()
-     * function.
-     *
-     * The original file or stream MUST be removed on completion.
-     *
-     * If this method is called more than once, any subsequent calls MUST raise
-     * an exception.
-     *
-     * When used in an SAPI environment where $_FILES is populated, when writing
-     * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
-     * used to ensure permissions and upload status are verified correctly.
-     *
-     * If you wish to move to a stream, use getStream(), as SAPI operations
-     * cannot guarantee writing to stream destinations.
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     * @param string $targetPath Path to which to move the uploaded file.
-     * @throws \InvalidArgumentException if the $targetPath specified is invalid.
-     * @throws \RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath);
-    
-    /**
-     * Retrieve the file size.
-     *
-     * Implementations SHOULD return the value stored in the "size" key of
-     * the file in the $_FILES array if available, as PHP calculates this based
-     * on the actual size transmitted.
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize();
-    
-    /**
-     * Retrieve the error associated with the uploaded file.
-     *
-     * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
-     *
-     * If the file was uploaded successfully, this method MUST return
-     * UPLOAD_ERR_OK.
-     *
-     * Implementations SHOULD return the value stored in the "error" key of
-     * the file in the $_FILES array.
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError();
-    
-    /**
-     * Retrieve the filename sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious filename with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "name" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename();
-    
-    /**
-     * Retrieve the media type sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious media type with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "type" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The media type sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientMediaType();
-}
diff --git a/vendor/psr/http-message/src/UriInterface.php b/vendor/psr/http-message/src/UriInterface.php
deleted file mode 100644
index 9d7ab9e..0000000
--- a/vendor/psr/http-message/src/UriInterface.php
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-namespace Psr\Http\Message;
-
-/**
- * Value object representing a URI.
- *
- * This interface is meant to represent URIs according to RFC 3986 and to
- * provide methods for most common operations. Additional functionality for
- * working with URIs can be provided on top of the interface or externally.
- * Its primary use is for HTTP requests, but may also be used in other
- * contexts.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- *
- * Typically the Host header will be also be present in the request message.
- * For server-side requests, the scheme will typically be discoverable in the
- * server parameters.
- *
- * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
- */
-interface UriInterface
-{
-    /**
-     * Retrieve the scheme component of the URI.
-     *
-     * If no scheme is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.1.
-     *
-     * The trailing ":" character is not part of the scheme and MUST NOT be
-     * added.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.1
-     * @return string The URI scheme.
-     */
-    public function getScheme();
-
-    /**
-     * Retrieve the authority component of the URI.
-     *
-     * If no authority information is present, this method MUST return an empty
-     * string.
-     *
-     * The authority syntax of the URI is:
-     *
-     * <pre>
-     * [user-info@]host[:port]
-     * </pre>
-     *
-     * If the port component is not set or is the standard port for the current
-     * scheme, it SHOULD NOT be included.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.2
-     * @return string The URI authority, in "[user-info@]host[:port]" format.
-     */
-    public function getAuthority();
-
-    /**
-     * Retrieve the user information component of the URI.
-     *
-     * If no user information is present, this method MUST return an empty
-     * string.
-     *
-     * If a user is present in the URI, this will return that value;
-     * additionally, if the password is also present, it will be appended to the
-     * user value, with a colon (":") separating the values.
-     *
-     * The trailing "@" character is not part of the user information and MUST
-     * NOT be added.
-     *
-     * @return string The URI user information, in "username[:password]" format.
-     */
-    public function getUserInfo();
-
-    /**
-     * Retrieve the host component of the URI.
-     *
-     * If no host is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.2.2.
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
-     * @return string The URI host.
-     */
-    public function getHost();
-
-    /**
-     * Retrieve the port component of the URI.
-     *
-     * If a port is present, and it is non-standard for the current scheme,
-     * this method MUST return it as an integer. If the port is the standard port
-     * used with the current scheme, this method SHOULD return null.
-     *
-     * If no port is present, and no scheme is present, this method MUST return
-     * a null value.
-     *
-     * If no port is present, but a scheme is present, this method MAY return
-     * the standard port for that scheme, but SHOULD return null.
-     *
-     * @return null|int The URI port.
-     */
-    public function getPort();
-
-    /**
-     * Retrieve the path component of the URI.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * Normally, the empty path "" and absolute path "/" are considered equal as
-     * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
-     * do this normalization because in contexts with a trimmed base path, e.g.
-     * the front controller, this difference becomes significant. It's the task
-     * of the user to handle both "" and "/".
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.3.
-     *
-     * As an example, if the value should include a slash ("/") not intended as
-     * delimiter between path segments, that value MUST be passed in encoded
-     * form (e.g., "%2F") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.3
-     * @return string The URI path.
-     */
-    public function getPath();
-
-    /**
-     * Retrieve the query string of the URI.
-     *
-     * If no query string is present, this method MUST return an empty string.
-     *
-     * The leading "?" character is not part of the query and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.4.
-     *
-     * As an example, if a value in a key/value pair of the query string should
-     * include an ampersand ("&") not intended as a delimiter between values,
-     * that value MUST be passed in encoded form (e.g., "%26") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.4
-     * @return string The URI query string.
-     */
-    public function getQuery();
-
-    /**
-     * Retrieve the fragment component of the URI.
-     *
-     * If no fragment is present, this method MUST return an empty string.
-     *
-     * The leading "#" character is not part of the fragment and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.5.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.5
-     * @return string The URI fragment.
-     */
-    public function getFragment();
-
-    /**
-     * Return an instance with the specified scheme.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified scheme.
-     *
-     * Implementations MUST support the schemes "http" and "https" case
-     * insensitively, and MAY accommodate other schemes if required.
-     *
-     * An empty scheme is equivalent to removing the scheme.
-     *
-     * @param string $scheme The scheme to use with the new instance.
-     * @return static A new instance with the specified scheme.
-     * @throws \InvalidArgumentException for invalid or unsupported schemes.
-     */
-    public function withScheme($scheme);
-
-    /**
-     * Return an instance with the specified user information.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified user information.
-     *
-     * Password is optional, but the user information MUST include the
-     * user; an empty string for the user is equivalent to removing user
-     * information.
-     *
-     * @param string $user The user name to use for authority.
-     * @param null|string $password The password associated with $user.
-     * @return static A new instance with the specified user information.
-     */
-    public function withUserInfo($user, $password = null);
-
-    /**
-     * Return an instance with the specified host.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified host.
-     *
-     * An empty host value is equivalent to removing the host.
-     *
-     * @param string $host The hostname to use with the new instance.
-     * @return static A new instance with the specified host.
-     * @throws \InvalidArgumentException for invalid hostnames.
-     */
-    public function withHost($host);
-
-    /**
-     * Return an instance with the specified port.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified port.
-     *
-     * Implementations MUST raise an exception for ports outside the
-     * established TCP and UDP port ranges.
-     *
-     * A null value provided for the port is equivalent to removing the port
-     * information.
-     *
-     * @param null|int $port The port to use with the new instance; a null value
-     *     removes the port information.
-     * @return static A new instance with the specified port.
-     * @throws \InvalidArgumentException for invalid ports.
-     */
-    public function withPort($port);
-
-    /**
-     * Return an instance with the specified path.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified path.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * If the path is intended to be domain-relative rather than path relative then
-     * it must begin with a slash ("/"). Paths not starting with a slash ("/")
-     * are assumed to be relative to some base path known to the application or
-     * consumer.
-     *
-     * Users can provide both encoded and decoded path characters.
-     * Implementations ensure the correct encoding as outlined in getPath().
-     *
-     * @param string $path The path to use with the new instance.
-     * @return static A new instance with the specified path.
-     * @throws \InvalidArgumentException for invalid paths.
-     */
-    public function withPath($path);
-
-    /**
-     * Return an instance with the specified query string.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified query string.
-     *
-     * Users can provide both encoded and decoded query characters.
-     * Implementations ensure the correct encoding as outlined in getQuery().
-     *
-     * An empty query string value is equivalent to removing the query string.
-     *
-     * @param string $query The query string to use with the new instance.
-     * @return static A new instance with the specified query string.
-     * @throws \InvalidArgumentException for invalid query strings.
-     */
-    public function withQuery($query);
-
-    /**
-     * Return an instance with the specified URI fragment.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified URI fragment.
-     *
-     * Users can provide both encoded and decoded fragment characters.
-     * Implementations ensure the correct encoding as outlined in getFragment().
-     *
-     * An empty fragment value is equivalent to removing the fragment.
-     *
-     * @param string $fragment The fragment to use with the new instance.
-     * @return static A new instance with the specified fragment.
-     */
-    public function withFragment($fragment);
-
-    /**
-     * Return the string representation as a URI reference.
-     *
-     * Depending on which components of the URI are present, the resulting
-     * string is either a full URI or relative reference according to RFC 3986,
-     * Section 4.1. The method concatenates the various components of the URI,
-     * using the appropriate delimiters:
-     *
-     * - If a scheme is present, it MUST be suffixed by ":".
-     * - If an authority is present, it MUST be prefixed by "//".
-     * - The path can be concatenated without delimiters. But there are two
-     *   cases where the path has to be adjusted to make the URI reference
-     *   valid as PHP does not allow to throw an exception in __toString():
-     *     - If the path is rootless and an authority is present, the path MUST
-     *       be prefixed by "/".
-     *     - If the path is starting with more than one "/" and no authority is
-     *       present, the starting slashes MUST be reduced to one.
-     * - If a query is present, it MUST be prefixed by "?".
-     * - If a fragment is present, it MUST be prefixed by "#".
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-4.1
-     * @return string
-     */
-    public function __toString();
-}
diff --git a/vendor/slim/slim/CONTRIBUTING.md b/vendor/slim/slim/CONTRIBUTING.md
deleted file mode 100644
index 9bbb6b1..0000000
--- a/vendor/slim/slim/CONTRIBUTING.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# How to Contribute
-
-## Pull Requests
-
-1. Fork the Slim Framework repository
-2. Create a new branch for each feature or improvement
-3. Send a pull request from each feature branch to the **develop** branch
-
-It is very important to separate new features or improvements into separate feature branches, and to send a
-pull request for each branch. This allows me to review and pull in new features or improvements individually.
-
-## Style Guide
-
-All pull requests must adhere to the [PSR-2 standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md).
-
-## Unit Testing
-
-All pull requests must be accompanied by passing unit tests and complete code coverage. The Slim Framework uses phpunit for testing.
-
-[Learn about PHPUnit](https://github.com/sebastianbergmann/phpunit/)
diff --git a/vendor/slim/slim/LICENSE.md b/vendor/slim/slim/LICENSE.md
deleted file mode 100644
index 0875f84..0000000
--- a/vendor/slim/slim/LICENSE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2016 Josh Lockhart
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/slim/slim/README.md b/vendor/slim/slim/README.md
deleted file mode 100644
index d20f393..0000000
--- a/vendor/slim/slim/README.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# Slim Framework
-
-[![Build Status](https://travis-ci.org/slimphp/Slim.svg?branch=develop)](https://travis-ci.org/slimphp/Slim)
-[![Coverage Status](https://coveralls.io/repos/slimphp/Slim/badge.svg)](https://coveralls.io/r/slimphp/Slim)
-[![Total Downloads](https://poser.pugx.org/slim/slim/downloads)](https://packagist.org/packages/slim/slim)
-[![License](https://poser.pugx.org/slim/slim/license)](https://packagist.org/packages/slim/slim)
-
-Slim is a PHP micro-framework that helps you quickly write simple yet powerful web applications and APIs.
-
-## Installation
-
-It's recommended that you use [Composer](https://getcomposer.org/) to install Slim.
-
-```bash
-$ composer require slim/slim "^3.0"
-```
-
-This will install Slim and all required dependencies. Slim requires PHP 5.5.0 or newer.
-
-## Usage
-
-Create an index.php file with the following contents:
-
-```php
-<?php
-
-require 'vendor/autoload.php';
-
-$app = new Slim\App();
-
-$app->get('/hello/{name}', function ($request, $response, $args) {
-    $response->write("Hello, " . $args['name']);
-    return $response;
-});
-
-$app->run();
-```
-
-You may quickly test this using the built-in PHP server:
-```bash
-$ php -S localhost:8000
-```
-
-Going to http://localhost:8000/hello/world will now display "Hello, world".
-
-For more information on how to configure your web server, see the [Documentation](http://www.slimframework.com/docs/start/web-servers.html).
-
-## Tests
-
-To execute the test suite, you'll need phpunit.
-
-```bash
-$ phpunit
-```
-
-## Contributing
-
-Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
-
-## Learn More
-
-Learn more at these links:
-
-- [Website](http://www.slimframework.com)
-- [Documentation](http://www.slimframework.com/docs/start/installation.html)
-- [Support Forum](http://help.slimframework.com)
-- [Twitter](https://twitter.com/slimphp)
-- [Resources](https://github.com/xssc/awesome-slim)
-
-## Security
-
-If you discover security related issues, please email security@slimframework.com instead of using the issue tracker.
-
-## Credits
-
-- [Josh Lockhart](https://github.com/codeguy)
-- [Andrew Smith](https://github.com/silentworks)
-- [Rob Allen](https://github.com/akrabat)
-- [Gabriel Manricks](https://github.com/gmanricks)
-- [All Contributors](../../contributors)
-
-## License
-
-The Slim Framework is licensed under the MIT license. See [License File](LICENSE.md) for more information.
diff --git a/vendor/slim/slim/Slim/App.php b/vendor/slim/slim/Slim/App.php
deleted file mode 100644
index c083539..0000000
--- a/vendor/slim/slim/Slim/App.php
+++ /dev/null
@@ -1,644 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Exception;
-use Throwable;
-use Closure;
-use InvalidArgumentException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Interop\Container\ContainerInterface;
-use FastRoute\Dispatcher;
-use Slim\Exception\SlimException;
-use Slim\Exception\MethodNotAllowedException;
-use Slim\Exception\NotFoundException;
-use Slim\Http\Uri;
-use Slim\Http\Headers;
-use Slim\Http\Body;
-use Slim\Http\Request;
-use Slim\Interfaces\Http\EnvironmentInterface;
-use Slim\Interfaces\RouteGroupInterface;
-use Slim\Interfaces\RouteInterface;
-use Slim\Interfaces\RouterInterface;
-
-/**
- * App
- *
- * This is the primary class with which you instantiate,
- * configure, and run a Slim Framework application.
- * The \Slim\App class also accepts Slim Framework middleware.
- *
- * @property-read array $settings App settings
- * @property-read EnvironmentInterface $environment
- * @property-read RequestInterface $request
- * @property-read ResponseInterface $response
- * @property-read RouterInterface $router
- * @property-read callable $errorHandler
- * @property-read callable $phpErrorHandler
- * @property-read callable $notFoundHandler function($request, $response)
- * @property-read callable $notAllowedHandler function($request, $response, $allowedHttpMethods)
- */
-class App
-{
-    use MiddlewareAwareTrait;
-
-    /**
-     * Current version
-     *
-     * @var string
-     */
-    const VERSION = '3.5.0';
-
-    /**
-     * Container
-     *
-     * @var ContainerInterface
-     */
-    private $container;
-
-    /********************************************************************************
-     * Constructor
-     *******************************************************************************/
-
-    /**
-     * Create new application
-     *
-     * @param ContainerInterface|array $container Either a ContainerInterface or an associative array of app settings
-     * @throws InvalidArgumentException when no container is provided that implements ContainerInterface
-     */
-    public function __construct($container = [])
-    {
-        if (is_array($container)) {
-            $container = new Container($container);
-        }
-        if (!$container instanceof ContainerInterface) {
-            throw new InvalidArgumentException('Expected a ContainerInterface');
-        }
-        $this->container = $container;
-    }
-
-    /**
-     * Enable access to the DI container by consumers of $app
-     *
-     * @return ContainerInterface
-     */
-    public function getContainer()
-    {
-        return $this->container;
-    }
-
-    /**
-     * Add middleware
-     *
-     * This method prepends new middleware to the app's middleware stack.
-     *
-     * @param  callable|string    $callable The callback routine
-     *
-     * @return static
-     */
-    public function add($callable)
-    {
-        return $this->addMiddleware(new DeferredCallable($callable, $this->container));
-    }
-
-    /**
-     * Calling a non-existant method on App checks to see if there's an item
-     * in the container that is callable and if so, calls it.
-     *
-     * @param  string $method
-     * @param  array $args
-     * @return mixed
-     */
-    public function __call($method, $args)
-    {
-        if ($this->container->has($method)) {
-            $obj = $this->container->get($method);
-            if (is_callable($obj)) {
-                return call_user_func_array($obj, $args);
-            }
-        }
-
-        throw new \BadMethodCallException("Method $method is not a valid method");
-    }
-
-    /********************************************************************************
-     * Router proxy methods
-     *******************************************************************************/
-
-    /**
-     * Add GET route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function get($pattern, $callable)
-    {
-        return $this->map(['GET'], $pattern, $callable);
-    }
-
-    /**
-     * Add POST route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function post($pattern, $callable)
-    {
-        return $this->map(['POST'], $pattern, $callable);
-    }
-
-    /**
-     * Add PUT route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function put($pattern, $callable)
-    {
-        return $this->map(['PUT'], $pattern, $callable);
-    }
-
-    /**
-     * Add PATCH route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function patch($pattern, $callable)
-    {
-        return $this->map(['PATCH'], $pattern, $callable);
-    }
-
-    /**
-     * Add DELETE route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function delete($pattern, $callable)
-    {
-        return $this->map(['DELETE'], $pattern, $callable);
-    }
-
-    /**
-     * Add OPTIONS route
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function options($pattern, $callable)
-    {
-        return $this->map(['OPTIONS'], $pattern, $callable);
-    }
-
-    /**
-     * Add route for any HTTP method
-     *
-     * @param  string $pattern  The route URI pattern
-     * @param  callable|string  $callable The route callback routine
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function any($pattern, $callable)
-    {
-        return $this->map(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], $pattern, $callable);
-    }
-
-    /**
-     * Add route with multiple methods
-     *
-     * @param  string[] $methods  Numeric array of HTTP method names
-     * @param  string   $pattern  The route URI pattern
-     * @param  callable|string    $callable The route callback routine
-     *
-     * @return RouteInterface
-     */
-    public function map(array $methods, $pattern, $callable)
-    {
-        if ($callable instanceof Closure) {
-            $callable = $callable->bindTo($this->container);
-        }
-
-        $route = $this->container->get('router')->map($methods, $pattern, $callable);
-        if (is_callable([$route, 'setContainer'])) {
-            $route->setContainer($this->container);
-        }
-
-        if (is_callable([$route, 'setOutputBuffering'])) {
-            $route->setOutputBuffering($this->container->get('settings')['outputBuffering']);
-        }
-
-        return $route;
-    }
-
-    /**
-     * Route Groups
-     *
-     * This method accepts a route pattern and a callback. All route
-     * declarations in the callback will be prepended by the group(s)
-     * that it is in.
-     *
-     * @param string   $pattern
-     * @param callable $callable
-     *
-     * @return RouteGroupInterface
-     */
-    public function group($pattern, $callable)
-    {
-        /** @var RouteGroup $group */
-        $group = $this->container->get('router')->pushGroup($pattern, $callable);
-        $group->setContainer($this->container);
-        $group($this);
-        $this->container->get('router')->popGroup();
-        return $group;
-    }
-
-    /********************************************************************************
-     * Runner
-     *******************************************************************************/
-
-    /**
-     * Run application
-     *
-     * This method traverses the application middleware stack and then sends the
-     * resultant Response object to the HTTP client.
-     *
-     * @param bool|false $silent
-     * @return ResponseInterface
-     *
-     * @throws Exception
-     * @throws MethodNotAllowedException
-     * @throws NotFoundException
-     */
-    public function run($silent = false)
-    {
-        $request = $this->container->get('request');
-        $response = $this->container->get('response');
-
-        $response = $this->process($request, $response);
-
-        if (!$silent) {
-            $this->respond($response);
-        }
-
-        return $response;
-    }
-
-    /**
-     * Process a request
-     *
-     * This method traverses the application middleware stack and then returns the
-     * resultant Response object.
-     *
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface $response
-     * @return ResponseInterface
-     *
-     * @throws Exception
-     * @throws MethodNotAllowedException
-     * @throws NotFoundException
-     */
-    public function process(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        // Ensure basePath is set
-        $router = $this->container->get('router');
-        if (is_callable([$request->getUri(), 'getBasePath']) && is_callable([$router, 'setBasePath'])) {
-            $router->setBasePath($request->getUri()->getBasePath());
-        }
-
-        // Dispatch the Router first if the setting for this is on
-        if ($this->container->get('settings')['determineRouteBeforeAppMiddleware'] === true) {
-            // Dispatch router (note: you won't be able to alter routes after this)
-            $request = $this->dispatchRouterAndPrepareRoute($request, $router);
-        }
-
-        // Traverse middleware stack
-        try {
-            $response = $this->callMiddlewareStack($request, $response);
-        } catch (Exception $e) {
-            $response = $this->handleException($e, $request, $response);
-        } catch (Throwable $e) {
-            $response = $this->handlePhpError($e, $request, $response);
-        }
-
-        $response = $this->finalize($response);
-
-        return $response;
-    }
-
-    /**
-     * Send the response the client
-     *
-     * @param ResponseInterface $response
-     */
-    public function respond(ResponseInterface $response)
-    {
-        // Send response
-        if (!headers_sent()) {
-            // Status
-            header(sprintf(
-                'HTTP/%s %s %s',
-                $response->getProtocolVersion(),
-                $response->getStatusCode(),
-                $response->getReasonPhrase()
-            ));
-
-            // Headers
-            foreach ($response->getHeaders() as $name => $values) {
-                foreach ($values as $value) {
-                    header(sprintf('%s: %s', $name, $value), false);
-                }
-            }
-        }
-
-        // Body
-        if (!$this->isEmptyResponse($response)) {
-            $body = $response->getBody();
-            if ($body->isSeekable()) {
-                $body->rewind();
-            }
-            $settings       = $this->container->get('settings');
-            $chunkSize      = $settings['responseChunkSize'];
-
-            $contentLength  = $response->getHeaderLine('Content-Length');
-            if (!$contentLength) {
-                $contentLength = $body->getSize();
-            }
-
-
-            if (isset($contentLength)) {
-                $amountToRead = $contentLength;
-                while ($amountToRead > 0 && !$body->eof()) {
-                    $data = $body->read(min($chunkSize, $amountToRead));
-                    echo $data;
-                    
-                    $amountToRead -= strlen($data);
-                                        
-                    if (connection_status() != CONNECTION_NORMAL) {
-                        break;
-                    }
-                }
-            } else {
-                while (!$body->eof()) {
-                    echo $body->read($chunkSize);
-                    if (connection_status() != CONNECTION_NORMAL) {
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Invoke application
-     *
-     * This method implements the middleware interface. It receives
-     * Request and Response objects, and it returns a Response object
-     * after compiling the routes registered in the Router and dispatching
-     * the Request object to the appropriate Route callback routine.
-     *
-     * @param  ServerRequestInterface $request  The most recent Request object
-     * @param  ResponseInterface      $response The most recent Response object
-     *
-     * @return ResponseInterface
-     * @throws MethodNotAllowedException
-     * @throws NotFoundException
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        // Get the route info
-        $routeInfo = $request->getAttribute('routeInfo');
-
-        /** @var \Slim\Interfaces\RouterInterface $router */
-        $router = $this->container->get('router');
-
-        // If router hasn't been dispatched or the URI changed then dispatch
-        if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) {
-            $request = $this->dispatchRouterAndPrepareRoute($request, $router);
-            $routeInfo = $request->getAttribute('routeInfo');
-        }
-
-        if ($routeInfo[0] === Dispatcher::FOUND) {
-            $route = $router->lookupRoute($routeInfo[1]);
-            return $route->run($request, $response);
-        } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) {
-            if (!$this->container->has('notAllowedHandler')) {
-                throw new MethodNotAllowedException($request, $response, $routeInfo[1]);
-            }
-            /** @var callable $notAllowedHandler */
-            $notAllowedHandler = $this->container->get('notAllowedHandler');
-            return $notAllowedHandler($request, $response, $routeInfo[1]);
-        }
-
-        if (!$this->container->has('notFoundHandler')) {
-            throw new NotFoundException($request, $response);
-        }
-        /** @var callable $notFoundHandler */
-        $notFoundHandler = $this->container->get('notFoundHandler');
-        return $notFoundHandler($request, $response);
-    }
-
-    /**
-     * Perform a sub-request from within an application route
-     *
-     * This method allows you to prepare and initiate a sub-request, run within
-     * the context of the current request. This WILL NOT issue a remote HTTP
-     * request. Instead, it will route the provided URL, method, headers,
-     * cookies, body, and server variables against the set of registered
-     * application routes. The result response object is returned.
-     *
-     * @param  string            $method      The request method (e.g., GET, POST, PUT, etc.)
-     * @param  string            $path        The request URI path
-     * @param  string            $query       The request URI query string
-     * @param  array             $headers     The request headers (key-value array)
-     * @param  array             $cookies     The request cookies (key-value array)
-     * @param  string            $bodyContent The request body
-     * @param  ResponseInterface $response     The response object (optional)
-     * @return ResponseInterface
-     */
-    public function subRequest(
-        $method,
-        $path,
-        $query = '',
-        array $headers = [],
-        array $cookies = [],
-        $bodyContent = '',
-        ResponseInterface $response = null
-    ) {
-        $env = $this->container->get('environment');
-        $uri = Uri::createFromEnvironment($env)->withPath($path)->withQuery($query);
-        $headers = new Headers($headers);
-        $serverParams = $env->all();
-        $body = new Body(fopen('php://temp', 'r+'));
-        $body->write($bodyContent);
-        $body->rewind();
-        $request = new Request($method, $uri, $headers, $cookies, $serverParams, $body);
-
-        if (!$response) {
-            $response = $this->container->get('response');
-        }
-
-        return $this($request, $response);
-    }
-
-    /**
-     * Dispatch the router to find the route. Prepare the route for use.
-     *
-     * @param ServerRequestInterface $request
-     * @param RouterInterface        $router
-     * @return ServerRequestInterface
-     */
-    protected function dispatchRouterAndPrepareRoute(ServerRequestInterface $request, RouterInterface $router)
-    {
-        $routeInfo = $router->dispatch($request);
-
-        if ($routeInfo[0] === Dispatcher::FOUND) {
-            $routeArguments = [];
-            foreach ($routeInfo[2] as $k => $v) {
-                $routeArguments[$k] = urldecode($v);
-            }
-
-            $route = $router->lookupRoute($routeInfo[1]);
-            $route->prepare($request, $routeArguments);
-
-            // add route to the request's attributes in case a middleware or handler needs access to the route
-            $request = $request->withAttribute('route', $route);
-        }
-
-        $routeInfo['request'] = [$request->getMethod(), (string) $request->getUri()];
-
-        return $request->withAttribute('routeInfo', $routeInfo);
-    }
-
-    /**
-     * Finalize response
-     *
-     * @param ResponseInterface $response
-     * @return ResponseInterface
-     */
-    protected function finalize(ResponseInterface $response)
-    {
-        // stop PHP sending a Content-Type automatically
-        ini_set('default_mimetype', '');
-
-        if ($this->isEmptyResponse($response)) {
-            return $response->withoutHeader('Content-Type')->withoutHeader('Content-Length');
-        }
-
-        // Add Content-Length header if `addContentLengthHeader` setting is set
-        if (isset($this->container->get('settings')['addContentLengthHeader']) &&
-            $this->container->get('settings')['addContentLengthHeader'] == true) {
-            if (ob_get_length() > 0) {
-                throw new \RuntimeException("Unexpected data in output buffer. " .
-                    "Maybe you have characters before an opening <?php tag?");
-            }
-            $size = $response->getBody()->getSize();
-            if ($size !== null && !$response->hasHeader('Content-Length')) {
-                $response = $response->withHeader('Content-Length', (string) $size);
-            }
-        }
-
-        return $response;
-    }
-
-    /**
-     * Helper method, which returns true if the provided response must not output a body and false
-     * if the response could have a body.
-     *
-     * @see https://tools.ietf.org/html/rfc7231
-     *
-     * @param ResponseInterface $response
-     * @return bool
-     */
-    protected function isEmptyResponse(ResponseInterface $response)
-    {
-        if (method_exists($response, 'isEmpty')) {
-            return $response->isEmpty();
-        }
-
-        return in_array($response->getStatusCode(), [204, 205, 304]);
-    }
-
-    /**
-     * Call relevant handler from the Container if needed. If it doesn't exist,
-     * then just re-throw.
-     *
-     * @param  Exception $e
-     * @param  ServerRequestInterface $request
-     * @param  ResponseInterface $response
-     *
-     * @return ResponseInterface
-     * @throws Exception if a handler is needed and not found
-     */
-    protected function handleException(Exception $e, ServerRequestInterface $request, ResponseInterface $response)
-    {
-        if ($e instanceof MethodNotAllowedException) {
-            $handler = 'notAllowedHandler';
-            $params = [$e->getRequest(), $e->getResponse(), $e->getAllowedMethods()];
-        } elseif ($e instanceof NotFoundException) {
-            $handler = 'notFoundHandler';
-            $params = [$e->getRequest(), $e->getResponse()];
-        } elseif ($e instanceof SlimException) {
-            // This is a Stop exception and contains the response
-            return $e->getResponse();
-        } else {
-            // Other exception, use $request and $response params
-            $handler = 'errorHandler';
-            $params = [$request, $response, $e];
-        }
-
-        if ($this->container->has($handler)) {
-            $callable = $this->container->get($handler);
-            // Call the registered handler
-            return call_user_func_array($callable, $params);
-        }
-
-        // No handlers found, so just throw the exception
-        throw $e;
-    }
-
-    /**
-     * Call relevant handler from the Container if needed. If it doesn't exist,
-     * then just re-throw.
-     *
-     * @param  Throwable $e
-     * @param  ServerRequestInterface $request
-     * @param  ResponseInterface $response
-     * @return ResponseInterface
-     * @throws Throwable
-     */
-    protected function handlePhpError(Throwable $e, ServerRequestInterface $request, ResponseInterface $response)
-    {
-        $handler = 'phpErrorHandler';
-        $params = [$request, $response, $e];
-
-        if ($this->container->has($handler)) {
-            $callable = $this->container->get($handler);
-            // Call the registered handler
-            return call_user_func_array($callable, $params);
-        }
-
-        // No handlers found, so just throw the exception
-        throw $e;
-    }
-}
diff --git a/vendor/slim/slim/Slim/CallableResolver.php b/vendor/slim/slim/Slim/CallableResolver.php
deleted file mode 100644
index 169ac48..0000000
--- a/vendor/slim/slim/Slim/CallableResolver.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use RuntimeException;
-use Interop\Container\ContainerInterface;
-use Slim\Interfaces\CallableResolverInterface;
-
-/**
- * This class resolves a string of the format 'class:method' into a closure
- * that can be dispatched.
- */
-final class CallableResolver implements CallableResolverInterface
-{
-    /**
-     * @var ContainerInterface
-     */
-    private $container;
-
-    /**
-     * @param ContainerInterface $container
-     */
-    public function __construct(ContainerInterface $container)
-    {
-        $this->container = $container;
-    }
-
-    /**
-     * Resolve toResolve into a closure that that the router can dispatch.
-     *
-     * If toResolve is of the format 'class:method', then try to extract 'class'
-     * from the container otherwise instantiate it and then dispatch 'method'.
-     *
-     * @param mixed $toResolve
-     *
-     * @return callable
-     *
-     * @throws RuntimeException if the callable does not exist
-     * @throws RuntimeException if the callable is not resolvable
-     */
-    public function resolve($toResolve)
-    {
-        $resolved = $toResolve;
-
-        if (!is_callable($toResolve) && is_string($toResolve)) {
-            // check for slim callable as "class:method"
-            $callablePattern = '!^([^\:]+)\:([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)$!';
-            if (preg_match($callablePattern, $toResolve, $matches)) {
-                $class = $matches[1];
-                $method = $matches[2];
-
-                if ($this->container->has($class)) {
-                    $resolved = [$this->container->get($class), $method];
-                } else {
-                    if (!class_exists($class)) {
-                        throw new RuntimeException(sprintf('Callable %s does not exist', $class));
-                    }
-                    $resolved = [new $class($this->container), $method];
-                }
-            } else {
-                // check if string is something in the DIC that's callable or is a class name which
-                // has an __invoke() method
-                $class = $toResolve;
-                if ($this->container->has($class)) {
-                    $resolved = $this->container->get($class);
-                } else {
-                    if (!class_exists($class)) {
-                        throw new RuntimeException(sprintf('Callable %s does not exist', $class));
-                    }
-                    $resolved = new $class($this->container);
-                }
-            }
-        }
-
-        if (!is_callable($resolved)) {
-            throw new RuntimeException(sprintf(
-                '%s is not resolvable',
-                is_array($toResolve) || is_object($toResolve) ? json_encode($toResolve) : $toResolve
-            ));
-        }
-
-        return $resolved;
-    }
-}
diff --git a/vendor/slim/slim/Slim/CallableResolverAwareTrait.php b/vendor/slim/slim/Slim/CallableResolverAwareTrait.php
deleted file mode 100644
index f7ff485..0000000
--- a/vendor/slim/slim/Slim/CallableResolverAwareTrait.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use RuntimeException;
-use Interop\Container\ContainerInterface;
-use Slim\Interfaces\CallableResolverInterface;
-
-/**
- * ResolveCallable
- *
- * This is an internal class that enables resolution of 'class:method' strings
- * into a closure. This class is an implementation detail and is used only inside
- * of the Slim application.
- *
- * @property ContainerInterface $container
- */
-trait CallableResolverAwareTrait
-{
-    /**
-     * Resolve a string of the format 'class:method' into a closure that the
-     * router can dispatch.
-     *
-     * @param callable|string $callable
-     *
-     * @return \Closure
-     *
-     * @throws RuntimeException If the string cannot be resolved as a callable
-     */
-    protected function resolveCallable($callable)
-    {
-        if (!$this->container instanceof ContainerInterface) {
-            return $callable;
-        }
-
-        /** @var CallableResolverInterface $resolver */
-        $resolver = $this->container->get('callableResolver');
-
-        return $resolver->resolve($callable);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Collection.php b/vendor/slim/slim/Slim/Collection.php
deleted file mode 100644
index 5d19734..0000000
--- a/vendor/slim/slim/Slim/Collection.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use ArrayIterator;
-use Slim\Interfaces\CollectionInterface;
-
-/**
- * Collection
- *
- * This class provides a common interface used by many other
- * classes in a Slim application that manage "collections"
- * of data that must be inspected and/or manipulated
- */
-class Collection implements CollectionInterface
-{
-    /**
-     * The source data
-     *
-     * @var array
-     */
-    protected $data = [];
-
-    /**
-     * Create new collection
-     *
-     * @param array $items Pre-populate collection with this key-value array
-     */
-    public function __construct(array $items = [])
-    {
-        $this->replace($items);
-    }
-
-    /********************************************************************************
-     * Collection interface
-     *******************************************************************************/
-
-    /**
-     * Set collection item
-     *
-     * @param string $key   The data key
-     * @param mixed  $value The data value
-     */
-    public function set($key, $value)
-    {
-        $this->data[$key] = $value;
-    }
-
-    /**
-     * Get collection item for key
-     *
-     * @param string $key     The data key
-     * @param mixed  $default The default value to return if data key does not exist
-     *
-     * @return mixed The key's value, or the default value
-     */
-    public function get($key, $default = null)
-    {
-        return $this->has($key) ? $this->data[$key] : $default;
-    }
-
-    /**
-     * Add item to collection, replacing existing items with the same data key
-     *
-     * @param array $items Key-value array of data to append to this collection
-     */
-    public function replace(array $items)
-    {
-        foreach ($items as $key => $value) {
-            $this->set($key, $value);
-        }
-    }
-
-    /**
-     * Get all items in collection
-     *
-     * @return array The collection's source data
-     */
-    public function all()
-    {
-        return $this->data;
-    }
-
-    /**
-     * Get collection keys
-     *
-     * @return array The collection's source data keys
-     */
-    public function keys()
-    {
-        return array_keys($this->data);
-    }
-
-    /**
-     * Does this collection have a given key?
-     *
-     * @param string $key The data key
-     *
-     * @return bool
-     */
-    public function has($key)
-    {
-        return array_key_exists($key, $this->data);
-    }
-
-    /**
-     * Remove item from collection
-     *
-     * @param string $key The data key
-     */
-    public function remove($key)
-    {
-        unset($this->data[$key]);
-    }
-
-    /**
-     * Remove all items from collection
-     */
-    public function clear()
-    {
-        $this->data = [];
-    }
-
-    /********************************************************************************
-     * ArrayAccess interface
-     *******************************************************************************/
-
-    /**
-     * Does this collection have a given key?
-     *
-     * @param  string $key The data key
-     *
-     * @return bool
-     */
-    public function offsetExists($key)
-    {
-        return $this->has($key);
-    }
-
-    /**
-     * Get collection item for key
-     *
-     * @param string $key The data key
-     *
-     * @return mixed The key's value, or the default value
-     */
-    public function offsetGet($key)
-    {
-        return $this->get($key);
-    }
-
-    /**
-     * Set collection item
-     *
-     * @param string $key   The data key
-     * @param mixed  $value The data value
-     */
-    public function offsetSet($key, $value)
-    {
-        $this->set($key, $value);
-    }
-
-    /**
-     * Remove item from collection
-     *
-     * @param string $key The data key
-     */
-    public function offsetUnset($key)
-    {
-        $this->remove($key);
-    }
-
-    /**
-     * Get number of items in collection
-     *
-     * @return int
-     */
-    public function count()
-    {
-        return count($this->data);
-    }
-
-    /********************************************************************************
-     * IteratorAggregate interface
-     *******************************************************************************/
-
-    /**
-     * Get collection iterator
-     *
-     * @return \ArrayIterator
-     */
-    public function getIterator()
-    {
-        return new ArrayIterator($this->data);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Container.php b/vendor/slim/slim/Slim/Container.php
deleted file mode 100644
index 2d15a8d..0000000
--- a/vendor/slim/slim/Slim/Container.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Interop\Container\ContainerInterface;
-use Interop\Container\Exception\ContainerException;
-use Pimple\Container as PimpleContainer;
-use Slim\Exception\ContainerValueNotFoundException;
-use Slim\Exception\ContainerException as SlimContainerException;
-
-/**
- * Slim's default DI container is Pimple.
- *
- * Slim\App expects a container that implements Interop\Container\ContainerInterface
- * with these service keys configured and ready for use:
- *
- *  - settings: an array or instance of \ArrayAccess
- *  - environment: an instance of \Slim\Interfaces\Http\EnvironmentInterface
- *  - request: an instance of \Psr\Http\Message\ServerRequestInterface
- *  - response: an instance of \Psr\Http\Message\ResponseInterface
- *  - router: an instance of \Slim\Interfaces\RouterInterface
- *  - foundHandler: an instance of \Slim\Interfaces\InvocationStrategyInterface
- *  - errorHandler: a callable with the signature: function($request, $response, $exception)
- *  - notFoundHandler: a callable with the signature: function($request, $response)
- *  - notAllowedHandler: a callable with the signature: function($request, $response, $allowedHttpMethods)
- *  - callableResolver: an instance of callableResolver
- *
- * @property-read array settings
- * @property-read \Slim\Interfaces\Http\EnvironmentInterface environment
- * @property-read \Psr\Http\Message\ServerRequestInterface request
- * @property-read \Psr\Http\Message\ResponseInterface response
- * @property-read \Slim\Interfaces\RouterInterface router
- * @property-read \Slim\Interfaces\InvocationStrategyInterface foundHandler
- * @property-read callable errorHandler
- * @property-read callable notFoundHandler
- * @property-read callable notAllowedHandler
- * @property-read \Slim\Interfaces\CallableResolverInterface callableResolver
- */
-class Container extends PimpleContainer implements ContainerInterface
-{
-    /**
-     * Default settings
-     *
-     * @var array
-     */
-    private $defaultSettings = [
-        'httpVersion' => '1.1',
-        'responseChunkSize' => 4096,
-        'outputBuffering' => 'append',
-        'determineRouteBeforeAppMiddleware' => false,
-        'displayErrorDetails' => false,
-        'addContentLengthHeader' => true,
-        'routerCacheFile' => false,
-    ];
-
-    /**
-     * Create new container
-     *
-     * @param array $values The parameters or objects.
-     */
-    public function __construct(array $values = [])
-    {
-        parent::__construct($values);
-
-        $userSettings = isset($values['settings']) ? $values['settings'] : [];
-        $this->registerDefaultServices($userSettings);
-    }
-
-    /**
-     * This function registers the default services that Slim needs to work.
-     *
-     * All services are shared - that is, they are registered such that the
-     * same instance is returned on subsequent calls.
-     *
-     * @param array $userSettings Associative array of application settings
-     *
-     * @return void
-     */
-    private function registerDefaultServices($userSettings)
-    {
-        $defaultSettings = $this->defaultSettings;
-
-        /**
-         * This service MUST return an array or an
-         * instance of \ArrayAccess.
-         *
-         * @return array|\ArrayAccess
-         */
-        $this['settings'] = function () use ($userSettings, $defaultSettings) {
-            return new Collection(array_merge($defaultSettings, $userSettings));
-        };
-
-        $defaultProvider = new DefaultServicesProvider();
-        $defaultProvider->register($this);
-    }
-
-    /********************************************************************************
-     * Methods to satisfy Interop\Container\ContainerInterface
-     *******************************************************************************/
-
-    /**
-     * Finds an entry of the container by its identifier and returns it.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @throws ContainerValueNotFoundException  No entry was found for this identifier.
-     * @throws ContainerException               Error while retrieving the entry.
-     *
-     * @return mixed Entry.
-     */
-    public function get($id)
-    {
-        if (!$this->offsetExists($id)) {
-            throw new ContainerValueNotFoundException(sprintf('Identifier "%s" is not defined.', $id));
-        }
-        try {
-            return $this->offsetGet($id);
-        } catch (\InvalidArgumentException $exception) {
-            if ($this->exceptionThrownByContainer($exception)) {
-                throw new SlimContainerException(
-                    sprintf('Container error while retrieving "%s"', $id),
-                    null,
-                    $exception
-                );
-            } else {
-                throw $exception;
-            }
-        }
-    }
-
-    /**
-     * Tests whether an exception needs to be recast for compliance with Container-Interop.  This will be if the
-     * exception was thrown by Pimple.
-     *
-     * @param \InvalidArgumentException $exception
-     *
-     * @return bool
-     */
-    private function exceptionThrownByContainer(\InvalidArgumentException $exception)
-    {
-        $trace = $exception->getTrace()[0];
-
-        return $trace['class'] === PimpleContainer::class && $trace['function'] === 'offsetGet';
-    }
-
-    /**
-     * Returns true if the container can return an entry for the given identifier.
-     * Returns false otherwise.
-     *
-     * @param string $id Identifier of the entry to look for.
-     *
-     * @return boolean
-     */
-    public function has($id)
-    {
-        return $this->offsetExists($id);
-    }
-
-
-    /********************************************************************************
-     * Magic methods for convenience
-     *******************************************************************************/
-
-    public function __get($name)
-    {
-        return $this->get($name);
-    }
-
-    public function __isset($name)
-    {
-        return $this->has($name);
-    }
-}
diff --git a/vendor/slim/slim/Slim/DefaultServicesProvider.php b/vendor/slim/slim/Slim/DefaultServicesProvider.php
deleted file mode 100644
index 5e1398d..0000000
--- a/vendor/slim/slim/Slim/DefaultServicesProvider.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Slim\Handlers\PhpError;
-use Slim\Handlers\Error;
-use Slim\Handlers\NotFound;
-use Slim\Handlers\NotAllowed;
-use Slim\Handlers\Strategies\RequestResponse;
-use Slim\Http\Environment;
-use Slim\Http\Headers;
-use Slim\Http\Request;
-use Slim\Http\Response;
-use Slim\Interfaces\CallableResolverInterface;
-use Slim\Interfaces\Http\EnvironmentInterface;
-use Slim\Interfaces\InvocationStrategyInterface;
-use Slim\Interfaces\RouterInterface;
-
-/**
- * Slim's default Service Provider.
- */
-class DefaultServicesProvider
-{
-    /**
-     * Register Slim's default services.
-     *
-     * @param Container $container A DI container implementing ArrayAccess and container-interop.
-     */
-    public function register($container)
-    {
-        if (!isset($container['environment'])) {
-            /**
-             * This service MUST return a shared instance
-             * of \Slim\Interfaces\Http\EnvironmentInterface.
-             *
-             * @return EnvironmentInterface
-             */
-            $container['environment'] = function () {
-                return new Environment($_SERVER);
-            };
-        }
-
-        if (!isset($container['request'])) {
-            /**
-             * PSR-7 Request object
-             *
-             * @param Container $container
-             *
-             * @return ServerRequestInterface
-             */
-            $container['request'] = function ($container) {
-                return Request::createFromEnvironment($container->get('environment'));
-            };
-        }
-
-        if (!isset($container['response'])) {
-            /**
-             * PSR-7 Response object
-             *
-             * @param Container $container
-             *
-             * @return ResponseInterface
-             */
-            $container['response'] = function ($container) {
-                $headers = new Headers(['Content-Type' => 'text/html; charset=UTF-8']);
-                $response = new Response(200, $headers);
-
-                return $response->withProtocolVersion($container->get('settings')['httpVersion']);
-            };
-        }
-
-        if (!isset($container['router'])) {
-            /**
-             * This service MUST return a SHARED instance
-             * of \Slim\Interfaces\RouterInterface.
-             *
-             * @param Container $container
-             *
-             * @return RouterInterface
-             */
-            $container['router'] = function ($container) {
-                $routerCacheFile = false;
-                if (isset($container->get('settings')['routerCacheFile'])) {
-                    $routerCacheFile = $container->get('settings')['routerCacheFile'];
-                }
-                
-                return (new Router)->setCacheFile($routerCacheFile);
-            };
-        }
-
-        if (!isset($container['foundHandler'])) {
-            /**
-             * This service MUST return a SHARED instance
-             * of \Slim\Interfaces\InvocationStrategyInterface.
-             *
-             * @return InvocationStrategyInterface
-             */
-            $container['foundHandler'] = function () {
-                return new RequestResponse;
-            };
-        }
-
-        if (!isset($container['phpErrorHandler'])) {
-            /**
-             * This service MUST return a callable
-             * that accepts three arguments:
-             *
-             * 1. Instance of \Psr\Http\Message\ServerRequestInterface
-             * 2. Instance of \Psr\Http\Message\ResponseInterface
-             * 3. Instance of \Error
-             *
-             * The callable MUST return an instance of
-             * \Psr\Http\Message\ResponseInterface.
-             *
-             * @param Container $container
-             *
-             * @return callable
-             */
-            $container['phpErrorHandler'] = function ($container) {
-                return new PhpError($container->get('settings')['displayErrorDetails']);
-            };
-        }
-
-        if (!isset($container['errorHandler'])) {
-            /**
-             * This service MUST return a callable
-             * that accepts three arguments:
-             *
-             * 1. Instance of \Psr\Http\Message\ServerRequestInterface
-             * 2. Instance of \Psr\Http\Message\ResponseInterface
-             * 3. Instance of \Exception
-             *
-             * The callable MUST return an instance of
-             * \Psr\Http\Message\ResponseInterface.
-             *
-             * @param Container $container
-             *
-             * @return callable
-             */
-            $container['errorHandler'] = function ($container) {
-                return new Error($container->get('settings')['displayErrorDetails']);
-            };
-        }
-
-        if (!isset($container['notFoundHandler'])) {
-            /**
-             * This service MUST return a callable
-             * that accepts two arguments:
-             *
-             * 1. Instance of \Psr\Http\Message\ServerRequestInterface
-             * 2. Instance of \Psr\Http\Message\ResponseInterface
-             *
-             * The callable MUST return an instance of
-             * \Psr\Http\Message\ResponseInterface.
-             *
-             * @return callable
-             */
-            $container['notFoundHandler'] = function () {
-                return new NotFound;
-            };
-        }
-
-        if (!isset($container['notAllowedHandler'])) {
-            /**
-             * This service MUST return a callable
-             * that accepts three arguments:
-             *
-             * 1. Instance of \Psr\Http\Message\ServerRequestInterface
-             * 2. Instance of \Psr\Http\Message\ResponseInterface
-             * 3. Array of allowed HTTP methods
-             *
-             * The callable MUST return an instance of
-             * \Psr\Http\Message\ResponseInterface.
-             *
-             * @return callable
-             */
-            $container['notAllowedHandler'] = function () {
-                return new NotAllowed;
-            };
-        }
-
-        if (!isset($container['callableResolver'])) {
-            /**
-             * Instance of \Slim\Interfaces\CallableResolverInterface
-             *
-             * @param Container $container
-             *
-             * @return CallableResolverInterface
-             */
-            $container['callableResolver'] = function ($container) {
-                return new CallableResolver($container);
-            };
-        }
-    }
-}
diff --git a/vendor/slim/slim/Slim/DeferredCallable.php b/vendor/slim/slim/Slim/DeferredCallable.php
deleted file mode 100644
index af5aed7..0000000
--- a/vendor/slim/slim/Slim/DeferredCallable.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-
-namespace Slim;
-
-use Closure;
-use Interop\Container\ContainerInterface;
-
-class DeferredCallable
-{
-    use CallableResolverAwareTrait;
-
-    private $callable;
-    /** @var  ContainerInterface */
-    private $container;
-
-    /**
-     * DeferredMiddleware constructor.
-     * @param callable|string $callable
-     * @param ContainerInterface $container
-     */
-    public function __construct($callable, ContainerInterface $container = null)
-    {
-        $this->callable = $callable;
-        $this->container = $container;
-    }
-
-    public function __invoke()
-    {
-        $callable = $this->resolveCallable($this->callable);
-        if ($callable instanceof Closure) {
-            $callable = $callable->bindTo($this->container);
-        }
-
-        $args = func_get_args();
-
-        return call_user_func_array($callable, $args);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Exception/ContainerException.php b/vendor/slim/slim/Slim/Exception/ContainerException.php
deleted file mode 100644
index 0200e1a..0000000
--- a/vendor/slim/slim/Slim/Exception/ContainerException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/codeguy/Slim
- * @copyright Copyright (c) 2011-2015 Josh Lockhart
- * @license   https://github.com/codeguy/Slim/blob/master/LICENSE (MIT License)
- */
-namespace Slim\Exception;
-
-use InvalidArgumentException;
-use Interop\Container\Exception\ContainerException as InteropContainerException;
-
-/**
- * Container Exception
- */
-class ContainerException extends InvalidArgumentException implements InteropContainerException
-{
-
-}
diff --git a/vendor/slim/slim/Slim/Exception/ContainerValueNotFoundException.php b/vendor/slim/slim/Slim/Exception/ContainerValueNotFoundException.php
deleted file mode 100644
index 0ea7671..0000000
--- a/vendor/slim/slim/Slim/Exception/ContainerValueNotFoundException.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/codeguy/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/codeguy/Slim/blob/master/LICENSE (MIT License)
- */
-namespace Slim\Exception;
-
-use RuntimeException;
-use Interop\Container\Exception\NotFoundException as InteropNotFoundException;
-
-/**
- * Not Found Exception
- */
-class ContainerValueNotFoundException extends RuntimeException implements InteropNotFoundException
-{
-
-}
diff --git a/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php b/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php
deleted file mode 100644
index d104d19..0000000
--- a/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/codeguy/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/codeguy/Slim/blob/master/LICENSE (MIT License)
- */
-namespace Slim\Exception;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-class MethodNotAllowedException extends SlimException
-{
-    /**
-     * HTTP methods allowed
-     *
-     * @var string[]
-     */
-    protected $allowedMethods;
-
-    /**
-     * Create new exception
-     *
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface $response
-     * @param string[] $allowedMethods
-     */
-    public function __construct(ServerRequestInterface $request, ResponseInterface $response, array $allowedMethods)
-    {
-        parent::__construct($request, $response);
-        $this->allowedMethods = $allowedMethods;
-    }
-
-    /**
-     * Get allowed methods
-     *
-     * @return string[]
-     */
-    public function getAllowedMethods()
-    {
-        return $this->allowedMethods;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Exception/NotFoundException.php b/vendor/slim/slim/Slim/Exception/NotFoundException.php
deleted file mode 100644
index 65365eb..0000000
--- a/vendor/slim/slim/Slim/Exception/NotFoundException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/codeguy/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/codeguy/Slim/blob/master/LICENSE (MIT License)
- */
-namespace Slim\Exception;
-
-class NotFoundException extends SlimException
-{
-
-}
diff --git a/vendor/slim/slim/Slim/Exception/SlimException.php b/vendor/slim/slim/Slim/Exception/SlimException.php
deleted file mode 100644
index b8a03a5..0000000
--- a/vendor/slim/slim/Slim/Exception/SlimException.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Exception;
-
-use Exception;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Stop Exception
- *
- * This Exception is thrown when the Slim application needs to abort
- * processing and return control flow to the outer PHP script.
- */
-class SlimException extends Exception
-{
-    /**
-     * A request object
-     *
-     * @var ServerRequestInterface
-     */
-    protected $request;
-
-    /**
-     * A response object to send to the HTTP client
-     *
-     * @var ResponseInterface
-     */
-    protected $response;
-
-    /**
-     * Create new exception
-     *
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface $response
-     */
-    public function __construct(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        parent::__construct();
-        $this->request = $request;
-        $this->response = $response;
-    }
-
-    /**
-     * Get request
-     *
-     * @return ServerRequestInterface
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Get response
-     *
-     * @return ResponseInterface
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/AbstractError.php b/vendor/slim/slim/Slim/Handlers/AbstractError.php
deleted file mode 100644
index 5a6cee3..0000000
--- a/vendor/slim/slim/Slim/Handlers/AbstractError.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-/**
- * Abstract Slim application error handler
- */
-abstract class AbstractError extends AbstractHandler
-{
-    /**
-     * @var bool
-     */
-    protected $displayErrorDetails;
-
-    /**
-     * Constructor
-     *
-     * @param bool $displayErrorDetails Set to true to display full details
-     */
-    public function __construct($displayErrorDetails = false)
-    {
-        $this->displayErrorDetails = (bool) $displayErrorDetails;
-    }
-
-    /**
-     * Write to the error log if displayErrorDetails is false
-     *
-     * @param \Exception|\Throwable $throwable
-     *
-     * @return void
-     */
-    protected function writeToErrorLog($throwable)
-    {
-        if ($this->displayErrorDetails) {
-            return;
-        }
-
-        $message = 'Slim Application Error:' . PHP_EOL;
-        $message .= $this->renderThrowableAsText($throwable);
-        while ($throwable = $throwable->getPrevious()) {
-            $message .= PHP_EOL . 'Previous error:' . PHP_EOL;
-            $message .= $this->renderThrowableAsText($throwable);
-        }
-
-        $message .= PHP_EOL . 'View in rendered output by enabling the "displayErrorDetails" setting.' . PHP_EOL;
-
-        $this->logError($message);
-    }
-
-    /**
-     * Render error as Text.
-     *
-     * @param \Exception|\Throwable $throwable
-     *
-     * @return string
-     */
-    protected function renderThrowableAsText($throwable)
-    {
-        $text = sprintf('Type: %s' . PHP_EOL, get_class($throwable));
-
-        if ($code = $throwable->getCode()) {
-            $text .= sprintf('Code: %s' . PHP_EOL, $code);
-        }
-
-        if ($message = $throwable->getMessage()) {
-            $text .= sprintf('Message: %s' . PHP_EOL, htmlentities($message));
-        }
-
-        if ($file = $throwable->getFile()) {
-            $text .= sprintf('File: %s' . PHP_EOL, $file);
-        }
-
-        if ($line = $throwable->getLine()) {
-            $text .= sprintf('Line: %s' . PHP_EOL, $line);
-        }
-
-        if ($trace = $throwable->getTraceAsString()) {
-            $text .= sprintf('Trace: %s', $trace);
-        }
-
-        return $text;
-    }
-
-    /**
-     * Wraps the error_log function so that this can be easily tested
-     *
-     * @param $message
-     */
-    protected function logError($message)
-    {
-        error_log($message);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/AbstractHandler.php b/vendor/slim/slim/Slim/Handlers/AbstractHandler.php
deleted file mode 100644
index decdf72..0000000
--- a/vendor/slim/slim/Slim/Handlers/AbstractHandler.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-use Psr\Http\Message\ServerRequestInterface;
-
-/**
- * Abstract Slim application handler
- */
-abstract class AbstractHandler
-{
-    /**
-     * Known handled content types
-     *
-     * @var array
-     */
-    protected $knownContentTypes = [
-        'application/json',
-        'application/xml',
-        'text/xml',
-        'text/html',
-    ];
-
-    /**
-     * Determine which content type we know about is wanted using Accept header
-     *
-     * Note: This method is a bare-bones implementation designed specifically for
-     * Slim's error handling requirements. Consider a fully-feature solution such
-     * as willdurand/negotiation for any other situation.
-     *
-     * @param ServerRequestInterface $request
-     * @return string
-     */
-    protected function determineContentType(ServerRequestInterface $request)
-    {
-        $acceptHeader = $request->getHeaderLine('Accept');
-        $selectedContentTypes = array_intersect(explode(',', $acceptHeader), $this->knownContentTypes);
-
-        if (count($selectedContentTypes)) {
-            return current($selectedContentTypes);
-        }
-
-        // handle +json and +xml specially
-        if (preg_match('/\+(json|xml)/', $acceptHeader, $matches)) {
-            $mediaType = 'application/' . $matches[1];
-            if (in_array($mediaType, $this->knownContentTypes)) {
-                return $mediaType;
-            }
-        }
-
-        return 'text/html';
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/Error.php b/vendor/slim/slim/Slim/Handlers/Error.php
deleted file mode 100644
index b995188..0000000
--- a/vendor/slim/slim/Slim/Handlers/Error.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Slim\Http\Body;
-use UnexpectedValueException;
-
-/**
- * Default Slim application error handler
- *
- * It outputs the error message and diagnostic information in either JSON, XML,
- * or HTML based on the Accept header.
- */
-class Error extends AbstractError
-{
-    /**
-     * Invoke error handler
-     *
-     * @param ServerRequestInterface $request   The most recent Request object
-     * @param ResponseInterface      $response  The most recent Response object
-     * @param \Exception             $exception The caught Exception object
-     *
-     * @return ResponseInterface
-     * @throws UnexpectedValueException
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, \Exception $exception)
-    {
-        $contentType = $this->determineContentType($request);
-        switch ($contentType) {
-            case 'application/json':
-                $output = $this->renderJsonErrorMessage($exception);
-                break;
-
-            case 'text/xml':
-            case 'application/xml':
-                $output = $this->renderXmlErrorMessage($exception);
-                break;
-
-            case 'text/html':
-                $output = $this->renderHtmlErrorMessage($exception);
-                break;
-            
-            default:
-                throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
-        }
-
-        $this->writeToErrorLog($exception);
-
-        $body = new Body(fopen('php://temp', 'r+'));
-        $body->write($output);
-
-        return $response
-                ->withStatus(500)
-                ->withHeader('Content-type', $contentType)
-                ->withBody($body);
-    }
-
-    /**
-     * Render HTML error page
-     *
-     * @param  \Exception $exception
-     *
-     * @return string
-     */
-    protected function renderHtmlErrorMessage(\Exception $exception)
-    {
-        $title = 'Slim Application Error';
-
-        if ($this->displayErrorDetails) {
-            $html = '<p>The application could not run because of the following error:</p>';
-            $html .= '<h2>Details</h2>';
-            $html .= $this->renderHtmlException($exception);
-
-            while ($exception = $exception->getPrevious()) {
-                $html .= '<h2>Previous exception</h2>';
-                $html .= $this->renderHtmlException($exception);
-            }
-        } else {
-            $html = '<p>A website error has occurred. Sorry for the temporary inconvenience.</p>';
-        }
-
-        $output = sprintf(
-            "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" .
-            "<title>%s</title><style>body{margin:0;padding:30px;font:12px/1.5 Helvetica,Arial,Verdana," .
-            "sans-serif;}h1{margin:0;font-size:48px;font-weight:normal;line-height:48px;}strong{" .
-            "display:inline-block;width:65px;}</style></head><body><h1>%s</h1>%s</body></html>",
-            $title,
-            $title,
-            $html
-        );
-
-        return $output;
-    }
-
-    /**
-     * Render exception as HTML.
-     *
-     * @param \Exception $exception
-     *
-     * @return string
-     */
-    protected function renderHtmlException(\Exception $exception)
-    {
-        $html = sprintf('<div><strong>Type:</strong> %s</div>', get_class($exception));
-
-        if (($code = $exception->getCode())) {
-            $html .= sprintf('<div><strong>Code:</strong> %s</div>', $code);
-        }
-
-        if (($message = $exception->getMessage())) {
-            $html .= sprintf('<div><strong>Message:</strong> %s</div>', htmlentities($message));
-        }
-
-        if (($file = $exception->getFile())) {
-            $html .= sprintf('<div><strong>File:</strong> %s</div>', $file);
-        }
-
-        if (($line = $exception->getLine())) {
-            $html .= sprintf('<div><strong>Line:</strong> %s</div>', $line);
-        }
-
-        if (($trace = $exception->getTraceAsString())) {
-            $html .= '<h2>Trace</h2>';
-            $html .= sprintf('<pre>%s</pre>', htmlentities($trace));
-        }
-
-        return $html;
-    }
-
-    /**
-     * Render JSON error
-     *
-     * @param \Exception $exception
-     *
-     * @return string
-     */
-    protected function renderJsonErrorMessage(\Exception $exception)
-    {
-        $error = [
-            'message' => 'Slim Application Error',
-        ];
-
-        if ($this->displayErrorDetails) {
-            $error['exception'] = [];
-
-            do {
-                $error['exception'][] = [
-                    'type' => get_class($exception),
-                    'code' => $exception->getCode(),
-                    'message' => $exception->getMessage(),
-                    'file' => $exception->getFile(),
-                    'line' => $exception->getLine(),
-                    'trace' => explode("\n", $exception->getTraceAsString()),
-                ];
-            } while ($exception = $exception->getPrevious());
-        }
-
-        return json_encode($error, JSON_PRETTY_PRINT);
-    }
-
-    /**
-     * Render XML error
-     *
-     * @param \Exception $exception
-     *
-     * @return string
-     */
-    protected function renderXmlErrorMessage(\Exception $exception)
-    {
-        $xml = "<error>\n  <message>Slim Application Error</message>\n";
-        if ($this->displayErrorDetails) {
-            do {
-                $xml .= "  <exception>\n";
-                $xml .= "    <type>" . get_class($exception) . "</type>\n";
-                $xml .= "    <code>" . $exception->getCode() . "</code>\n";
-                $xml .= "    <message>" . $this->createCdataSection($exception->getMessage()) . "</message>\n";
-                $xml .= "    <file>" . $exception->getFile() . "</file>\n";
-                $xml .= "    <line>" . $exception->getLine() . "</line>\n";
-                $xml .= "    <trace>" . $this->createCdataSection($exception->getTraceAsString()) . "</trace>\n";
-                $xml .= "  </exception>\n";
-            } while ($exception = $exception->getPrevious());
-        }
-        $xml .= "</error>";
-
-        return $xml;
-    }
-
-    /**
-     * Returns a CDATA section with the given content.
-     *
-     * @param  string $content
-     * @return string
-     */
-    private function createCdataSection($content)
-    {
-        return sprintf('<![CDATA[%s]]>', str_replace(']]>', ']]]]><![CDATA[>', $content));
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/NotAllowed.php b/vendor/slim/slim/Slim/Handlers/NotAllowed.php
deleted file mode 100644
index 3442f20..0000000
--- a/vendor/slim/slim/Slim/Handlers/NotAllowed.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Slim\Http\Body;
-use UnexpectedValueException;
-
-/**
- * Default Slim application not allowed handler
- *
- * It outputs a simple message in either JSON, XML or HTML based on the
- * Accept header.
- */
-class NotAllowed extends AbstractHandler
-{
-    /**
-     * Invoke error handler
-     *
-     * @param  ServerRequestInterface $request  The most recent Request object
-     * @param  ResponseInterface      $response The most recent Response object
-     * @param  string[]               $methods  Allowed HTTP methods
-     *
-     * @return ResponseInterface
-     * @throws UnexpectedValueException
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, array $methods)
-    {
-        if ($request->getMethod() === 'OPTIONS') {
-            $status = 200;
-            $contentType = 'text/plain';
-            $output = $this->renderPlainNotAllowedMessage($methods);
-        } else {
-            $status = 405;
-            $contentType = $this->determineContentType($request);
-            switch ($contentType) {
-                case 'application/json':
-                    $output = $this->renderJsonNotAllowedMessage($methods);
-                    break;
-
-                case 'text/xml':
-                case 'application/xml':
-                    $output = $this->renderXmlNotAllowedMessage($methods);
-                    break;
-
-                case 'text/html':
-                    $output = $this->renderHtmlNotAllowedMessage($methods);
-                    break;
-                default:
-                    throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
-            }
-        }
-
-        $body = new Body(fopen('php://temp', 'r+'));
-        $body->write($output);
-        $allow = implode(', ', $methods);
-
-        return $response
-                ->withStatus($status)
-                ->withHeader('Content-type', $contentType)
-                ->withHeader('Allow', $allow)
-                ->withBody($body);
-    }
-
-    /**
-     * Render PLAIN not allowed message
-     *
-     * @param  array                  $methods
-     * @return string
-     */
-    protected function renderPlainNotAllowedMessage($methods)
-    {
-        $allow = implode(', ', $methods);
-
-        return 'Allowed methods: ' . $allow;
-    }
-
-    /**
-     * Render JSON not allowed message
-     *
-     * @param  array                  $methods
-     * @return string
-     */
-    protected function renderJsonNotAllowedMessage($methods)
-    {
-        $allow = implode(', ', $methods);
-
-        return '{"message":"Method not allowed. Must be one of: ' . $allow . '"}';
-    }
-
-    /**
-     * Render XML not allowed message
-     *
-     * @param  array                  $methods
-     * @return string
-     */
-    protected function renderXmlNotAllowedMessage($methods)
-    {
-        $allow = implode(', ', $methods);
-
-        return "<root><message>Method not allowed. Must be one of: $allow</message></root>";
-    }
-
-    /**
-     * Render HTML not allowed message
-     *
-     * @param  array                  $methods
-     * @return string
-     */
-    protected function renderHtmlNotAllowedMessage($methods)
-    {
-        $allow = implode(', ', $methods);
-        $output = <<<END
-<html>
-    <head>
-        <title>Method not allowed</title>
-        <style>
-            body{
-                margin:0;
-                padding:30px;
-                font:12px/1.5 Helvetica,Arial,Verdana,sans-serif;
-            }
-            h1{
-                margin:0;
-                font-size:48px;
-                font-weight:normal;
-                line-height:48px;
-            }
-        </style>
-    </head>
-    <body>
-        <h1>Method not allowed</h1>
-        <p>Method not allowed. Must be one of: <strong>$allow</strong></p>
-    </body>
-</html>
-END;
-
-        return $output;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/NotFound.php b/vendor/slim/slim/Slim/Handlers/NotFound.php
deleted file mode 100644
index ab1d47a..0000000
--- a/vendor/slim/slim/Slim/Handlers/NotFound.php
+++ /dev/null
@@ -1,126 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Slim\Http\Body;
-use UnexpectedValueException;
-
-/**
- * Default Slim application not found handler.
- *
- * It outputs a simple message in either JSON, XML or HTML based on the
- * Accept header.
- */
-class NotFound extends AbstractHandler
-{
-    /**
-     * Invoke not found handler
-     *
-     * @param  ServerRequestInterface $request  The most recent Request object
-     * @param  ResponseInterface      $response The most recent Response object
-     *
-     * @return ResponseInterface
-     * @throws UnexpectedValueException
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        $contentType = $this->determineContentType($request);
-        switch ($contentType) {
-            case 'application/json':
-                $output = $this->renderJsonNotFoundOutput();
-                break;
-
-            case 'text/xml':
-            case 'application/xml':
-                $output = $this->renderXmlNotFoundOutput();
-                break;
-
-            case 'text/html':
-                $output = $this->renderHtmlNotFoundOutput($request);
-                break;
-            
-            default:
-                throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
-        }
-
-        $body = new Body(fopen('php://temp', 'r+'));
-        $body->write($output);
-
-        return $response->withStatus(404)
-                        ->withHeader('Content-Type', $contentType)
-                        ->withBody($body);
-    }
-
-    /**
-     * Return a response for application/json content not found
-     *
-     * @return ResponseInterface
-     */
-    protected function renderJsonNotFoundOutput()
-    {
-        return '{"message":"Not found"}';
-    }
-
-    /**
-     * Return a response for xml content not found
-     *
-     * @return ResponseInterface
-     */
-    protected function renderXmlNotFoundOutput()
-    {
-        return '<root><message>Not found</message></root>';
-    }
-
-    /**
-     * Return a response for text/html content not found
-     *
-     * @param  ServerRequestInterface $request  The most recent Request object
-     *
-     * @return ResponseInterface
-     */
-    protected function renderHtmlNotFoundOutput(ServerRequestInterface $request)
-    {
-        $homeUrl = (string)($request->getUri()->withPath('')->withQuery('')->withFragment(''));
-        return <<<END
-<html>
-    <head>
-        <title>Page Not Found</title>
-        <style>
-            body{
-                margin:0;
-                padding:30px;
-                font:12px/1.5 Helvetica,Arial,Verdana,sans-serif;
-            }
-            h1{
-                margin:0;
-                font-size:48px;
-                font-weight:normal;
-                line-height:48px;
-            }
-            strong{
-                display:inline-block;
-                width:65px;
-            }
-        </style>
-    </head>
-    <body>
-        <h1>Page Not Found</h1>
-        <p>
-            The page you are looking for could not be found. Check the address bar
-            to ensure your URL is spelled correctly. If all else fails, you can
-            visit our home page at the link below.
-        </p>
-        <a href='$homeUrl'>Visit the Home Page</a>
-    </body>
-</html>
-END;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/PhpError.php b/vendor/slim/slim/Slim/Handlers/PhpError.php
deleted file mode 100644
index 0122ddb..0000000
--- a/vendor/slim/slim/Slim/Handlers/PhpError.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Slim\Http\Body;
-use UnexpectedValueException;
-
-/**
- * Default Slim application error handler for PHP 7+ Throwables
- *
- * It outputs the error message and diagnostic information in either JSON, XML,
- * or HTML based on the Accept header.
- */
-class PhpError extends AbstractError
-{
-    /**
-     * Invoke error handler
-     *
-     * @param ServerRequestInterface $request   The most recent Request object
-     * @param ResponseInterface      $response  The most recent Response object
-     * @param \Throwable             $error     The caught Throwable object
-     *
-     * @return ResponseInterface
-     * @throws UnexpectedValueException
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, \Throwable $error)
-    {
-        $contentType = $this->determineContentType($request);
-        switch ($contentType) {
-            case 'application/json':
-                $output = $this->renderJsonErrorMessage($error);
-                break;
-
-            case 'text/xml':
-            case 'application/xml':
-                $output = $this->renderXmlErrorMessage($error);
-                break;
-
-            case 'text/html':
-                $output = $this->renderHtmlErrorMessage($error);
-                break;
-            default:
-                throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType);
-        }
-
-        $this->writeToErrorLog($error);
-
-        $body = new Body(fopen('php://temp', 'r+'));
-        $body->write($output);
-
-        return $response
-                ->withStatus(500)
-                ->withHeader('Content-type', $contentType)
-                ->withBody($body);
-    }
-
-    /**
-     * Render HTML error page
-     *
-     * @param \Throwable $error
-     *
-     * @return string
-     */
-    protected function renderHtmlErrorMessage(\Throwable $error)
-    {
-        $title = 'Slim Application Error';
-
-        if ($this->displayErrorDetails) {
-            $html = '<p>The application could not run because of the following error:</p>';
-            $html .= '<h2>Details</h2>';
-            $html .= $this->renderHtmlError($error);
-
-            while ($error = $error->getPrevious()) {
-                $html .= '<h2>Previous error</h2>';
-                $html .= $this->renderHtmlError($error);
-            }
-        } else {
-            $html = '<p>A website error has occurred. Sorry for the temporary inconvenience.</p>';
-        }
-
-        $output = sprintf(
-            "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" .
-            "<title>%s</title><style>body{margin:0;padding:30px;font:12px/1.5 Helvetica,Arial,Verdana," .
-            "sans-serif;}h1{margin:0;font-size:48px;font-weight:normal;line-height:48px;}strong{" .
-            "display:inline-block;width:65px;}</style></head><body><h1>%s</h1>%s</body></html>",
-            $title,
-            $title,
-            $html
-        );
-
-        return $output;
-    }
-
-    /**
-     * Render error as HTML.
-     *
-     * @param \Throwable $error
-     *
-     * @return string
-     */
-    protected function renderHtmlError(\Throwable $error)
-    {
-        $html = sprintf('<div><strong>Type:</strong> %s</div>', get_class($error));
-
-        if (($code = $error->getCode())) {
-            $html .= sprintf('<div><strong>Code:</strong> %s</div>', $code);
-        }
-
-        if (($message = $error->getMessage())) {
-            $html .= sprintf('<div><strong>Message:</strong> %s</div>', htmlentities($message));
-        }
-
-        if (($file = $error->getFile())) {
-            $html .= sprintf('<div><strong>File:</strong> %s</div>', $file);
-        }
-
-        if (($line = $error->getLine())) {
-            $html .= sprintf('<div><strong>Line:</strong> %s</div>', $line);
-        }
-
-        if (($trace = $error->getTraceAsString())) {
-            $html .= '<h2>Trace</h2>';
-            $html .= sprintf('<pre>%s</pre>', htmlentities($trace));
-        }
-
-        return $html;
-    }
-
-    /**
-     * Render JSON error
-     *
-     * @param \Throwable $error
-     *
-     * @return string
-     */
-    protected function renderJsonErrorMessage(\Throwable $error)
-    {
-        $json = [
-            'message' => 'Slim Application Error',
-        ];
-
-        if ($this->displayErrorDetails) {
-            $json['error'] = [];
-
-            do {
-                $json['error'][] = [
-                    'type' => get_class($error),
-                    'code' => $error->getCode(),
-                    'message' => $error->getMessage(),
-                    'file' => $error->getFile(),
-                    'line' => $error->getLine(),
-                    'trace' => explode("\n", $error->getTraceAsString()),
-                ];
-            } while ($error = $error->getPrevious());
-        }
-
-        return json_encode($json, JSON_PRETTY_PRINT);
-    }
-
-    /**
-     * Render XML error
-     *
-     * @param \Throwable $error
-     *
-     * @return string
-     */
-    protected function renderXmlErrorMessage(\Throwable $error)
-    {
-        $xml = "<error>\n  <message>Slim Application Error</message>\n";
-        if ($this->displayErrorDetails) {
-            do {
-                $xml .= "  <error>\n";
-                $xml .= "    <type>" . get_class($error) . "</type>\n";
-                $xml .= "    <code>" . $error->getCode() . "</code>\n";
-                $xml .= "    <message>" . $this->createCdataSection($error->getMessage()) . "</message>\n";
-                $xml .= "    <file>" . $error->getFile() . "</file>\n";
-                $xml .= "    <line>" . $error->getLine() . "</line>\n";
-                $xml .= "    <trace>" . $this->createCdataSection($error->getTraceAsString()) . "</trace>\n";
-                $xml .= "  </error>\n";
-            } while ($error = $error->getPrevious());
-        }
-        $xml .= "</error>";
-
-        return $xml;
-    }
-
-    /**
-     * Returns a CDATA section with the given content.
-     *
-     * @param  string $content
-     * @return string
-     */
-    private function createCdataSection($content)
-    {
-        return sprintf('<![CDATA[%s]]>', str_replace(']]>', ']]]]><![CDATA[>', $content));
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php b/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php
deleted file mode 100644
index 157bdeb..0000000
--- a/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers\Strategies;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Slim\Interfaces\InvocationStrategyInterface;
-
-/**
- * Default route callback strategy with route parameters as an array of arguments.
- */
-class RequestResponse implements InvocationStrategyInterface
-{
-    /**
-     * Invoke a route callable with request, response, and all route parameters
-     * as an array of arguments.
-     *
-     * @param array|callable         $callable
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface      $response
-     * @param array                  $routeArguments
-     *
-     * @return mixed
-     */
-    public function __invoke(
-        callable $callable,
-        ServerRequestInterface $request,
-        ResponseInterface $response,
-        array $routeArguments
-    ) {
-        foreach ($routeArguments as $k => $v) {
-            $request = $request->withAttribute($k, $v);
-        }
-
-        return call_user_func($callable, $request, $response, $routeArguments);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php b/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php
deleted file mode 100644
index 11793d3..0000000
--- a/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Handlers\Strategies;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use Slim\Interfaces\InvocationStrategyInterface;
-
-/**
- * Route callback strategy with route parameters as individual arguments.
- */
-class RequestResponseArgs implements InvocationStrategyInterface
-{
-
-    /**
-     * Invoke a route callable with request, response and all route parameters
-     * as individual arguments.
-     *
-     * @param array|callable         $callable
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface      $response
-     * @param array                  $routeArguments
-     *
-     * @return mixed
-     */
-    public function __invoke(
-        callable $callable,
-        ServerRequestInterface $request,
-        ResponseInterface $response,
-        array $routeArguments
-    ) {
-        array_unshift($routeArguments, $request, $response);
-
-        return call_user_func_array($callable, $routeArguments);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Body.php b/vendor/slim/slim/Slim/Http/Body.php
deleted file mode 100644
index 06a25a2..0000000
--- a/vendor/slim/slim/Slim/Http/Body.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-/**
- * Body
- *
- * This class represents an HTTP message body and encapsulates a
- * streamable resource according to the PSR-7 standard.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/StreamInterface.php
- */
-class Body extends Stream
-{
-
-}
diff --git a/vendor/slim/slim/Slim/Http/Cookies.php b/vendor/slim/slim/Slim/Http/Cookies.php
deleted file mode 100644
index 0604f81..0000000
--- a/vendor/slim/slim/Slim/Http/Cookies.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use InvalidArgumentException;
-use Slim\Interfaces\Http\CookiesInterface;
-
-/**
- * Cookie helper
- */
-class Cookies implements CookiesInterface
-{
-    /**
-     * Cookies from HTTP request
-     *
-     * @var array
-     */
-    protected $requestCookies = [];
-
-    /**
-     * Cookies for HTTP response
-     *
-     * @var array
-     */
-    protected $responseCookies = [];
-
-    /**
-     * Default cookie properties
-     *
-     * @var array
-     */
-    protected $defaults = [
-        'value' => '',
-        'domain' => null,
-        'hostonly' => null,
-        'path' => null,
-        'expires' => null,
-        'secure' => false,
-        'httponly' => false
-    ];
-
-    /**
-     * Create new cookies helper
-     *
-     * @param array $cookies
-     */
-    public function __construct(array $cookies = [])
-    {
-        $this->requestCookies = $cookies;
-    }
-
-    /**
-     * Set default cookie properties
-     *
-     * @param array $settings
-     */
-    public function setDefaults(array $settings)
-    {
-        $this->defaults = array_replace($this->defaults, $settings);
-    }
-
-    /**
-     * Get request cookie
-     *
-     * @param  string $name    Cookie name
-     * @param  mixed  $default Cookie default value
-     *
-     * @return mixed Cookie value if present, else default
-     */
-    public function get($name, $default = null)
-    {
-        return isset($this->requestCookies[$name]) ? $this->requestCookies[$name] : $default;
-    }
-
-    /**
-     * Set response cookie
-     *
-     * @param string       $name  Cookie name
-     * @param string|array $value Cookie value, or cookie properties
-     */
-    public function set($name, $value)
-    {
-        if (!is_array($value)) {
-            $value = ['value' => (string)$value];
-        }
-        $this->responseCookies[$name] = array_replace($this->defaults, $value);
-    }
-
-    /**
-     * Convert to `Set-Cookie` headers
-     *
-     * @return string[]
-     */
-    public function toHeaders()
-    {
-        $headers = [];
-        foreach ($this->responseCookies as $name => $properties) {
-            $headers[] = $this->toHeader($name, $properties);
-        }
-
-        return $headers;
-    }
-
-    /**
-     * Convert to `Set-Cookie` header
-     *
-     * @param  string $name       Cookie name
-     * @param  array  $properties Cookie properties
-     *
-     * @return string
-     */
-    protected function toHeader($name, array $properties)
-    {
-        $result = urlencode($name) . '=' . urlencode($properties['value']);
-
-        if (isset($properties['domain'])) {
-            $result .= '; domain=' . $properties['domain'];
-        }
-
-        if (isset($properties['path'])) {
-            $result .= '; path=' . $properties['path'];
-        }
-
-        if (isset($properties['expires'])) {
-            if (is_string($properties['expires'])) {
-                $timestamp = strtotime($properties['expires']);
-            } else {
-                $timestamp = (int)$properties['expires'];
-            }
-            if ($timestamp !== 0) {
-                $result .= '; expires=' . gmdate('D, d-M-Y H:i:s e', $timestamp);
-            }
-        }
-
-        if (isset($properties['secure']) && $properties['secure']) {
-            $result .= '; secure';
-        }
-        
-        if (isset($properties['hostonly']) && $properties['hostonly']) {
-            $result .= '; HostOnly';
-        }
-
-        if (isset($properties['httponly']) && $properties['httponly']) {
-            $result .= '; HttpOnly';
-        }
-
-        return $result;
-    }
-
-    /**
-     * Parse HTTP request `Cookie:` header and extract
-     * into a PHP associative array.
-     *
-     * @param  string $header The raw HTTP request `Cookie:` header
-     *
-     * @return array Associative array of cookie names and values
-     *
-     * @throws InvalidArgumentException if the cookie data cannot be parsed
-     */
-    public static function parseHeader($header)
-    {
-        if (is_array($header) === true) {
-            $header = isset($header[0]) ? $header[0] : '';
-        }
-
-        if (is_string($header) === false) {
-            throw new InvalidArgumentException('Cannot parse Cookie data. Header value must be a string.');
-        }
-
-        $header = rtrim($header, "\r\n");
-        $pieces = preg_split('@\s*[;,]\s*@', $header);
-        $cookies = [];
-
-        foreach ($pieces as $cookie) {
-            $cookie = explode('=', $cookie, 2);
-
-            if (count($cookie) === 2) {
-                $key = urldecode($cookie[0]);
-                $value = urldecode($cookie[1]);
-
-                if (!isset($cookies[$key])) {
-                    $cookies[$key] = $value;
-                }
-            }
-        }
-
-        return $cookies;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Environment.php b/vendor/slim/slim/Slim/Http/Environment.php
deleted file mode 100644
index a106fa8..0000000
--- a/vendor/slim/slim/Slim/Http/Environment.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use Slim\Collection;
-use Slim\Interfaces\Http\EnvironmentInterface;
-
-/**
- * Environment
- *
- * This class decouples the Slim application from the global PHP environment.
- * This is particularly useful for unit testing, but it also lets us create
- * custom sub-requests.
- */
-class Environment extends Collection implements EnvironmentInterface
-{
-    /**
-     * Create mock environment
-     *
-     * @param  array $userData Array of custom environment keys and values
-     *
-     * @return self
-     */
-    public static function mock(array $userData = [])
-    {
-        $data = array_merge([
-            'SERVER_PROTOCOL'      => 'HTTP/1.1',
-            'REQUEST_METHOD'       => 'GET',
-            'SCRIPT_NAME'          => '',
-            'REQUEST_URI'          => '',
-            'QUERY_STRING'         => '',
-            'SERVER_NAME'          => 'localhost',
-            'SERVER_PORT'          => 80,
-            'HTTP_HOST'            => 'localhost',
-            'HTTP_ACCEPT'          => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
-            'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.8',
-            'HTTP_ACCEPT_CHARSET'  => 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
-            'HTTP_USER_AGENT'      => 'Slim Framework',
-            'REMOTE_ADDR'          => '127.0.0.1',
-            'REQUEST_TIME'         => time(),
-            'REQUEST_TIME_FLOAT'   => microtime(true),
-        ], $userData);
-
-        return new static($data);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Headers.php b/vendor/slim/slim/Slim/Http/Headers.php
deleted file mode 100644
index 4aa7a5e..0000000
--- a/vendor/slim/slim/Slim/Http/Headers.php
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use Slim\Collection;
-use Slim\Interfaces\Http\HeadersInterface;
-
-/**
- * Headers
- *
- * This class represents a collection of HTTP headers
- * that is used in both the HTTP request and response objects.
- * It also enables header name case-insensitivity when
- * getting or setting a header value.
- *
- * Each HTTP header can have multiple values. This class
- * stores values into an array for each header name. When
- * you request a header value, you receive an array of values
- * for that header.
- */
-class Headers extends Collection implements HeadersInterface
-{
-    /**
-     * Special HTTP headers that do not have the "HTTP_" prefix
-     *
-     * @var array
-     */
-    protected static $special = [
-        'CONTENT_TYPE' => 1,
-        'CONTENT_LENGTH' => 1,
-        'PHP_AUTH_USER' => 1,
-        'PHP_AUTH_PW' => 1,
-        'PHP_AUTH_DIGEST' => 1,
-        'AUTH_TYPE' => 1,
-    ];
-
-    /**
-     * Create new headers collection with data extracted from
-     * the application Environment object
-     *
-     * @param Environment $environment The Slim application Environment
-     *
-     * @return self
-     */
-    public static function createFromEnvironment(Environment $environment)
-    {
-        $data = [];
-        $environment = self::determineAuthorization($environment);
-        foreach ($environment as $key => $value) {
-            $key = strtoupper($key);
-            if (isset(static::$special[$key]) || strpos($key, 'HTTP_') === 0) {
-                if ($key !== 'HTTP_CONTENT_LENGTH') {
-                    $data[$key] =  $value;
-                }
-            }
-        }
-
-        return new static($data);
-    }
-
-    /**
-     * If HTTP_AUTHORIZATION does not exist tries to get it from
-     * getallheaders() when available.
-     *
-     * @param Environment $environment The Slim application Environment
-     *
-     * @return Environment
-     */
-
-    public static function determineAuthorization(Environment $environment)
-    {
-        $authorization = $environment->get('HTTP_AUTHORIZATION');
-
-        if (null === $authorization && is_callable('getallheaders')) {
-            $headers = getallheaders();
-            $headers = array_change_key_case($headers, CASE_LOWER);
-            if (isset($headers['authorization'])) {
-                $environment->set('HTTP_AUTHORIZATION', $headers['authorization']);
-            }
-        }
-
-        return $environment;
-    }
-
-    /**
-     * Return array of HTTP header names and values.
-     * This method returns the _original_ header name
-     * as specified by the end user.
-     *
-     * @return array
-     */
-    public function all()
-    {
-        $all = parent::all();
-        $out = [];
-        foreach ($all as $key => $props) {
-            $out[$props['originalKey']] = $props['value'];
-        }
-
-        return $out;
-    }
-
-    /**
-     * Set HTTP header value
-     *
-     * This method sets a header value. It replaces
-     * any values that may already exist for the header name.
-     *
-     * @param string $key   The case-insensitive header name
-     * @param string $value The header value
-     */
-    public function set($key, $value)
-    {
-        if (!is_array($value)) {
-            $value = [$value];
-        }
-        parent::set($this->normalizeKey($key), [
-            'value' => $value,
-            'originalKey' => $key
-        ]);
-    }
-
-    /**
-     * Get HTTP header value
-     *
-     * @param  string  $key     The case-insensitive header name
-     * @param  mixed   $default The default value if key does not exist
-     *
-     * @return string[]
-     */
-    public function get($key, $default = null)
-    {
-        if ($this->has($key)) {
-            return parent::get($this->normalizeKey($key))['value'];
-        }
-
-        return $default;
-    }
-
-    /**
-     * Get HTTP header key as originally specified
-     *
-     * @param  string   $key     The case-insensitive header name
-     * @param  mixed    $default The default value if key does not exist
-     *
-     * @return string
-     */
-    public function getOriginalKey($key, $default = null)
-    {
-        if ($this->has($key)) {
-            return parent::get($this->normalizeKey($key))['originalKey'];
-        }
-
-        return $default;
-    }
-
-    /**
-     * Add HTTP header value
-     *
-     * This method appends a header value. Unlike the set() method,
-     * this method _appends_ this new value to any values
-     * that already exist for this header name.
-     *
-     * @param string       $key   The case-insensitive header name
-     * @param array|string $value The new header value(s)
-     */
-    public function add($key, $value)
-    {
-        $oldValues = $this->get($key, []);
-        $newValues = is_array($value) ? $value : [$value];
-        $this->set($key, array_merge($oldValues, array_values($newValues)));
-    }
-
-    /**
-     * Does this collection have a given header?
-     *
-     * @param  string $key The case-insensitive header name
-     *
-     * @return bool
-     */
-    public function has($key)
-    {
-        return parent::has($this->normalizeKey($key));
-    }
-
-    /**
-     * Remove header from collection
-     *
-     * @param  string $key The case-insensitive header name
-     */
-    public function remove($key)
-    {
-        parent::remove($this->normalizeKey($key));
-    }
-
-    /**
-     * Normalize header name
-     *
-     * This method transforms header names into a
-     * normalized form. This is how we enable case-insensitive
-     * header names in the other methods in this class.
-     *
-     * @param  string $key The case-insensitive header name
-     *
-     * @return string Normalized header name
-     */
-    public function normalizeKey($key)
-    {
-        $key = strtr(strtolower($key), '_', '-');
-        if (strpos($key, 'http-') === 0) {
-            $key = substr($key, 5);
-        }
-
-        return $key;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Message.php b/vendor/slim/slim/Slim/Http/Message.php
deleted file mode 100644
index 1596c8d..0000000
--- a/vendor/slim/slim/Slim/Http/Message.php
+++ /dev/null
@@ -1,304 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use InvalidArgumentException;
-use Psr\Http\Message\MessageInterface;
-use Psr\Http\Message\StreamInterface;
-
-/**
- * Abstract message (base class for Request and Response)
- *
- * This class represents a general HTTP message. It provides common properties and methods for
- * the HTTP request and response, as defined in the PSR-7 MessageInterface.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/MessageInterface.php
- * @see Slim\Http\Request
- * @see Slim\Http\Response
- */
-abstract class Message implements MessageInterface
-{
-    /**
-     * Protocol version
-     *
-     * @var string
-     */
-    protected $protocolVersion = '1.1';
-
-    /**
-     * A map of valid protocol versions
-     *
-     * @var array
-     */
-    protected static $validProtocolVersions = [
-        '1.0' => true,
-        '1.1' => true,
-        '2.0' => true,
-    ];
-
-    /**
-     * Headers
-     *
-     * @var \Slim\Interfaces\Http\HeadersInterface
-     */
-    protected $headers;
-
-    /**
-     * Body object
-     *
-     * @var \Psr\Http\Message\StreamInterface
-     */
-    protected $body;
-
-
-    /**
-     * Disable magic setter to ensure immutability
-     */
-    public function __set($name, $value)
-    {
-        // Do nothing
-    }
-
-    /*******************************************************************************
-     * Protocol
-     ******************************************************************************/
-
-    /**
-     * Retrieves the HTTP protocol version as a string.
-     *
-     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
-     *
-     * @return string HTTP protocol version.
-     */
-    public function getProtocolVersion()
-    {
-        return $this->protocolVersion;
-    }
-
-    /**
-     * Return an instance with the specified HTTP protocol version.
-     *
-     * The version string MUST contain only the HTTP version number (e.g.,
-     * "1.1", "1.0").
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new protocol version.
-     *
-     * @param string $version HTTP protocol version
-     * @return static
-     * @throws InvalidArgumentException if the http version is an invalid number
-     */
-    public function withProtocolVersion($version)
-    {
-        if (!isset(self::$validProtocolVersions[$version])) {
-            throw new InvalidArgumentException(
-                'Invalid HTTP version. Must be one of: '
-                . implode(', ', array_keys(self::$validProtocolVersions))
-            );
-        }
-        $clone = clone $this;
-        $clone->protocolVersion = $version;
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * Headers
-     ******************************************************************************/
-
-    /**
-     * Retrieves all message header values.
-     *
-     * The keys represent the header name as it will be sent over the wire, and
-     * each value is an array of strings associated with the header.
-     *
-     *     // Represent the headers as a string
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         echo $name . ": " . implode(", ", $values);
-     *     }
-     *
-     *     // Emit headers iteratively:
-     *     foreach ($message->getHeaders() as $name => $values) {
-     *         foreach ($values as $value) {
-     *             header(sprintf('%s: %s', $name, $value), false);
-     *         }
-     *     }
-     *
-     * While header names are not case-sensitive, getHeaders() will preserve the
-     * exact case in which headers were originally specified.
-     *
-     * @return array Returns an associative array of the message's headers. Each
-     *     key MUST be a header name, and each value MUST be an array of strings
-     *     for that header.
-     */
-    public function getHeaders()
-    {
-        return $this->headers->all();
-    }
-
-    /**
-     * Checks if a header exists by the given case-insensitive name.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return bool Returns true if any header names match the given header
-     *     name using a case-insensitive string comparison. Returns false if
-     *     no matching header name is found in the message.
-     */
-    public function hasHeader($name)
-    {
-        return $this->headers->has($name);
-    }
-
-    /**
-     * Retrieves a message header value by the given case-insensitive name.
-     *
-     * This method returns an array of all the header values of the given
-     * case-insensitive header name.
-     *
-     * If the header does not appear in the message, this method MUST return an
-     * empty array.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string[] An array of string values as provided for the given
-     *    header. If the header does not appear in the message, this method MUST
-     *    return an empty array.
-     */
-    public function getHeader($name)
-    {
-        return $this->headers->get($name, []);
-    }
-
-    /**
-     * Retrieves a comma-separated string of the values for a single header.
-     *
-     * This method returns all of the header values of the given
-     * case-insensitive header name as a string concatenated together using
-     * a comma.
-     *
-     * NOTE: Not all header values may be appropriately represented using
-     * comma concatenation. For such headers, use getHeader() instead
-     * and supply your own delimiter when concatenating.
-     *
-     * If the header does not appear in the message, this method MUST return
-     * an empty string.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @return string A string of values as provided for the given header
-     *    concatenated together using a comma. If the header does not appear in
-     *    the message, this method MUST return an empty string.
-     */
-    public function getHeaderLine($name)
-    {
-        return implode(',', $this->headers->get($name, []));
-    }
-
-    /**
-     * Return an instance with the provided value replacing the specified header.
-     *
-     * While header names are case-insensitive, the casing of the header will
-     * be preserved by this function, and returned from getHeaders().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new and/or updated header and value.
-     *
-     * @param string $name Case-insensitive header field name.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withHeader($name, $value)
-    {
-        $clone = clone $this;
-        $clone->headers->set($name, $value);
-
-        return $clone;
-    }
-
-    /**
-     * Return an instance with the specified header appended with the given value.
-     *
-     * Existing values for the specified header will be maintained. The new
-     * value(s) will be appended to the existing list. If the header did not
-     * exist previously, it will be added.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new header and/or value.
-     *
-     * @param string $name Case-insensitive header field name to add.
-     * @param string|string[] $value Header value(s).
-     * @return static
-     * @throws \InvalidArgumentException for invalid header names or values.
-     */
-    public function withAddedHeader($name, $value)
-    {
-        $clone = clone $this;
-        $clone->headers->add($name, $value);
-
-        return $clone;
-    }
-
-    /**
-     * Return an instance without the specified header.
-     *
-     * Header resolution MUST be done without case-sensitivity.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the named header.
-     *
-     * @param string $name Case-insensitive header field name to remove.
-     * @return static
-     */
-    public function withoutHeader($name)
-    {
-        $clone = clone $this;
-        $clone->headers->remove($name);
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * Body
-     ******************************************************************************/
-
-    /**
-     * Gets the body of the message.
-     *
-     * @return StreamInterface Returns the body as a stream.
-     */
-    public function getBody()
-    {
-        return $this->body;
-    }
-
-    /**
-     * Return an instance with the specified message body.
-     *
-     * The body MUST be a StreamInterface object.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * new body stream.
-     *
-     * @param StreamInterface $body Body.
-     * @return static
-     * @throws \InvalidArgumentException When the body is not valid.
-     */
-    public function withBody(StreamInterface $body)
-    {
-        // TODO: Test for invalid body?
-        $clone = clone $this;
-        $clone->body = $body;
-
-        return $clone;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Request.php b/vendor/slim/slim/Slim/Http/Request.php
deleted file mode 100644
index b040bf4..0000000
--- a/vendor/slim/slim/Slim/Http/Request.php
+++ /dev/null
@@ -1,1177 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use Closure;
-use InvalidArgumentException;
-use Psr\Http\Message\UploadedFileInterface;
-use RuntimeException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\UriInterface;
-use Psr\Http\Message\StreamInterface;
-use Slim\Collection;
-use Slim\Interfaces\Http\HeadersInterface;
-
-/**
- * Request
- *
- * This class represents an HTTP request. It manages
- * the request method, URI, headers, cookies, and body
- * according to the PSR-7 standard.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/MessageInterface.php
- * @link https://github.com/php-fig/http-message/blob/master/src/RequestInterface.php
- * @link https://github.com/php-fig/http-message/blob/master/src/ServerRequestInterface.php
- */
-class Request extends Message implements ServerRequestInterface
-{
-    /**
-     * The request method
-     *
-     * @var string
-     */
-    protected $method;
-
-    /**
-     * The original request method (ignoring override)
-     *
-     * @var string
-     */
-    protected $originalMethod;
-
-    /**
-     * The request URI object
-     *
-     * @var \Psr\Http\Message\UriInterface
-     */
-    protected $uri;
-
-    /**
-     * The request URI target (path + query string)
-     *
-     * @var string
-     */
-    protected $requestTarget;
-
-    /**
-     * The request query string params
-     *
-     * @var array
-     */
-    protected $queryParams;
-
-    /**
-     * The request cookies
-     *
-     * @var array
-     */
-    protected $cookies;
-
-    /**
-     * The server environment variables at the time the request was created.
-     *
-     * @var array
-     */
-    protected $serverParams;
-
-    /**
-     * The request attributes (route segment names and values)
-     *
-     * @var \Slim\Collection
-     */
-    protected $attributes;
-
-    /**
-     * The request body parsed (if possible) into a PHP array or object
-     *
-     * @var null|array|object
-     */
-    protected $bodyParsed = false;
-
-    /**
-     * List of request body parsers (e.g., url-encoded, JSON, XML, multipart)
-     *
-     * @var callable[]
-     */
-    protected $bodyParsers = [];
-
-    /**
-     * List of uploaded files
-     *
-     * @var UploadedFileInterface[]
-     */
-    protected $uploadedFiles;
-
-    /**
-     * Valid request methods
-     *
-     * @var string[]
-     */
-    protected $validMethods = [
-        'CONNECT' => 1,
-        'DELETE' => 1,
-        'GET' => 1,
-        'HEAD' => 1,
-        'OPTIONS' => 1,
-        'PATCH' => 1,
-        'POST' => 1,
-        'PUT' => 1,
-        'TRACE' => 1,
-    ];
-
-    /**
-     * Create new HTTP request with data extracted from the application
-     * Environment object
-     *
-     * @param  Environment $environment The Slim application Environment
-     *
-     * @return self
-     */
-    public static function createFromEnvironment(Environment $environment)
-    {
-        $method = $environment['REQUEST_METHOD'];
-        $uri = Uri::createFromEnvironment($environment);
-        $headers = Headers::createFromEnvironment($environment);
-        $cookies = Cookies::parseHeader($headers->get('Cookie', []));
-        $serverParams = $environment->all();
-        $body = new RequestBody();
-        $uploadedFiles = UploadedFile::createFromEnvironment($environment);
-
-        $request = new static($method, $uri, $headers, $cookies, $serverParams, $body, $uploadedFiles);
-
-        if ($method === 'POST' &&
-            in_array($request->getMediaType(), ['application/x-www-form-urlencoded', 'multipart/form-data'])
-        ) {
-            // parsed body must be $_POST
-            $request = $request->withParsedBody($_POST);
-        }
-        return $request;
-    }
-
-    /**
-     * Create new HTTP request.
-     *
-     * Adds a host header when none was provided and a host is defined in uri.
-     *
-     * @param string           $method        The request method
-     * @param UriInterface     $uri           The request URI object
-     * @param HeadersInterface $headers       The request headers collection
-     * @param array            $cookies       The request cookies collection
-     * @param array            $serverParams  The server environment variables
-     * @param StreamInterface  $body          The request body object
-     * @param array            $uploadedFiles The request uploadedFiles collection
-     */
-    public function __construct(
-        $method,
-        UriInterface $uri,
-        HeadersInterface $headers,
-        array $cookies,
-        array $serverParams,
-        StreamInterface $body,
-        array $uploadedFiles = []
-    ) {
-        $this->originalMethod = $this->filterMethod($method);
-        $this->uri = $uri;
-        $this->headers = $headers;
-        $this->cookies = $cookies;
-        $this->serverParams = $serverParams;
-        $this->attributes = new Collection();
-        $this->body = $body;
-        $this->uploadedFiles = $uploadedFiles;
-
-        if (isset($serverParams['SERVER_PROTOCOL'])) {
-            $this->protocolVersion = str_replace('HTTP/', '', $serverParams['SERVER_PROTOCOL']);
-        }
-
-        if (!$this->headers->has('Host') || $this->uri->getHost() !== '') {
-            $this->headers->set('Host', $this->uri->getHost());
-        }
-
-        $this->registerMediaTypeParser('application/json', function ($input) {
-            return json_decode($input, true);
-        });
-
-        $this->registerMediaTypeParser('application/xml', function ($input) {
-            $backup = libxml_disable_entity_loader(true);
-            $result = simplexml_load_string($input);
-            libxml_disable_entity_loader($backup);
-            return $result;
-        });
-
-        $this->registerMediaTypeParser('text/xml', function ($input) {
-            $backup = libxml_disable_entity_loader(true);
-            $result = simplexml_load_string($input);
-            libxml_disable_entity_loader($backup);
-            return $result;
-        });
-
-        $this->registerMediaTypeParser('application/x-www-form-urlencoded', function ($input) {
-            parse_str($input, $data);
-            return $data;
-        });
-    }
-
-    /**
-     * This method is applied to the cloned object
-     * after PHP performs an initial shallow-copy. This
-     * method completes a deep-copy by creating new objects
-     * for the cloned object's internal reference pointers.
-     */
-    public function __clone()
-    {
-        $this->headers = clone $this->headers;
-        $this->attributes = clone $this->attributes;
-        $this->body = clone $this->body;
-    }
-
-    /*******************************************************************************
-     * Method
-     ******************************************************************************/
-
-    /**
-     * Retrieves the HTTP method of the request.
-     *
-     * @return string Returns the request method.
-     */
-    public function getMethod()
-    {
-        if ($this->method === null) {
-            $this->method = $this->originalMethod;
-            $customMethod = $this->getHeaderLine('X-Http-Method-Override');
-
-            if ($customMethod) {
-                $this->method = $this->filterMethod($customMethod);
-            } elseif ($this->originalMethod === 'POST') {
-                $body = $this->getParsedBody();
-
-                if (is_object($body) && property_exists($body, '_METHOD')) {
-                    $this->method = $this->filterMethod((string)$body->_METHOD);
-                } elseif (is_array($body) && isset($body['_METHOD'])) {
-                    $this->method = $this->filterMethod((string)$body['_METHOD']);
-                }
-
-                if ($this->getBody()->eof()) {
-                    $this->getBody()->rewind();
-                }
-            }
-        }
-
-        return $this->method;
-    }
-
-    /**
-     * Get the original HTTP method (ignore override).
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return string
-     */
-    public function getOriginalMethod()
-    {
-        return $this->originalMethod;
-    }
-
-    /**
-     * Return an instance with the provided HTTP method.
-     *
-     * While HTTP method names are typically all uppercase characters, HTTP
-     * method names are case-sensitive and thus implementations SHOULD NOT
-     * modify the given string.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request method.
-     *
-     * @param string $method Case-sensitive method.
-     * @return self
-     * @throws \InvalidArgumentException for invalid HTTP methods.
-     */
-    public function withMethod($method)
-    {
-        $method = $this->filterMethod($method);
-        $clone = clone $this;
-        $clone->originalMethod = $method;
-        $clone->method = $method;
-
-        return $clone;
-    }
-
-    /**
-     * Validate the HTTP method
-     *
-     * @param  null|string $method
-     * @return null|string
-     * @throws \InvalidArgumentException on invalid HTTP method.
-     */
-    protected function filterMethod($method)
-    {
-        if ($method === null) {
-            return $method;
-        }
-
-        if (!is_string($method)) {
-            throw new InvalidArgumentException(sprintf(
-                'Unsupported HTTP method; must be a string, received %s',
-                (is_object($method) ? get_class($method) : gettype($method))
-            ));
-        }
-
-        $method = strtoupper($method);
-        if (!isset($this->validMethods[$method])) {
-            throw new InvalidArgumentException(sprintf(
-                'Unsupported HTTP method "%s" provided',
-                $method
-            ));
-        }
-
-        return $method;
-    }
-
-    /**
-     * Does this request use a given method?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param  string $method HTTP method
-     * @return bool
-     */
-    public function isMethod($method)
-    {
-        return $this->getMethod() === $method;
-    }
-
-    /**
-     * Is this a GET request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isGet()
-    {
-        return $this->isMethod('GET');
-    }
-
-    /**
-     * Is this a POST request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isPost()
-    {
-        return $this->isMethod('POST');
-    }
-
-    /**
-     * Is this a PUT request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isPut()
-    {
-        return $this->isMethod('PUT');
-    }
-
-    /**
-     * Is this a PATCH request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isPatch()
-    {
-        return $this->isMethod('PATCH');
-    }
-
-    /**
-     * Is this a DELETE request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isDelete()
-    {
-        return $this->isMethod('DELETE');
-    }
-
-    /**
-     * Is this a HEAD request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isHead()
-    {
-        return $this->isMethod('HEAD');
-    }
-
-    /**
-     * Is this a OPTIONS request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isOptions()
-    {
-        return $this->isMethod('OPTIONS');
-    }
-
-    /**
-     * Is this an XHR request?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isXhr()
-    {
-        return $this->getHeaderLine('X-Requested-With') === 'XMLHttpRequest';
-    }
-
-    /*******************************************************************************
-     * URI
-     ******************************************************************************/
-
-    /**
-     * Retrieves the message's request target.
-     *
-     * Retrieves the message's request-target either as it will appear (for
-     * clients), as it appeared at request (for servers), or as it was
-     * specified for the instance (see withRequestTarget()).
-     *
-     * In most cases, this will be the origin-form of the composed URI,
-     * unless a value was provided to the concrete implementation (see
-     * withRequestTarget() below).
-     *
-     * If no URI is available, and no request-target has been specifically
-     * provided, this method MUST return the string "/".
-     *
-     * @return string
-     */
-    public function getRequestTarget()
-    {
-        if ($this->requestTarget) {
-            return $this->requestTarget;
-        }
-
-        if ($this->uri === null) {
-            return '/';
-        }
-
-        $basePath = $this->uri->getBasePath();
-        $path = $this->uri->getPath();
-        $path = $basePath . '/' . ltrim($path, '/');
-
-        $query = $this->uri->getQuery();
-        if ($query) {
-            $path .= '?' . $query;
-        }
-        $this->requestTarget = $path;
-
-        return $this->requestTarget;
-    }
-
-    /**
-     * Return an instance with the specific request-target.
-     *
-     * If the request needs a non-origin-form request-target — e.g., for
-     * specifying an absolute-form, authority-form, or asterisk-form —
-     * this method may be used to create an instance with the specified
-     * request-target, verbatim.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * changed request target.
-     *
-     * @link http://tools.ietf.org/html/rfc7230#section-2.7 (for the various
-     *     request-target forms allowed in request messages)
-     * @param mixed $requestTarget
-     * @return self
-     * @throws InvalidArgumentException if the request target is invalid
-     */
-    public function withRequestTarget($requestTarget)
-    {
-        if (preg_match('#\s#', $requestTarget)) {
-            throw new InvalidArgumentException(
-                'Invalid request target provided; must be a string and cannot contain whitespace'
-            );
-        }
-        $clone = clone $this;
-        $clone->requestTarget = $requestTarget;
-
-        return $clone;
-    }
-
-    /**
-     * Retrieves the URI instance.
-     *
-     * This method MUST return a UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @return UriInterface Returns a UriInterface instance
-     *     representing the URI of the request.
-     */
-    public function getUri()
-    {
-        return $this->uri;
-    }
-
-    /**
-     * Returns an instance with the provided URI.
-     *
-     * This method MUST update the Host header of the returned request by
-     * default if the URI contains a host component. If the URI does not
-     * contain a host component, any pre-existing Host header MUST be carried
-     * over to the returned request.
-     *
-     * You can opt-in to preserving the original state of the Host header by
-     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
-     * `true`, this method interacts with the Host header in the following ways:
-     *
-     * - If the the Host header is missing or empty, and the new URI contains
-     *   a host component, this method MUST update the Host header in the returned
-     *   request.
-     * - If the Host header is missing or empty, and the new URI does not contain a
-     *   host component, this method MUST NOT update the Host header in the returned
-     *   request.
-     * - If a Host header is present and non-empty, this method MUST NOT update
-     *   the Host header in the returned request.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * new UriInterface instance.
-     *
-     * @link http://tools.ietf.org/html/rfc3986#section-4.3
-     * @param UriInterface $uri New request URI to use.
-     * @param bool $preserveHost Preserve the original state of the Host header.
-     * @return self
-     */
-    public function withUri(UriInterface $uri, $preserveHost = false)
-    {
-        $clone = clone $this;
-        $clone->uri = $uri;
-
-        if (!$preserveHost) {
-            if ($uri->getHost() !== '') {
-                $clone->headers->set('Host', $uri->getHost());
-            }
-        } else {
-            if ($this->uri->getHost() !== '' && (!$this->hasHeader('Host') || $this->getHeader('Host') === null)) {
-                $clone->headers->set('Host', $uri->getHost());
-            }
-        }
-
-        return $clone;
-    }
-
-    /**
-     * Get request content type.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return string|null The request content type, if known
-     */
-    public function getContentType()
-    {
-        $result = $this->getHeader('Content-Type');
-
-        return $result ? $result[0] : null;
-    }
-
-    /**
-     * Get request media type, if known.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return string|null The request media type, minus content-type params
-     */
-    public function getMediaType()
-    {
-        $contentType = $this->getContentType();
-        if ($contentType) {
-            $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType);
-
-            return strtolower($contentTypeParts[0]);
-        }
-
-        return null;
-    }
-
-    /**
-     * Get request media type params, if known.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return array
-     */
-    public function getMediaTypeParams()
-    {
-        $contentType = $this->getContentType();
-        $contentTypeParams = [];
-        if ($contentType) {
-            $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType);
-            $contentTypePartsLength = count($contentTypeParts);
-            for ($i = 1; $i < $contentTypePartsLength; $i++) {
-                $paramParts = explode('=', $contentTypeParts[$i]);
-                $contentTypeParams[strtolower($paramParts[0])] = $paramParts[1];
-            }
-        }
-
-        return $contentTypeParams;
-    }
-
-    /**
-     * Get request content character set, if known.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return string|null
-     */
-    public function getContentCharset()
-    {
-        $mediaTypeParams = $this->getMediaTypeParams();
-        if (isset($mediaTypeParams['charset'])) {
-            return $mediaTypeParams['charset'];
-        }
-
-        return null;
-    }
-
-    /**
-     * Get request content length, if known.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return int|null
-     */
-    public function getContentLength()
-    {
-        $result = $this->headers->get('Content-Length');
-
-        return $result ? (int)$result[0] : null;
-    }
-
-    /*******************************************************************************
-     * Cookies
-     ******************************************************************************/
-
-    /**
-     * Retrieve cookies.
-     *
-     * Retrieves cookies sent by the client to the server.
-     *
-     * The data MUST be compatible with the structure of the $_COOKIE
-     * superglobal.
-     *
-     * @return array
-     */
-    public function getCookieParams()
-    {
-        return $this->cookies;
-    }
-
-    /**
-     * Fetch cookie value from cookies sent by the client to the server.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param string $name    The attribute name.
-     * @param mixed  $default Default value to return if the attribute does not exist.
-     *
-     * @return mixed
-     */
-    public function getCookieParam($key, $default = null)
-    {
-        $cookies = $this->getCookieParams();
-        $result = $default;
-        if (isset($cookies[$key])) {
-            $result = $cookies[$key];
-        }
-
-        return $result;
-    }
-
-    /**
-     * Return an instance with the specified cookies.
-     *
-     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
-     * be compatible with the structure of $_COOKIE. Typically, this data will
-     * be injected at instantiation.
-     *
-     * This method MUST NOT update the related Cookie header of the request
-     * instance, nor related values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated cookie values.
-     *
-     * @param array $cookies Array of key/value pairs representing cookies.
-     * @return self
-     */
-    public function withCookieParams(array $cookies)
-    {
-        $clone = clone $this;
-        $clone->cookies = $cookies;
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * Query Params
-     ******************************************************************************/
-
-    /**
-     * Retrieve query string arguments.
-     *
-     * Retrieves the deserialized query string arguments, if any.
-     *
-     * Note: the query params might not be in sync with the URI or server
-     * params. If you need to ensure you are only getting the original
-     * values, you may need to parse the query string from `getUri()->getQuery()`
-     * or from the `QUERY_STRING` server param.
-     *
-     * @return array
-     */
-    public function getQueryParams()
-    {
-        if (is_array($this->queryParams)) {
-            return $this->queryParams;
-        }
-
-        if ($this->uri === null) {
-            return [];
-        }
-
-        parse_str($this->uri->getQuery(), $this->queryParams); // <-- URL decodes data
-
-        return $this->queryParams;
-    }
-
-    /**
-     * Return an instance with the specified query string arguments.
-     *
-     * These values SHOULD remain immutable over the course of the incoming
-     * request. They MAY be injected during instantiation, such as from PHP's
-     * $_GET superglobal, or MAY be derived from some other value such as the
-     * URI. In cases where the arguments are parsed from the URI, the data
-     * MUST be compatible with what PHP's parse_str() would return for
-     * purposes of how duplicate query parameters are handled, and how nested
-     * sets are handled.
-     *
-     * Setting query string arguments MUST NOT change the URI stored by the
-     * request, nor the values in the server params.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated query string arguments.
-     *
-     * @param array $query Array of query string arguments, typically from
-     *     $_GET.
-     * @return self
-     */
-    public function withQueryParams(array $query)
-    {
-        $clone = clone $this;
-        $clone->queryParams = $query;
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * File Params
-     ******************************************************************************/
-
-    /**
-     * Retrieve normalized file upload data.
-     *
-     * This method returns upload metadata in a normalized tree, with each leaf
-     * an instance of Psr\Http\Message\UploadedFileInterface.
-     *
-     * These values MAY be prepared from $_FILES or the message body during
-     * instantiation, or MAY be injected via withUploadedFiles().
-     *
-     * @return array An array tree of UploadedFileInterface instances; an empty
-     *     array MUST be returned if no data is present.
-     */
-    public function getUploadedFiles()
-    {
-        return $this->uploadedFiles;
-    }
-
-    /**
-     * Create a new instance with the specified uploaded files.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
-     * @return self
-     * @throws \InvalidArgumentException if an invalid structure is provided.
-     */
-    public function withUploadedFiles(array $uploadedFiles)
-    {
-        $clone = clone $this;
-        $clone->uploadedFiles = $uploadedFiles;
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * Server Params
-     ******************************************************************************/
-
-    /**
-     * Retrieve server parameters.
-     *
-     * Retrieves data related to the incoming request environment,
-     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
-     * REQUIRED to originate from $_SERVER.
-     *
-     * @return array
-     */
-    public function getServerParams()
-    {
-        return $this->serverParams;
-    }
-
-    /*******************************************************************************
-     * Attributes
-     ******************************************************************************/
-
-    /**
-     * Retrieve attributes derived from the request.
-     *
-     * The request "attributes" may be used to allow injection of any
-     * parameters derived from the request: e.g., the results of path
-     * match operations; the results of decrypting cookies; the results of
-     * deserializing non-form-encoded message bodies; etc. Attributes
-     * will be application and request specific, and CAN be mutable.
-     *
-     * @return array Attributes derived from the request.
-     */
-    public function getAttributes()
-    {
-        return $this->attributes->all();
-    }
-
-    /**
-     * Retrieve a single derived request attribute.
-     *
-     * Retrieves a single derived request attribute as described in
-     * getAttributes(). If the attribute has not been previously set, returns
-     * the default value as provided.
-     *
-     * This method obviates the need for a hasAttribute() method, as it allows
-     * specifying a default value to return if the attribute is not found.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $default Default value to return if the attribute does not exist.
-     * @return mixed
-     */
-    public function getAttribute($name, $default = null)
-    {
-        return $this->attributes->get($name, $default);
-    }
-
-    /**
-     * Return an instance with the specified derived request attribute.
-     *
-     * This method allows setting a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @param mixed $value The value of the attribute.
-     * @return self
-     */
-    public function withAttribute($name, $value)
-    {
-        $clone = clone $this;
-        $clone->attributes->set($name, $value);
-
-        return $clone;
-    }
-
-    /**
-     * Create a new instance with the specified derived request attributes.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * This method allows setting all new derived request attributes as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return a new instance that has the
-     * updated attributes.
-     *
-     * @param  array $attributes New attributes
-     * @return self
-     */
-    public function withAttributes(array $attributes)
-    {
-        $clone = clone $this;
-        $clone->attributes = new Collection($attributes);
-
-        return $clone;
-    }
-
-    /**
-     * Return an instance that removes the specified derived request attribute.
-     *
-     * This method allows removing a single derived request attribute as
-     * described in getAttributes().
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that removes
-     * the attribute.
-     *
-     * @see getAttributes()
-     * @param string $name The attribute name.
-     * @return self
-     */
-    public function withoutAttribute($name)
-    {
-        $clone = clone $this;
-        $clone->attributes->remove($name);
-
-        return $clone;
-    }
-
-    /*******************************************************************************
-     * Body
-     ******************************************************************************/
-
-    /**
-     * Retrieve any parameters provided in the request body.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, this method MUST
-     * return the contents of $_POST.
-     *
-     * Otherwise, this method may return any results of deserializing
-     * the request body content; as parsing returns structured content, the
-     * potential types MUST be arrays or objects only. A null value indicates
-     * the absence of body content.
-     *
-     * @return null|array|object The deserialized body parameters, if any.
-     *     These will typically be an array or object.
-     * @throws RuntimeException if the request body media type parser returns an invalid value
-     */
-    public function getParsedBody()
-    {
-        if ($this->bodyParsed !== false) {
-            return $this->bodyParsed;
-        }
-
-        if (!$this->body) {
-            return null;
-        }
-
-        $mediaType = $this->getMediaType();
-
-        // look for a media type with a structured syntax suffix (RFC 6839)
-        $parts = explode('+', $mediaType);
-        if (count($parts) >= 2) {
-            $mediaType = 'application/' . $parts[count($parts)-1];
-        }
-
-        if (isset($this->bodyParsers[$mediaType]) === true) {
-            $body = (string)$this->getBody();
-            $parsed = $this->bodyParsers[$mediaType]($body);
-
-            if (!is_null($parsed) && !is_object($parsed) && !is_array($parsed)) {
-                throw new RuntimeException(
-                    'Request body media type parser return value must be an array, an object, or null'
-                );
-            }
-            $this->bodyParsed = $parsed;
-            return $this->bodyParsed;
-        }
-
-        return null;
-    }
-
-    /**
-     * Return an instance with the specified body parameters.
-     *
-     * These MAY be injected during instantiation.
-     *
-     * If the request Content-Type is either application/x-www-form-urlencoded
-     * or multipart/form-data, and the request method is POST, use this method
-     * ONLY to inject the contents of $_POST.
-     *
-     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
-     * deserializing the request body content. Deserialization/parsing returns
-     * structured data, and, as such, this method ONLY accepts arrays or objects,
-     * or a null value if nothing was available to parse.
-     *
-     * As an example, if content negotiation determines that the request data
-     * is a JSON payload, this method could be used to create a request
-     * instance with the deserialized parameters.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated body parameters.
-     *
-     * @param null|array|object $data The deserialized body data. This will
-     *     typically be in an array or object.
-     * @return self
-     * @throws \InvalidArgumentException if an unsupported argument type is
-     *     provided.
-     */
-    public function withParsedBody($data)
-    {
-        if (!is_null($data) && !is_object($data) && !is_array($data)) {
-            throw new InvalidArgumentException('Parsed body value must be an array, an object, or null');
-        }
-
-        $clone = clone $this;
-        $clone->bodyParsed = $data;
-
-        return $clone;
-    }
-
-    /**
-     * Force Body to be parsed again.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return self
-     */
-    public function reparseBody()
-    {
-        $this->bodyParsed = false;
-
-        return $this;
-    }
-
-    /**
-     * Register media type parser.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param string   $mediaType A HTTP media type (excluding content-type
-     *     params).
-     * @param callable $callable  A callable that returns parsed contents for
-     *     media type.
-     */
-    public function registerMediaTypeParser($mediaType, callable $callable)
-    {
-        if ($callable instanceof Closure) {
-            $callable = $callable->bindTo($this);
-        }
-        $this->bodyParsers[(string)$mediaType] = $callable;
-    }
-
-    /*******************************************************************************
-     * Parameters (e.g., POST and GET data)
-     ******************************************************************************/
-
-    /**
-     * Fetch request parameter value from body or query string (in that order).
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param  string $key The parameter key.
-     * @param  string $default The default value.
-     *
-     * @return mixed The parameter value.
-     */
-    public function getParam($key, $default = null)
-    {
-        $postParams = $this->getParsedBody();
-        $getParams = $this->getQueryParams();
-        $result = $default;
-        if (is_array($postParams) && isset($postParams[$key])) {
-            $result = $postParams[$key];
-        } elseif (is_object($postParams) && property_exists($postParams, $key)) {
-            $result = $postParams->$key;
-        } elseif (isset($getParams[$key])) {
-            $result = $getParams[$key];
-        }
-
-        return $result;
-    }
-
-    /**
-     * Fetch parameter value from request body.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param      $key
-     * @param null $default
-     *
-     * @return null
-     */
-    public function getParsedBodyParam($key, $default = null)
-    {
-        $postParams = $this->getParsedBody();
-        $result = $default;
-        if (is_array($postParams) && isset($postParams[$key])) {
-            $result = $postParams[$key];
-        } elseif (is_object($postParams) && property_exists($postParams, $key)) {
-            $result = $postParams->$key;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Fetch parameter value from query string.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param      $key
-     * @param null $default
-     *
-     * @return null
-     */
-    public function getQueryParam($key, $default = null)
-    {
-        $getParams = $this->getQueryParams();
-        $result = $default;
-        if (isset($getParams[$key])) {
-            $result = $getParams[$key];
-        }
-
-        return $result;
-    }
-
-    /**
-     * Fetch assocative array of body and query string parameters.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return array
-     */
-    public function getParams()
-    {
-        $params = $this->getQueryParams();
-        $postParams = $this->getParsedBody();
-        if ($postParams) {
-            $params = array_merge($params, (array)$postParams);
-        }
-
-        return $params;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/RequestBody.php b/vendor/slim/slim/Slim/Http/RequestBody.php
deleted file mode 100644
index 2345fe4..0000000
--- a/vendor/slim/slim/Slim/Http/RequestBody.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-/**
- * Provides a PSR-7 implementation of a reusable raw request body
- */
-class RequestBody extends Body
-{
-    /**
-     * Create a new RequestBody.
-     */
-    public function __construct()
-    {
-        $stream = fopen('php://temp', 'w+');
-        stream_copy_to_stream(fopen('php://input', 'r'), $stream);
-        rewind($stream);
-
-        parent::__construct($stream);
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Response.php b/vendor/slim/slim/Slim/Http/Response.php
deleted file mode 100644
index a70d35d..0000000
--- a/vendor/slim/slim/Slim/Http/Response.php
+++ /dev/null
@@ -1,470 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UriInterface;
-use Slim\Interfaces\Http\HeadersInterface;
-
-/**
- * Response
- *
- * This class represents an HTTP response. It manages
- * the response status, headers, and body
- * according to the PSR-7 standard.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/MessageInterface.php
- * @link https://github.com/php-fig/http-message/blob/master/src/ResponseInterface.php
- */
-class Response extends Message implements ResponseInterface
-{
-    /**
-     * Status code
-     *
-     * @var int
-     */
-    protected $status = 200;
-
-    /**
-     * Reason phrase
-     *
-     * @var string
-     */
-    protected $reasonPhrase = '';
-
-    /**
-     * Status codes and reason phrases
-     *
-     * @var array
-     */
-    protected static $messages = [
-        //Informational 1xx
-        100 => 'Continue',
-        101 => 'Switching Protocols',
-        102 => 'Processing',
-        //Successful 2xx
-        200 => 'OK',
-        201 => 'Created',
-        202 => 'Accepted',
-        203 => 'Non-Authoritative Information',
-        204 => 'No Content',
-        205 => 'Reset Content',
-        206 => 'Partial Content',
-        207 => 'Multi-Status',
-        208 => 'Already Reported',
-        226 => 'IM Used',
-        //Redirection 3xx
-        300 => 'Multiple Choices',
-        301 => 'Moved Permanently',
-        302 => 'Found',
-        303 => 'See Other',
-        304 => 'Not Modified',
-        305 => 'Use Proxy',
-        306 => '(Unused)',
-        307 => 'Temporary Redirect',
-        308 => 'Permanent Redirect',
-        //Client Error 4xx
-        400 => 'Bad Request',
-        401 => 'Unauthorized',
-        402 => 'Payment Required',
-        403 => 'Forbidden',
-        404 => 'Not Found',
-        405 => 'Method Not Allowed',
-        406 => 'Not Acceptable',
-        407 => 'Proxy Authentication Required',
-        408 => 'Request Timeout',
-        409 => 'Conflict',
-        410 => 'Gone',
-        411 => 'Length Required',
-        412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Long',
-        415 => 'Unsupported Media Type',
-        416 => 'Requested Range Not Satisfiable',
-        417 => 'Expectation Failed',
-        418 => 'I\'m a teapot',
-        422 => 'Unprocessable Entity',
-        423 => 'Locked',
-        424 => 'Failed Dependency',
-        426 => 'Upgrade Required',
-        428 => 'Precondition Required',
-        429 => 'Too Many Requests',
-        431 => 'Request Header Fields Too Large',
-        451 => 'Unavailable For Legal Reasons',
-        //Server Error 5xx
-        500 => 'Internal Server Error',
-        501 => 'Not Implemented',
-        502 => 'Bad Gateway',
-        503 => 'Service Unavailable',
-        504 => 'Gateway Timeout',
-        505 => 'HTTP Version Not Supported',
-        506 => 'Variant Also Negotiates',
-        507 => 'Insufficient Storage',
-        508 => 'Loop Detected',
-        510 => 'Not Extended',
-        511 => 'Network Authentication Required',
-    ];
-
-    /**
-     * Create new HTTP response.
-     *
-     * @param int                   $status  The response status code.
-     * @param HeadersInterface|null $headers The response headers.
-     * @param StreamInterface|null  $body    The response body.
-     */
-    public function __construct($status = 200, HeadersInterface $headers = null, StreamInterface $body = null)
-    {
-        $this->status = $this->filterStatus($status);
-        $this->headers = $headers ? $headers : new Headers();
-        $this->body = $body ? $body : new Body(fopen('php://temp', 'r+'));
-    }
-
-    /**
-     * This method is applied to the cloned object
-     * after PHP performs an initial shallow-copy. This
-     * method completes a deep-copy by creating new objects
-     * for the cloned object's internal reference pointers.
-     */
-    public function __clone()
-    {
-        $this->headers = clone $this->headers;
-    }
-
-    /*******************************************************************************
-     * Status
-     ******************************************************************************/
-
-    /**
-     * Gets the response status code.
-     *
-     * The status code is a 3-digit integer result code of the server's attempt
-     * to understand and satisfy the request.
-     *
-     * @return int Status code.
-     */
-    public function getStatusCode()
-    {
-        return $this->status;
-    }
-
-    /**
-     * Return an instance with the specified status code and, optionally, reason phrase.
-     *
-     * If no reason phrase is specified, implementations MAY choose to default
-     * to the RFC 7231 or IANA recommended reason phrase for the response's
-     * status code.
-     *
-     * This method MUST be implemented in such a way as to retain the
-     * immutability of the message, and MUST return an instance that has the
-     * updated status and reason phrase.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @param int $code The 3-digit integer result code to set.
-     * @param string $reasonPhrase The reason phrase to use with the
-     *     provided status code; if none is provided, implementations MAY
-     *     use the defaults as suggested in the HTTP specification.
-     * @return self
-     * @throws \InvalidArgumentException For invalid status code arguments.
-     */
-    public function withStatus($code, $reasonPhrase = '')
-    {
-        $code = $this->filterStatus($code);
-
-        if (!is_string($reasonPhrase) && !method_exists($reasonPhrase, '__toString')) {
-            throw new InvalidArgumentException('ReasonPhrase must be a string');
-        }
-
-        $clone = clone $this;
-        $clone->status = $code;
-        if ($reasonPhrase === '' && isset(static::$messages[$code])) {
-            $reasonPhrase = static::$messages[$code];
-        }
-
-        if ($reasonPhrase === '') {
-            throw new InvalidArgumentException('ReasonPhrase must be supplied for this code');
-        }
-
-        $clone->reasonPhrase = $reasonPhrase;
-
-        return $clone;
-    }
-
-    /**
-     * Filter HTTP status code.
-     *
-     * @param  int $status HTTP status code.
-     * @return int
-     * @throws \InvalidArgumentException If an invalid HTTP status code is provided.
-     */
-    protected function filterStatus($status)
-    {
-        if (!is_integer($status) || $status<100 || $status>599) {
-            throw new InvalidArgumentException('Invalid HTTP status code');
-        }
-
-        return $status;
-    }
-
-    /**
-     * Gets the response reason phrase associated with the status code.
-     *
-     * Because a reason phrase is not a required element in a response
-     * status line, the reason phrase value MAY be null. Implementations MAY
-     * choose to return the default RFC 7231 recommended reason phrase (or those
-     * listed in the IANA HTTP Status Code Registry) for the response's
-     * status code.
-     *
-     * @link http://tools.ietf.org/html/rfc7231#section-6
-     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
-     * @return string Reason phrase; must return an empty string if none present.
-     */
-    public function getReasonPhrase()
-    {
-        if ($this->reasonPhrase) {
-            return $this->reasonPhrase;
-        }
-        if (isset(static::$messages[$this->status])) {
-            return static::$messages[$this->status];
-        }
-        return '';
-    }
-
-    /*******************************************************************************
-     * Body
-     ******************************************************************************/
-
-    /**
-     * Write data to the response body.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * Proxies to the underlying stream and writes the provided data to it.
-     *
-     * @param string $data
-     * @return self
-     */
-    public function write($data)
-    {
-        $this->getBody()->write($data);
-
-        return $this;
-    }
-
-    /*******************************************************************************
-     * Response Helpers
-     ******************************************************************************/
-
-    /**
-     * Redirect.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * This method prepares the response object to return an HTTP Redirect
-     * response to the client.
-     *
-     * @param  string|UriInterface $url    The redirect destination.
-     * @param  int|null            $status The redirect HTTP status code.
-     * @return self
-     */
-    public function withRedirect($url, $status = null)
-    {
-        $responseWithRedirect = $this->withHeader('Location', (string)$url);
-
-        if (is_null($status) && $this->getStatusCode() === 200) {
-            $status = 302;
-        }
-
-        if (!is_null($status)) {
-            return $responseWithRedirect->withStatus($status);
-        }
-
-        return $responseWithRedirect;
-    }
-
-    /**
-     * Json.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * This method prepares the response object to return an HTTP Json
-     * response to the client.
-     *
-     * @param  mixed  $data   The data
-     * @param  int    $status The HTTP status code.
-     * @param  int    $encodingOptions Json encoding options
-     * @throws \RuntimeException
-     * @return self
-     */
-    public function withJson($data, $status = null, $encodingOptions = 0)
-    {
-        $body = $this->getBody();
-        $body->rewind();
-        $body->write($json = json_encode($data, $encodingOptions));
-
-        // Ensure that the json encoding passed successfully
-        if ($json === false) {
-            throw new \RuntimeException(json_last_error_msg(), json_last_error());
-        }
-
-        $responseWithJson = $this->withHeader('Content-Type', 'application/json;charset=utf-8');
-        if (isset($status)) {
-            return $responseWithJson->withStatus($status);
-        }
-        return $responseWithJson;
-    }
-
-    /**
-     * Is this response empty?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isEmpty()
-    {
-        return in_array($this->getStatusCode(), [204, 205, 304]);
-    }
-
-    /**
-     * Is this response informational?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isInformational()
-    {
-        return $this->getStatusCode() >= 100 && $this->getStatusCode() < 200;
-    }
-
-    /**
-     * Is this response OK?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isOk()
-    {
-        return $this->getStatusCode() === 200;
-    }
-
-    /**
-     * Is this response successful?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isSuccessful()
-    {
-        return $this->getStatusCode() >= 200 && $this->getStatusCode() < 300;
-    }
-
-    /**
-     * Is this response a redirect?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isRedirect()
-    {
-        return in_array($this->getStatusCode(), [301, 302, 303, 307]);
-    }
-
-    /**
-     * Is this response a redirection?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isRedirection()
-    {
-        return $this->getStatusCode() >= 300 && $this->getStatusCode() < 400;
-    }
-
-    /**
-     * Is this response forbidden?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     * @api
-     */
-    public function isForbidden()
-    {
-        return $this->getStatusCode() === 403;
-    }
-
-    /**
-     * Is this response not Found?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isNotFound()
-    {
-        return $this->getStatusCode() === 404;
-    }
-
-    /**
-     * Is this response a client error?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isClientError()
-    {
-        return $this->getStatusCode() >= 400 && $this->getStatusCode() < 500;
-    }
-
-    /**
-     * Is this response a server error?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    public function isServerError()
-    {
-        return $this->getStatusCode() >= 500 && $this->getStatusCode() < 600;
-    }
-
-    /**
-     * Convert response to string.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        $output = sprintf(
-            'HTTP/%s %s %s',
-            $this->getProtocolVersion(),
-            $this->getStatusCode(),
-            $this->getReasonPhrase()
-        );
-        $output .= PHP_EOL;
-        foreach ($this->getHeaders() as $name => $values) {
-            $output .= sprintf('%s: %s', $name, $this->getHeaderLine($name)) . PHP_EOL;
-        }
-        $output .= PHP_EOL;
-        $output .= (string)$this->getBody();
-
-        return $output;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Stream.php b/vendor/slim/slim/Slim/Http/Stream.php
deleted file mode 100644
index 62c9562..0000000
--- a/vendor/slim/slim/Slim/Http/Stream.php
+++ /dev/null
@@ -1,450 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use RuntimeException;
-
-/**
- * Represents a data stream as defined in PSR-7.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/StreamInterface.php
- */
-class Stream implements StreamInterface
-{
-    /**
-     * Bit mask to determine if the stream is a pipe
-     *
-     * This is octal as per header stat.h
-     */
-    const FSTAT_MODE_S_IFIFO = 0010000;
-
-    /**
-     * Resource modes
-     *
-     * @var  array
-     * @link http://php.net/manual/function.fopen.php
-     */
-    protected static $modes = [
-        'readable' => ['r', 'r+', 'w+', 'a+', 'x+', 'c+'],
-        'writable' => ['r+', 'w', 'w+', 'a', 'a+', 'x', 'x+', 'c', 'c+'],
-    ];
-
-    /**
-     * The underlying stream resource
-     *
-     * @var resource
-     */
-    protected $stream;
-
-    /**
-     * Stream metadata
-     *
-     * @var array
-     */
-    protected $meta;
-
-    /**
-     * Is this stream readable?
-     *
-     * @var bool
-     */
-    protected $readable;
-
-    /**
-     * Is this stream writable?
-     *
-     * @var bool
-     */
-    protected $writable;
-
-    /**
-     * Is this stream seekable?
-     *
-     * @var bool
-     */
-    protected $seekable;
-
-    /**
-     * The size of the stream if known
-     *
-     * @var null|int
-     */
-    protected $size;
-
-    /**
-     * Is this stream a pipe?
-     *
-     * @var bool
-     */
-    protected $isPipe;
-
-    /**
-     * Create a new Stream.
-     *
-     * @param  resource $stream A PHP resource handle.
-     *
-     * @throws InvalidArgumentException If argument is not a resource.
-     */
-    public function __construct($stream)
-    {
-        $this->attach($stream);
-    }
-
-    /**
-     * Get stream metadata as an associative array or retrieve a specific key.
-     *
-     * The keys returned are identical to the keys returned from PHP's
-     * stream_get_meta_data() function.
-     *
-     * @link http://php.net/manual/en/function.stream-get-meta-data.php
-     *
-     * @param string $key Specific metadata to retrieve.
-     *
-     * @return array|mixed|null Returns an associative array if no key is
-     *     provided. Returns a specific key value if a key is provided and the
-     *     value is found, or null if the key is not found.
-     */
-    public function getMetadata($key = null)
-    {
-        $this->meta = stream_get_meta_data($this->stream);
-        if (is_null($key) === true) {
-            return $this->meta;
-        }
-
-        return isset($this->meta[$key]) ? $this->meta[$key] : null;
-    }
-
-    /**
-     * Is a resource attached to this stream?
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @return bool
-     */
-    protected function isAttached()
-    {
-        return is_resource($this->stream);
-    }
-
-    /**
-     * Attach new resource to this object.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param resource $newStream A PHP resource handle.
-     *
-     * @throws InvalidArgumentException If argument is not a valid PHP resource.
-     */
-    protected function attach($newStream)
-    {
-        if (is_resource($newStream) === false) {
-            throw new InvalidArgumentException(__METHOD__ . ' argument must be a valid PHP resource');
-        }
-
-        if ($this->isAttached() === true) {
-            $this->detach();
-        }
-
-        $this->stream = $newStream;
-    }
-
-    /**
-     * Separates any underlying resources from the stream.
-     *
-     * After the stream has been detached, the stream is in an unusable state.
-     *
-     * @return resource|null Underlying PHP stream, if any
-     */
-    public function detach()
-    {
-        $oldResource = $this->stream;
-        $this->stream = null;
-        $this->meta = null;
-        $this->readable = null;
-        $this->writable = null;
-        $this->seekable = null;
-        $this->size = null;
-        $this->isPipe = null;
-
-        return $oldResource;
-    }
-
-    /**
-     * Reads all data from the stream into a string, from the beginning to end.
-     *
-     * This method MUST attempt to seek to the beginning of the stream before
-     * reading data and read the stream until the end is reached.
-     *
-     * Warning: This could attempt to load a large amount of data into memory.
-     *
-     * This method MUST NOT raise an exception in order to conform with PHP's
-     * string casting operations.
-     *
-     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
-     * @return string
-     */
-    public function __toString()
-    {
-        if (!$this->isAttached()) {
-            return '';
-        }
-
-        try {
-            $this->rewind();
-            return $this->getContents();
-        } catch (RuntimeException $e) {
-            return '';
-        }
-    }
-
-    /**
-     * Closes the stream and any underlying resources.
-     */
-    public function close()
-    {
-        if ($this->isAttached() === true) {
-            if ($this->isPipe()) {
-                pclose($this->stream);
-            } else {
-                fclose($this->stream);
-            }
-        }
-
-        $this->detach();
-    }
-
-    /**
-     * Get the size of the stream if known.
-     *
-     * @return int|null Returns the size in bytes if known, or null if unknown.
-     */
-    public function getSize()
-    {
-        if (!$this->size && $this->isAttached() === true) {
-            $stats = fstat($this->stream);
-            $this->size = isset($stats['size']) && !$this->isPipe() ? $stats['size'] : null;
-        }
-
-        return $this->size;
-    }
-
-    /**
-     * Returns the current position of the file read/write pointer
-     *
-     * @return int Position of the file pointer
-     *
-     * @throws RuntimeException on error.
-     */
-    public function tell()
-    {
-        if (!$this->isAttached() || ($position = ftell($this->stream)) === false || $this->isPipe()) {
-            throw new RuntimeException('Could not get the position of the pointer in stream');
-        }
-
-        return $position;
-    }
-
-    /**
-     * Returns true if the stream is at the end of the stream.
-     *
-     * @return bool
-     */
-    public function eof()
-    {
-        return $this->isAttached() ? feof($this->stream) : true;
-    }
-
-    /**
-     * Returns whether or not the stream is readable.
-     *
-     * @return bool
-     */
-    public function isReadable()
-    {
-        if ($this->readable === null) {
-            if ($this->isPipe()) {
-                $this->readable = true;
-            } else {
-                $this->readable = false;
-                if ($this->isAttached()) {
-                    $meta = $this->getMetadata();
-                    foreach (self::$modes['readable'] as $mode) {
-                        if (strpos($meta['mode'], $mode) === 0) {
-                            $this->readable = true;
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-        return $this->readable;
-    }
-
-    /**
-     * Returns whether or not the stream is writable.
-     *
-     * @return bool
-     */
-    public function isWritable()
-    {
-        if ($this->writable === null) {
-            $this->writable = false;
-            if ($this->isAttached()) {
-                $meta = $this->getMetadata();
-                foreach (self::$modes['writable'] as $mode) {
-                    if (strpos($meta['mode'], $mode) === 0) {
-                        $this->writable = true;
-                        break;
-                    }
-                }
-            }
-        }
-
-        return $this->writable;
-    }
-
-    /**
-     * Returns whether or not the stream is seekable.
-     *
-     * @return bool
-     */
-    public function isSeekable()
-    {
-        if ($this->seekable === null) {
-            $this->seekable = false;
-            if ($this->isAttached()) {
-                $meta = $this->getMetadata();
-                $this->seekable = !$this->isPipe() && $meta['seekable'];
-            }
-        }
-
-        return $this->seekable;
-    }
-
-    /**
-     * Seek to a position in the stream.
-     *
-     * @link http://www.php.net/manual/en/function.fseek.php
-     *
-     * @param int $offset Stream offset
-     * @param int $whence Specifies how the cursor position will be calculated
-     *     based on the seek offset. Valid values are identical to the built-in
-     *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
-     *     offset bytes SEEK_CUR: Set position to current location plus offset
-     *     SEEK_END: Set position to end-of-stream plus offset.
-     *
-     * @throws RuntimeException on failure.
-     */
-    public function seek($offset, $whence = SEEK_SET)
-    {
-        // Note that fseek returns 0 on success!
-        if (!$this->isSeekable() || fseek($this->stream, $offset, $whence) === -1) {
-            throw new RuntimeException('Could not seek in stream');
-        }
-    }
-
-    /**
-     * Seek to the beginning of the stream.
-     *
-     * If the stream is not seekable, this method will raise an exception;
-     * otherwise, it will perform a seek(0).
-     *
-     * @see seek()
-     *
-     * @link http://www.php.net/manual/en/function.fseek.php
-     *
-     * @throws RuntimeException on failure.
-     */
-    public function rewind()
-    {
-        if (!$this->isSeekable() || rewind($this->stream) === false) {
-            throw new RuntimeException('Could not rewind stream');
-        }
-    }
-
-    /**
-     * Read data from the stream.
-     *
-     * @param int $length Read up to $length bytes from the object and return
-     *     them. Fewer than $length bytes may be returned if underlying stream
-     *     call returns fewer bytes.
-     *
-     * @return string Returns the data read from the stream, or an empty string
-     *     if no bytes are available.
-     *
-     * @throws RuntimeException if an error occurs.
-     */
-    public function read($length)
-    {
-        if (!$this->isReadable() || ($data = fread($this->stream, $length)) === false) {
-            throw new RuntimeException('Could not read from stream');
-        }
-
-        return $data;
-    }
-
-    /**
-     * Write data to the stream.
-     *
-     * @param string $string The string that is to be written.
-     *
-     * @return int Returns the number of bytes written to the stream.
-     *
-     * @throws RuntimeException on failure.
-     */
-    public function write($string)
-    {
-        if (!$this->isWritable() || ($written = fwrite($this->stream, $string)) === false) {
-            throw new RuntimeException('Could not write to stream');
-        }
-
-        // reset size so that it will be recalculated on next call to getSize()
-        $this->size = null;
-
-        return $written;
-    }
-
-    /**
-     * Returns the remaining contents in a string
-     *
-     * @return string
-     *
-     * @throws RuntimeException if unable to read or an error occurs while
-     *     reading.
-     */
-    public function getContents()
-    {
-        if (!$this->isReadable() || ($contents = stream_get_contents($this->stream)) === false) {
-            throw new RuntimeException('Could not get contents of stream');
-        }
-
-        return $contents;
-    }
-
-    /**
-     * Returns whether or not the stream is a pipe.
-     *
-     * @return bool
-     */
-    public function isPipe()
-    {
-        if ($this->isPipe === null) {
-            $this->isPipe = false;
-            if ($this->isAttached()) {
-                $mode = fstat($this->stream)['mode'];
-                $this->isPipe = ($mode & self::FSTAT_MODE_S_IFIFO) !== 0;
-            }
-        }
-
-        return $this->isPipe;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/UploadedFile.php b/vendor/slim/slim/Slim/Http/UploadedFile.php
deleted file mode 100644
index 48ed3ff..0000000
--- a/vendor/slim/slim/Slim/Http/UploadedFile.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use RuntimeException;
-use InvalidArgumentException;
-use Psr\Http\Message\StreamInterface;
-use Psr\Http\Message\UploadedFileInterface;
-
-/**
- * Represents Uploaded Files.
- *
- * It manages and normalizes uploaded files according to the PSR-7 standard.
- *
- * @link https://github.com/php-fig/http-message/blob/master/src/UploadedFileInterface.php
- * @link https://github.com/php-fig/http-message/blob/master/src/StreamInterface.php
- */
-class UploadedFile implements UploadedFileInterface
-{
-    /**
-     * The client-provided full path to the file
-     *
-     * @note this is public to maintain BC with 3.1.0 and earlier.
-     *
-     * @var string
-     */
-    public $file;
-    /**
-     * The client-provided file name.
-     *
-     * @var string
-     */
-    protected $name;
-    /**
-     * The client-provided media type of the file.
-     *
-     * @var string
-     */
-    protected $type;
-    /**
-     * The size of the file in bytes.
-     *
-     * @var int
-     */
-    protected $size;
-    /**
-     * A valid PHP UPLOAD_ERR_xxx code for the file upload.
-     *
-     * @var int
-     */
-    protected $error = UPLOAD_ERR_OK;
-    /**
-     * Indicates if the upload is from a SAPI environment.
-     *
-     * @var bool
-     */
-    protected $sapi = false;
-    /**
-     * An optional StreamInterface wrapping the file resource.
-     *
-     * @var StreamInterface
-     */
-    protected $stream;
-    /**
-     * Indicates if the uploaded file has already been moved.
-     *
-     * @var bool
-     */
-    protected $moved = false;
-
-    /**
-     * Create a normalized tree of UploadedFile instances from the Environment.
-     *
-     * @param Environment $env The environment
-     *
-     * @return array|null A normalized tree of UploadedFile instances or null if none are provided.
-     */
-    public static function createFromEnvironment(Environment $env)
-    {
-        if (is_array($env['slim.files']) && $env->has('slim.files')) {
-            return $env['slim.files'];
-        } elseif (isset($_FILES)) {
-            return static::parseUploadedFiles($_FILES);
-        }
-
-        return [];
-    }
-
-    /**
-     * Parse a non-normalized, i.e. $_FILES superglobal, tree of uploaded file data.
-     *
-     * @param array $uploadedFiles The non-normalized tree of uploaded file data.
-     *
-     * @return array A normalized tree of UploadedFile instances.
-     */
-    private static function parseUploadedFiles(array $uploadedFiles)
-    {
-        $parsed = [];
-        foreach ($uploadedFiles as $field => $uploadedFile) {
-            if (!isset($uploadedFile['error'])) {
-                if (is_array($uploadedFile)) {
-                    $parsed[$field] = static::parseUploadedFiles($uploadedFile);
-                }
-                continue;
-            }
-
-            $parsed[$field] = [];
-            if (!is_array($uploadedFile['error'])) {
-                $parsed[$field] = new static(
-                    $uploadedFile['tmp_name'],
-                    isset($uploadedFile['name']) ? $uploadedFile['name'] : null,
-                    isset($uploadedFile['type']) ? $uploadedFile['type'] : null,
-                    isset($uploadedFile['size']) ? $uploadedFile['size'] : null,
-                    $uploadedFile['error'],
-                    true
-                );
-            } else {
-                $subArray = [];
-                foreach ($uploadedFile['error'] as $fileIdx => $error) {
-                    // normalise subarray and re-parse to move the input's keyname up a level
-                    $subArray[$fileIdx]['name'] = $uploadedFile['name'][$fileIdx];
-                    $subArray[$fileIdx]['type'] = $uploadedFile['type'][$fileIdx];
-                    $subArray[$fileIdx]['tmp_name'] = $uploadedFile['tmp_name'][$fileIdx];
-                    $subArray[$fileIdx]['error'] = $uploadedFile['error'][$fileIdx];
-                    $subArray[$fileIdx]['size'] = $uploadedFile['size'][$fileIdx];
-
-                    $parsed[$field] = static::parseUploadedFiles($subArray);
-                }
-            }
-        }
-
-        return $parsed;
-    }
-
-    /**
-     * Construct a new UploadedFile instance.
-     *
-     * @param string      $file The full path to the uploaded file provided by the client.
-     * @param string|null $name The file name.
-     * @param string|null $type The file media type.
-     * @param int|null    $size The file size in bytes.
-     * @param int         $error The UPLOAD_ERR_XXX code representing the status of the upload.
-     * @param bool        $sapi Indicates if the upload is in a SAPI environment.
-     */
-    public function __construct($file, $name = null, $type = null, $size = null, $error = UPLOAD_ERR_OK, $sapi = false)
-    {
-        $this->file = $file;
-        $this->name = $name;
-        $this->type = $type;
-        $this->size = $size;
-        $this->error = $error;
-        $this->sapi = $sapi;
-    }
-
-    /**
-     * Retrieve a stream representing the uploaded file.
-     *
-     * This method MUST return a StreamInterface instance, representing the
-     * uploaded file. The purpose of this method is to allow utilizing native PHP
-     * stream functionality to manipulate the file upload, such as
-     * stream_copy_to_stream() (though the result will need to be decorated in a
-     * native PHP stream wrapper to work with such functions).
-     *
-     * If the moveTo() method has been called previously, this method MUST raise
-     * an exception.
-     *
-     * @return StreamInterface Stream representation of the uploaded file.
-     * @throws \RuntimeException in cases when no stream is available or can be
-     *     created.
-     */
-    public function getStream()
-    {
-        if ($this->moved) {
-            throw new \RuntimeException(sprintf('Uploaded file %1s has already been moved', $this->name));
-        }
-        if ($this->stream === null) {
-            $this->stream = new Stream(fopen($this->file, 'r'));
-        }
-
-        return $this->stream;
-    }
-
-    /**
-     * Move the uploaded file to a new location.
-     *
-     * Use this method as an alternative to move_uploaded_file(). This method is
-     * guaranteed to work in both SAPI and non-SAPI environments.
-     * Implementations must determine which environment they are in, and use the
-     * appropriate method (move_uploaded_file(), rename(), or a stream
-     * operation) to perform the operation.
-     *
-     * $targetPath may be an absolute path, or a relative path. If it is a
-     * relative path, resolution should be the same as used by PHP's rename()
-     * function.
-     *
-     * The original file or stream MUST be removed on completion.
-     *
-     * If this method is called more than once, any subsequent calls MUST raise
-     * an exception.
-     *
-     * When used in an SAPI environment where $_FILES is populated, when writing
-     * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
-     * used to ensure permissions and upload status are verified correctly.
-     *
-     * If you wish to move to a stream, use getStream(), as SAPI operations
-     * cannot guarantee writing to stream destinations.
-     *
-     * @see http://php.net/is_uploaded_file
-     * @see http://php.net/move_uploaded_file
-     *
-     * @param string $targetPath Path to which to move the uploaded file.
-     *
-     * @throws InvalidArgumentException if the $path specified is invalid.
-     * @throws RuntimeException on any error during the move operation, or on
-     *     the second or subsequent call to the method.
-     */
-    public function moveTo($targetPath)
-    {
-        if ($this->moved) {
-            throw new RuntimeException('Uploaded file already moved');
-        }
-
-        $targetIsStream = strpos($targetPath, '://') > 0;
-        if (!$targetIsStream && !is_writable(dirname($targetPath))) {
-            throw new InvalidArgumentException('Upload target path is not writable');
-        }
-
-        if ($targetIsStream) {
-            if (!copy($this->file, $targetPath)) {
-                throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath));
-            }
-            if (!unlink($this->file)) {
-                throw new RuntimeException(sprintf('Error removing uploaded file %1s', $this->name));
-            }
-        } elseif ($this->sapi) {
-            if (!is_uploaded_file($this->file)) {
-                throw new RuntimeException(sprintf('%1s is not a valid uploaded file', $this->file));
-            }
-
-            if (!move_uploaded_file($this->file, $targetPath)) {
-                throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath));
-            }
-        } else {
-            if (!rename($this->file, $targetPath)) {
-                throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath));
-            }
-        }
-
-        $this->moved = true;
-    }
-
-    /**
-     * Retrieve the error associated with the uploaded file.
-     *
-     * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
-     *
-     * If the file was uploaded successfully, this method MUST return
-     * UPLOAD_ERR_OK.
-     *
-     * Implementations SHOULD return the value stored in the "error" key of
-     * the file in the $_FILES array.
-     *
-     * @see http://php.net/manual/en/features.file-upload.errors.php
-     *
-     * @return int One of PHP's UPLOAD_ERR_XXX constants.
-     */
-    public function getError()
-    {
-        return $this->error;
-    }
-
-    /**
-     * Retrieve the filename sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious filename with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "name" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The filename sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientFilename()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Retrieve the media type sent by the client.
-     *
-     * Do not trust the value returned by this method. A client could send
-     * a malicious media type with the intention to corrupt or hack your
-     * application.
-     *
-     * Implementations SHOULD return the value stored in the "type" key of
-     * the file in the $_FILES array.
-     *
-     * @return string|null The media type sent by the client or null if none
-     *     was provided.
-     */
-    public function getClientMediaType()
-    {
-        return $this->type;
-    }
-
-    /**
-     * Retrieve the file size.
-     *
-     * Implementations SHOULD return the value stored in the "size" key of
-     * the file in the $_FILES array if available, as PHP calculates this based
-     * on the actual size transmitted.
-     *
-     * @return int|null The file size in bytes or null if unknown.
-     */
-    public function getSize()
-    {
-        return $this->size;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Http/Uri.php b/vendor/slim/slim/Slim/Http/Uri.php
deleted file mode 100644
index 6b87747..0000000
--- a/vendor/slim/slim/Slim/Http/Uri.php
+++ /dev/null
@@ -1,824 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Http;
-
-use InvalidArgumentException;
-use \Psr\Http\Message\UriInterface;
-use Slim\Http\Environment;
-
-/**
- * Value object representing a URI.
- *
- * This interface is meant to represent URIs according to RFC 3986 and to
- * provide methods for most common operations. Additional functionality for
- * working with URIs can be provided on top of the interface or externally.
- * Its primary use is for HTTP requests, but may also be used in other
- * contexts.
- *
- * Instances of this interface are considered immutable; all methods that
- * might change state MUST be implemented such that they retain the internal
- * state of the current instance and return an instance that contains the
- * changed state.
- *
- * Typically the Host header will be also be present in the request message.
- * For server-side requests, the scheme will typically be discoverable in the
- * server parameters.
- *
- * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
- */
-class Uri implements UriInterface
-{
-    /**
-     * Uri scheme (without "://" suffix)
-     *
-     * @var string
-     */
-    protected $scheme = '';
-
-    /**
-     * Uri user
-     *
-     * @var string
-     */
-    protected $user = '';
-
-    /**
-     * Uri password
-     *
-     * @var string
-     */
-    protected $password = '';
-
-    /**
-     * Uri host
-     *
-     * @var string
-     */
-    protected $host = '';
-
-    /**
-     * Uri port number
-     *
-     * @var null|int
-     */
-    protected $port;
-
-    /**
-     * Uri base path
-     *
-     * @var string
-     */
-    protected $basePath = '';
-
-    /**
-     * Uri path
-     *
-     * @var string
-     */
-    protected $path = '';
-
-    /**
-     * Uri query string (without "?" prefix)
-     *
-     * @var string
-     */
-    protected $query = '';
-
-    /**
-     * Uri fragment string (without "#" prefix)
-     *
-     * @var string
-     */
-    protected $fragment = '';
-
-    /**
-     * Create new Uri.
-     *
-     * @param string $scheme   Uri scheme.
-     * @param string $host     Uri host.
-     * @param int    $port     Uri port number.
-     * @param string $path     Uri path.
-     * @param string $query    Uri query string.
-     * @param string $fragment Uri fragment.
-     * @param string $user     Uri user.
-     * @param string $password Uri password.
-     */
-    public function __construct(
-        $scheme,
-        $host,
-        $port = null,
-        $path = '/',
-        $query = '',
-        $fragment = '',
-        $user = '',
-        $password = ''
-    ) {
-        $this->scheme = $this->filterScheme($scheme);
-        $this->host = $host;
-        $this->port = $this->filterPort($port);
-        $this->path = empty($path) ? '/' : $this->filterPath($path);
-        $this->query = $this->filterQuery($query);
-        $this->fragment = $this->filterQuery($fragment);
-        $this->user = $user;
-        $this->password = $password;
-    }
-
-    /**
-     * Create new Uri from string.
-     *
-     * @param  string $uri Complete Uri string
-     *     (i.e., https://user:pass@host:443/path?query).
-     *
-     * @return self
-     */
-    public static function createFromString($uri)
-    {
-        if (!is_string($uri) && !method_exists($uri, '__toString')) {
-            throw new InvalidArgumentException('Uri must be a string');
-        }
-
-        $parts = parse_url($uri);
-        $scheme = isset($parts['scheme']) ? $parts['scheme'] : '';
-        $user = isset($parts['user']) ? $parts['user'] : '';
-        $pass = isset($parts['pass']) ? $parts['pass'] : '';
-        $host = isset($parts['host']) ? $parts['host'] : '';
-        $port = isset($parts['port']) ? $parts['port'] : null;
-        $path = isset($parts['path']) ? $parts['path'] : '';
-        $query = isset($parts['query']) ? $parts['query'] : '';
-        $fragment = isset($parts['fragment']) ? $parts['fragment'] : '';
-
-        return new static($scheme, $host, $port, $path, $query, $fragment, $user, $pass);
-    }
-
-    /**
-     * Create new Uri from environment.
-     *
-     * @param Environment $env
-     *
-     * @return self
-     */
-    public static function createFromEnvironment(Environment $env)
-    {
-        // Scheme
-        $isSecure = $env->get('HTTPS');
-        $scheme = (empty($isSecure) || $isSecure === 'off') ? 'http' : 'https';
-
-        // Authority: Username and password
-        $username = $env->get('PHP_AUTH_USER', '');
-        $password = $env->get('PHP_AUTH_PW', '');
-
-        // Authority: Host
-        if ($env->has('HTTP_HOST')) {
-            $host = $env->get('HTTP_HOST');
-        } else {
-            $host = $env->get('SERVER_NAME');
-        }
-
-        // Authority: Port
-        $port = (int)$env->get('SERVER_PORT', 80);
-        if (preg_match('/^(\[[a-fA-F0-9:.]+\])(:\d+)?\z/', $host, $matches)) {
-            $host = $matches[1];
-
-            if ($matches[2]) {
-                $port = (int) substr($matches[2], 1);
-            }
-        } else {
-            $pos = strpos($host, ':');
-            if ($pos !== false) {
-                $port = (int) substr($host, $pos + 1);
-                $host = strstr($host, ':', true);
-            }
-        }
-
-        // Path
-        $requestScriptName = parse_url($env->get('SCRIPT_NAME'), PHP_URL_PATH);
-        $requestScriptDir = dirname($requestScriptName);
-
-        // parse_url() requires a full URL. As we don't extract the domain name or scheme,
-        // we use a stand-in.
-        $requestUri = parse_url('http://example.com' . $env->get('REQUEST_URI'), PHP_URL_PATH);
-
-        $basePath = '';
-        $virtualPath = $requestUri;
-        if (stripos($requestUri, $requestScriptName) === 0) {
-            $basePath = $requestScriptName;
-        } elseif ($requestScriptDir !== '/' && stripos($requestUri, $requestScriptDir) === 0) {
-            $basePath = $requestScriptDir;
-        }
-
-        if ($basePath) {
-            $virtualPath = ltrim(substr($requestUri, strlen($basePath)), '/');
-        }
-
-        // Query string
-        $queryString = $env->get('QUERY_STRING', '');
-        if ($queryString === '') {
-            $queryString = parse_url('http://example.com' . $env->get('REQUEST_URI'), PHP_URL_QUERY);
-        }
-
-        // Fragment
-        $fragment = '';
-
-        // Build Uri
-        $uri = new static($scheme, $host, $port, $virtualPath, $queryString, $fragment, $username, $password);
-        if ($basePath) {
-            $uri = $uri->withBasePath($basePath);
-        }
-
-        return $uri;
-    }
-
-    /********************************************************************************
-     * Scheme
-     *******************************************************************************/
-
-    /**
-     * Retrieve the scheme component of the URI.
-     *
-     * If no scheme is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.1.
-     *
-     * The trailing ":" character is not part of the scheme and MUST NOT be
-     * added.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.1
-     * @return string The URI scheme.
-     */
-    public function getScheme()
-    {
-        return $this->scheme;
-    }
-
-    /**
-     * Return an instance with the specified scheme.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified scheme.
-     *
-     * Implementations MUST support the schemes "http" and "https" case
-     * insensitively, and MAY accommodate other schemes if required.
-     *
-     * An empty scheme is equivalent to removing the scheme.
-     *
-     * @param string $scheme The scheme to use with the new instance.
-     * @return self A new instance with the specified scheme.
-     * @throws \InvalidArgumentException for invalid or unsupported schemes.
-     */
-    public function withScheme($scheme)
-    {
-        $scheme = $this->filterScheme($scheme);
-        $clone = clone $this;
-        $clone->scheme = $scheme;
-
-        return $clone;
-    }
-
-    /**
-     * Filter Uri scheme.
-     *
-     * @param  string $scheme Raw Uri scheme.
-     * @return string
-     *
-     * @throws InvalidArgumentException If the Uri scheme is not a string.
-     * @throws InvalidArgumentException If Uri scheme is not "", "https", or "http".
-     */
-    protected function filterScheme($scheme)
-    {
-        static $valid = [
-            '' => true,
-            'https' => true,
-            'http' => true,
-        ];
-
-        if (!is_string($scheme) && !method_exists($scheme, '__toString')) {
-            throw new InvalidArgumentException('Uri scheme must be a string');
-        }
-
-        $scheme = str_replace('://', '', strtolower((string)$scheme));
-        if (!isset($valid[$scheme])) {
-            throw new InvalidArgumentException('Uri scheme must be one of: "", "https", "http"');
-        }
-
-        return $scheme;
-    }
-
-    /********************************************************************************
-     * Authority
-     *******************************************************************************/
-
-    /**
-     * Retrieve the authority component of the URI.
-     *
-     * If no authority information is present, this method MUST return an empty
-     * string.
-     *
-     * The authority syntax of the URI is:
-     *
-     * <pre>
-     * [user-info@]host[:port]
-     * </pre>
-     *
-     * If the port component is not set or is the standard port for the current
-     * scheme, it SHOULD NOT be included.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-3.2
-     * @return string The URI authority, in "[user-info@]host[:port]" format.
-     */
-    public function getAuthority()
-    {
-        $userInfo = $this->getUserInfo();
-        $host = $this->getHost();
-        $port = $this->getPort();
-
-        return ($userInfo ? $userInfo . '@' : '') . $host . ($port !== null ? ':' . $port : '');
-    }
-
-    /**
-     * Retrieve the user information component of the URI.
-     *
-     * If no user information is present, this method MUST return an empty
-     * string.
-     *
-     * If a user is present in the URI, this will return that value;
-     * additionally, if the password is also present, it will be appended to the
-     * user value, with a colon (":") separating the values.
-     *
-     * The trailing "@" character is not part of the user information and MUST
-     * NOT be added.
-     *
-     * @return string The URI user information, in "username[:password]" format.
-     */
-    public function getUserInfo()
-    {
-        return $this->user . ($this->password ? ':' . $this->password : '');
-    }
-
-    /**
-     * Return an instance with the specified user information.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified user information.
-     *
-     * Password is optional, but the user information MUST include the
-     * user; an empty string for the user is equivalent to removing user
-     * information.
-     *
-     * @param string $user The user name to use for authority.
-     * @param null|string $password The password associated with $user.
-     * @return self A new instance with the specified user information.
-     */
-    public function withUserInfo($user, $password = null)
-    {
-        $clone = clone $this;
-        $clone->user = $user;
-        $clone->password = $password ? $password : '';
-
-        return $clone;
-    }
-
-    /**
-     * Retrieve the host component of the URI.
-     *
-     * If no host is present, this method MUST return an empty string.
-     *
-     * The value returned MUST be normalized to lowercase, per RFC 3986
-     * Section 3.2.2.
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
-     * @return string The URI host.
-     */
-    public function getHost()
-    {
-        return $this->host;
-    }
-
-    /**
-     * Return an instance with the specified host.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified host.
-     *
-     * An empty host value is equivalent to removing the host.
-     *
-     * @param string $host The hostname to use with the new instance.
-     * @return self A new instance with the specified host.
-     * @throws \InvalidArgumentException for invalid hostnames.
-     */
-    public function withHost($host)
-    {
-        $clone = clone $this;
-        $clone->host = $host;
-
-        return $clone;
-    }
-
-    /**
-     * Retrieve the port component of the URI.
-     *
-     * If a port is present, and it is non-standard for the current scheme,
-     * this method MUST return it as an integer. If the port is the standard port
-     * used with the current scheme, this method SHOULD return null.
-     *
-     * If no port is present, and no scheme is present, this method MUST return
-     * a null value.
-     *
-     * If no port is present, but a scheme is present, this method MAY return
-     * the standard port for that scheme, but SHOULD return null.
-     *
-     * @return null|int The URI port.
-     */
-    public function getPort()
-    {
-        return $this->port && !$this->hasStandardPort() ? $this->port : null;
-    }
-
-    /**
-     * Return an instance with the specified port.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified port.
-     *
-     * Implementations MUST raise an exception for ports outside the
-     * established TCP and UDP port ranges.
-     *
-     * A null value provided for the port is equivalent to removing the port
-     * information.
-     *
-     * @param null|int $port The port to use with the new instance; a null value
-     *     removes the port information.
-     * @return self A new instance with the specified port.
-     * @throws \InvalidArgumentException for invalid ports.
-     */
-    public function withPort($port)
-    {
-        $port = $this->filterPort($port);
-        $clone = clone $this;
-        $clone->port = $port;
-
-        return $clone;
-    }
-
-    /**
-     * Does this Uri use a standard port?
-     *
-     * @return bool
-     */
-    protected function hasStandardPort()
-    {
-        return ($this->scheme === 'http' && $this->port === 80) || ($this->scheme === 'https' && $this->port === 443);
-    }
-
-    /**
-     * Filter Uri port.
-     *
-     * @param  null|int $port The Uri port number.
-     * @return null|int
-     *
-     * @throws InvalidArgumentException If the port is invalid.
-     */
-    protected function filterPort($port)
-    {
-        if (is_null($port) || (is_integer($port) && ($port >= 1 && $port <= 65535))) {
-            return $port;
-        }
-
-        throw new InvalidArgumentException('Uri port must be null or an integer between 1 and 65535 (inclusive)');
-    }
-
-    /********************************************************************************
-     * Path
-     *******************************************************************************/
-
-    /**
-     * Retrieve the path component of the URI.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * Normally, the empty path "" and absolute path "/" are considered equal as
-     * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
-     * do this normalization because in contexts with a trimmed base path, e.g.
-     * the front controller, this difference becomes significant. It's the task
-     * of the user to handle both "" and "/".
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.3.
-     *
-     * As an example, if the value should include a slash ("/") not intended as
-     * delimiter between path segments, that value MUST be passed in encoded
-     * form (e.g., "%2F") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.3
-     * @return string The URI path.
-     */
-    public function getPath()
-    {
-        return $this->path;
-    }
-
-    /**
-     * Return an instance with the specified path.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified path.
-     *
-     * The path can either be empty or absolute (starting with a slash) or
-     * rootless (not starting with a slash). Implementations MUST support all
-     * three syntaxes.
-     *
-     * If the path is intended to be domain-relative rather than path relative then
-     * it must begin with a slash ("/"). Paths not starting with a slash ("/")
-     * are assumed to be relative to some base path known to the application or
-     * consumer.
-     *
-     * Users can provide both encoded and decoded path characters.
-     * Implementations ensure the correct encoding as outlined in getPath().
-     *
-     * @param string $path The path to use with the new instance.
-     * @return self A new instance with the specified path.
-     * @throws \InvalidArgumentException for invalid paths.
-     */
-    public function withPath($path)
-    {
-        if (!is_string($path)) {
-            throw new InvalidArgumentException('Uri path must be a string');
-        }
-
-        $clone = clone $this;
-        $clone->path = $this->filterPath($path);
-
-        // if the path is absolute, then clear basePath
-        if (substr($path, 0, 1) == '/') {
-            $clone->basePath = '';
-        }
-
-        return $clone;
-    }
-
-    /**
-     * Retrieve the base path segment of the URI.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * This method MUST return a string; if no path is present it MUST return
-     * an empty string.
-     *
-     * @return string The base path segment of the URI.
-     */
-    public function getBasePath()
-    {
-        return $this->basePath;
-    }
-
-    /**
-     * Set base path.
-     *
-     * Note: This method is not part of the PSR-7 standard.
-     *
-     * @param  string $basePath
-     * @return self
-     */
-    public function withBasePath($basePath)
-    {
-        if (!is_string($basePath)) {
-            throw new InvalidArgumentException('Uri path must be a string');
-        }
-        if (!empty($basePath)) {
-            $basePath = '/' . trim($basePath, '/'); // <-- Trim on both sides
-        }
-        $clone = clone $this;
-
-        if ($basePath !== '/') {
-            $clone->basePath = $this->filterPath($basePath);
-        }
-
-        return $clone;
-    }
-
-    /**
-     * Filter Uri path.
-     *
-     * This method percent-encodes all reserved
-     * characters in the provided path string. This method
-     * will NOT double-encode characters that are already
-     * percent-encoded.
-     *
-     * @param  string $path The raw uri path.
-     * @return string       The RFC 3986 percent-encoded uri path.
-     * @link   http://www.faqs.org/rfcs/rfc3986.html
-     */
-    protected function filterPath($path)
-    {
-        return preg_replace_callback(
-            '/(?:[^a-zA-Z0-9_\-\.~:@&=\+\$,\/;%]+|%(?![A-Fa-f0-9]{2}))/',
-            function ($match) {
-                return rawurlencode($match[0]);
-            },
-            $path
-        );
-    }
-
-    /********************************************************************************
-     * Query
-     *******************************************************************************/
-
-    /**
-     * Retrieve the query string of the URI.
-     *
-     * If no query string is present, this method MUST return an empty string.
-     *
-     * The leading "?" character is not part of the query and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.4.
-     *
-     * As an example, if a value in a key/value pair of the query string should
-     * include an ampersand ("&") not intended as a delimiter between values,
-     * that value MUST be passed in encoded form (e.g., "%26") to the instance.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.4
-     * @return string The URI query string.
-     */
-    public function getQuery()
-    {
-        return $this->query;
-    }
-
-    /**
-     * Return an instance with the specified query string.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified query string.
-     *
-     * Users can provide both encoded and decoded query characters.
-     * Implementations ensure the correct encoding as outlined in getQuery().
-     *
-     * An empty query string value is equivalent to removing the query string.
-     *
-     * @param string $query The query string to use with the new instance.
-     * @return self A new instance with the specified query string.
-     * @throws \InvalidArgumentException for invalid query strings.
-     */
-    public function withQuery($query)
-    {
-        if (!is_string($query) && !method_exists($query, '__toString')) {
-            throw new InvalidArgumentException('Uri query must be a string');
-        }
-        $query = ltrim((string)$query, '?');
-        $clone = clone $this;
-        $clone->query = $this->filterQuery($query);
-
-        return $clone;
-    }
-
-    /**
-     * Filters the query string or fragment of a URI.
-     *
-     * @param string $query The raw uri query string.
-     * @return string The percent-encoded query string.
-     */
-    protected function filterQuery($query)
-    {
-        return preg_replace_callback(
-            '/(?:[^a-zA-Z0-9_\-\.~!\$&\'\(\)\*\+,;=%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/',
-            function ($match) {
-                return rawurlencode($match[0]);
-            },
-            $query
-        );
-    }
-
-    /********************************************************************************
-     * Fragment
-     *******************************************************************************/
-
-    /**
-     * Retrieve the fragment component of the URI.
-     *
-     * If no fragment is present, this method MUST return an empty string.
-     *
-     * The leading "#" character is not part of the fragment and MUST NOT be
-     * added.
-     *
-     * The value returned MUST be percent-encoded, but MUST NOT double-encode
-     * any characters. To determine what characters to encode, please refer to
-     * RFC 3986, Sections 2 and 3.5.
-     *
-     * @see https://tools.ietf.org/html/rfc3986#section-2
-     * @see https://tools.ietf.org/html/rfc3986#section-3.5
-     * @return string The URI fragment.
-     */
-    public function getFragment()
-    {
-        return $this->fragment;
-    }
-
-    /**
-     * Return an instance with the specified URI fragment.
-     *
-     * This method MUST retain the state of the current instance, and return
-     * an instance that contains the specified URI fragment.
-     *
-     * Users can provide both encoded and decoded fragment characters.
-     * Implementations ensure the correct encoding as outlined in getFragment().
-     *
-     * An empty fragment value is equivalent to removing the fragment.
-     *
-     * @param string $fragment The fragment to use with the new instance.
-     * @return self A new instance with the specified fragment.
-     */
-    public function withFragment($fragment)
-    {
-        if (!is_string($fragment) && !method_exists($fragment, '__toString')) {
-            throw new InvalidArgumentException('Uri fragment must be a string');
-        }
-        $fragment = ltrim((string)$fragment, '#');
-        $clone = clone $this;
-        $clone->fragment = $this->filterQuery($fragment);
-
-        return $clone;
-    }
-
-    /********************************************************************************
-     * Helpers
-     *******************************************************************************/
-
-    /**
-     * Return the string representation as a URI reference.
-     *
-     * Depending on which components of the URI are present, the resulting
-     * string is either a full URI or relative reference according to RFC 3986,
-     * Section 4.1. The method concatenates the various components of the URI,
-     * using the appropriate delimiters:
-     *
-     * - If a scheme is present, it MUST be suffixed by ":".
-     * - If an authority is present, it MUST be prefixed by "//".
-     * - The path can be concatenated without delimiters. But there are two
-     *   cases where the path has to be adjusted to make the URI reference
-     *   valid as PHP does not allow to throw an exception in __toString():
-     *     - If the path is rootless and an authority is present, the path MUST
-     *       be prefixed by "/".
-     *     - If the path is starting with more than one "/" and no authority is
-     *       present, the starting slashes MUST be reduced to one.
-     * - If a query is present, it MUST be prefixed by "?".
-     * - If a fragment is present, it MUST be prefixed by "#".
-     *
-     * @see http://tools.ietf.org/html/rfc3986#section-4.1
-     * @return string
-     */
-    public function __toString()
-    {
-        $scheme = $this->getScheme();
-        $authority = $this->getAuthority();
-        $basePath = $this->getBasePath();
-        $path = $this->getPath();
-        $query = $this->getQuery();
-        $fragment = $this->getFragment();
-
-        $path = $basePath . '/' . ltrim($path, '/');
-
-        return ($scheme ? $scheme . ':' : '')
-            . ($authority ? '//' . $authority : '')
-            . $path
-            . ($query ? '?' . $query : '')
-            . ($fragment ? '#' . $fragment : '');
-    }
-
-    /**
-     * Return the fully qualified base URL.
-     *
-     * Note that this method never includes a trailing /
-     *
-     * This method is not part of PSR-7.
-     *
-     * @return string
-     */
-    public function getBaseUrl()
-    {
-        $scheme = $this->getScheme();
-        $authority = $this->getAuthority();
-        $basePath = $this->getBasePath();
-
-        if ($authority && substr($basePath, 0, 1) !== '/') {
-            $basePath = $basePath . '/' . $basePath;
-        }
-
-        return ($scheme ? $scheme . ':' : '')
-            . ($authority ? '//' . $authority : '')
-            . rtrim($basePath, '/');
-    }
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php b/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php
deleted file mode 100644
index 9bde59a..0000000
--- a/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-/**
- * Resolves a callable.
- *
- * @package Slim
- * @since 3.0.0
- */
-interface CallableResolverInterface
-{
-    /**
-     * Invoke the resolved callable.
-     *
-     * @param mixed $toResolve
-     *
-     * @return callable
-     */
-    public function resolve($toResolve);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/CollectionInterface.php b/vendor/slim/slim/Slim/Interfaces/CollectionInterface.php
deleted file mode 100644
index 876b061..0000000
--- a/vendor/slim/slim/Slim/Interfaces/CollectionInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-/**
- * Collection Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface CollectionInterface extends \ArrayAccess, \Countable, \IteratorAggregate
-{
-    public function set($key, $value);
-
-    public function get($key, $default = null);
-
-    public function replace(array $items);
-
-    public function all();
-
-    public function has($key);
-
-    public function remove($key);
-
-    public function clear();
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/Http/CookiesInterface.php b/vendor/slim/slim/Slim/Interfaces/Http/CookiesInterface.php
deleted file mode 100644
index 44981ce..0000000
--- a/vendor/slim/slim/Slim/Interfaces/Http/CookiesInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces\Http;
-
-/**
- * Cookies Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface CookiesInterface
-{
-    public function get($name, $default = null);
-    public function set($name, $value);
-    public function toHeaders();
-    public static function parseHeader($header);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php b/vendor/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php
deleted file mode 100644
index a14ecbd..0000000
--- a/vendor/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces\Http;
-
-/**
- * Environment Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface EnvironmentInterface
-{
-    public static function mock(array $settings = []);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/Http/HeadersInterface.php b/vendor/slim/slim/Slim/Interfaces/Http/HeadersInterface.php
deleted file mode 100644
index 08288fc..0000000
--- a/vendor/slim/slim/Slim/Interfaces/Http/HeadersInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces\Http;
-
-use Slim\Interfaces\CollectionInterface;
-
-/**
- * Headers Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface HeadersInterface extends CollectionInterface
-{
-    public function add($key, $value);
-
-    public function normalizeKey($key);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php b/vendor/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php
deleted file mode 100644
index 07b3314..0000000
--- a/vendor/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-
-/**
- * Defines a contract for invoking a route callable.
- */
-interface InvocationStrategyInterface
-{
-    /**
-     * Invoke a route callable.
-     *
-     * @param callable               $callable The callable to invoke using the strategy.
-     * @param ServerRequestInterface $request The request object.
-     * @param ResponseInterface      $response The response object.
-     * @param array                  $routeArguments The route's placholder arguments
-     *
-     * @return ResponseInterface|string The response from the callable.
-     */
-    public function __invoke(
-        callable $callable,
-        ServerRequestInterface $request,
-        ResponseInterface $response,
-        array $routeArguments
-    );
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/RouteGroupInterface.php b/vendor/slim/slim/Slim/Interfaces/RouteGroupInterface.php
deleted file mode 100644
index 319a67e..0000000
--- a/vendor/slim/slim/Slim/Interfaces/RouteGroupInterface.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-use Slim\App;
-
-/**
- * RouteGroup Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface RouteGroupInterface
-{
-    /**
-     * Get route pattern
-     *
-     * @return string
-     */
-    public function getPattern();
-
-    /**
-     * Prepend middleware to the group middleware collection
-     *
-     * @param callable|string $callable The callback routine
-     *
-     * @return RouteGroupInterface
-     */
-    public function add($callable);
-
-    /**
-     * Execute route group callable in the context of the Slim App
-     *
-     * This method invokes the route group object's callable, collecting
-     * nested route objects
-     *
-     * @param App $app
-     */
-    public function __invoke(App $app);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/RouteInterface.php b/vendor/slim/slim/Slim/Interfaces/RouteInterface.php
deleted file mode 100644
index 32d4bae..0000000
--- a/vendor/slim/slim/Slim/Interfaces/RouteInterface.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * Route Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface RouteInterface
-{
-
-    /**
-     * Retrieve a specific route argument
-     *
-     * @param string $name
-     * @param mixed $default
-     *
-     * @return mixed
-     */
-    public function getArgument($name, $default = null);
-
-    /**
-     * Get route arguments
-     *
-     * @return array
-     */
-    public function getArguments();
-
-    /**
-     * Get route name
-     *
-     * @return null|string
-     */
-    public function getName();
-
-    /**
-     * Get route pattern
-     *
-     * @return string
-     */
-    public function getPattern();
-
-    /**
-     * Set a route argument
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @return static
-     */
-    public function setArgument($name, $value);
-
-    /**
-     * Replace route arguments
-     *
-     * @param array $arguments
-     *
-     * @return static
-     */
-    public function setArguments(array $arguments);
-
-    /**
-     * Set route name
-     *
-     * @param string $name
-     *
-     * @return static
-     * @throws InvalidArgumentException if the route name is not a string
-     */
-    public function setName($name);
-
-    /**
-     * Add middleware
-     *
-     * This method prepends new middleware to the route's middleware stack.
-     *
-     * @param callable|string $callable The callback routine
-     *
-     * @return RouteInterface
-     */
-    public function add($callable);
-
-    /**
-     * Prepare the route for use
-     *
-     * @param ServerRequestInterface $request
-     * @param array $arguments
-     */
-    public function prepare(ServerRequestInterface $request, array $arguments);
-
-    /**
-     * Run route
-     *
-     * This method traverses the middleware stack, including the route's callable
-     * and captures the resultant HTTP response object. It then sends the response
-     * back to the Application.
-     *
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface $response
-     * @return ResponseInterface
-     */
-    public function run(ServerRequestInterface $request, ResponseInterface $response);
-
-    /**
-     * Dispatch route callable against current Request and Response objects
-     *
-     * This method invokes the route object's callable. If middleware is
-     * registered for the route, each callable middleware is invoked in
-     * the order specified.
-     *
-     * @param ServerRequestInterface $request  The current Request object
-     * @param ResponseInterface      $response The current Response object
-     *
-     * @return ResponseInterface
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response);
-}
diff --git a/vendor/slim/slim/Slim/Interfaces/RouterInterface.php b/vendor/slim/slim/Slim/Interfaces/RouterInterface.php
deleted file mode 100644
index 3d32dcd..0000000
--- a/vendor/slim/slim/Slim/Interfaces/RouterInterface.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim\Interfaces;
-
-use RuntimeException;
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-
-/**
- * Router Interface
- *
- * @package Slim
- * @since   3.0.0
- */
-interface RouterInterface
-{
-    /**
-     * Add route
-     *
-     * @param string[] $methods Array of HTTP methods
-     * @param string   $pattern The route pattern
-     * @param callable $handler The route callable
-     *
-     * @return RouteInterface
-     */
-    public function map($methods, $pattern, $handler);
-
-    /**
-     * Dispatch router for HTTP request
-     *
-     * @param  ServerRequestInterface $request The current HTTP request object
-     *
-     * @return array
-     *
-     * @link   https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php
-     */
-    public function dispatch(ServerRequestInterface $request);
-
-    /**
-     * Add a route group to the array
-     *
-     * @param string   $pattern The group pattern
-     * @param callable $callable A group callable
-     *
-     * @return RouteGroupInterface
-     */
-    public function pushGroup($pattern, $callable);
-
-    /**
-     * Removes the last route group from the array
-     *
-     * @return bool True if successful, else False
-     */
-    public function popGroup();
-
-    /**
-     * Get named route object
-     *
-     * @param string $name        Route name
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     *
-     * @throws RuntimeException   If named route does not exist
-     */
-    public function getNamedRoute($name);
-
-    /**
-     * @param $identifier
-     *
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function lookupRoute($identifier);
-
-    /**
-     * Build the path for a named route excluding the base path
-     *
-     * @param string $name        Route name
-     * @param array  $data        Named argument replacement data
-     * @param array  $queryParams Optional query string parameters
-     *
-     * @return string
-     *
-     * @throws RuntimeException         If named route does not exist
-     * @throws InvalidArgumentException If required data not provided
-     */
-    public function relativePathFor($name, array $data = [], array $queryParams = []);
-
-    /**
-     * Build the path for a named route including the base path
-     *
-     * @param string $name        Route name
-     * @param array  $data        Named argument replacement data
-     * @param array  $queryParams Optional query string parameters
-     *
-     * @return string
-     *
-     * @throws RuntimeException         If named route does not exist
-     * @throws InvalidArgumentException If required data not provided
-     */
-    public function pathFor($name, array $data = [], array $queryParams = []);
-}
diff --git a/vendor/slim/slim/Slim/MiddlewareAwareTrait.php b/vendor/slim/slim/Slim/MiddlewareAwareTrait.php
deleted file mode 100644
index 84bc6bb..0000000
--- a/vendor/slim/slim/Slim/MiddlewareAwareTrait.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use RuntimeException;
-use SplStack;
-use SplDoublyLinkedList;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use UnexpectedValueException;
-
-/**
- * Middleware
- *
- * This is an internal class that enables concentric middleware layers. This
- * class is an implementation detail and is used only inside of the Slim
- * application; it is not visible to—and should not be used by—end users.
- */
-trait MiddlewareAwareTrait
-{
-    /**
-     * Middleware call stack
-     *
-     * @var  \SplStack
-     * @link http://php.net/manual/class.splstack.php
-     */
-    protected $stack;
-
-    /**
-     * Middleware stack lock
-     *
-     * @var bool
-     */
-    protected $middlewareLock = false;
-
-    /**
-     * Add middleware
-     *
-     * This method prepends new middleware to the application middleware stack.
-     *
-     * @param callable $callable Any callable that accepts three arguments:
-     *                           1. A Request object
-     *                           2. A Response object
-     *                           3. A "next" middleware callable
-     * @return static
-     *
-     * @throws RuntimeException         If middleware is added while the stack is dequeuing
-     * @throws UnexpectedValueException If the middleware doesn't return a Psr\Http\Message\ResponseInterface
-     */
-    protected function addMiddleware(callable $callable)
-    {
-        if ($this->middlewareLock) {
-            throw new RuntimeException('Middleware can’t be added once the stack is dequeuing');
-        }
-
-        if (is_null($this->stack)) {
-            $this->seedMiddlewareStack();
-        }
-        $next = $this->stack->top();
-        $this->stack[] = function (ServerRequestInterface $req, ResponseInterface $res) use ($callable, $next) {
-            $result = call_user_func($callable, $req, $res, $next);
-            if ($result instanceof ResponseInterface === false) {
-                throw new UnexpectedValueException(
-                    'Middleware must return instance of \Psr\Http\Message\ResponseInterface'
-                );
-            }
-
-            return $result;
-        };
-
-        return $this;
-    }
-
-    /**
-     * Seed middleware stack with first callable
-     *
-     * @param callable $kernel The last item to run as middleware
-     *
-     * @throws RuntimeException if the stack is seeded more than once
-     */
-    protected function seedMiddlewareStack(callable $kernel = null)
-    {
-        if (!is_null($this->stack)) {
-            throw new RuntimeException('MiddlewareStack can only be seeded once.');
-        }
-        if ($kernel === null) {
-            $kernel = $this;
-        }
-        $this->stack = new SplStack;
-        $this->stack->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP);
-        $this->stack[] = $kernel;
-    }
-
-    /**
-     * Call middleware stack
-     *
-     * @param  ServerRequestInterface $req A request object
-     * @param  ResponseInterface      $res A response object
-     *
-     * @return ResponseInterface
-     */
-    public function callMiddlewareStack(ServerRequestInterface $req, ResponseInterface $res)
-    {
-        if (is_null($this->stack)) {
-            $this->seedMiddlewareStack();
-        }
-        /** @var callable $start */
-        $start = $this->stack->top();
-        $this->middlewareLock = true;
-        $resp = $start($req, $res);
-        $this->middlewareLock = false;
-        return $resp;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Routable.php b/vendor/slim/slim/Slim/Routable.php
deleted file mode 100644
index 4a6759f..0000000
--- a/vendor/slim/slim/Slim/Routable.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Interop\Container\ContainerInterface;
-
-/**
- * A routable, middleware-aware object
- *
- * @package Slim
- * @since   3.0.0
- */
-abstract class Routable
-{
-    use CallableResolverAwareTrait;
-    
-    /**
-     * Route callable
-     *
-     * @var callable
-     */
-    protected $callable;
-
-    /**
-     * Container
-     *
-     * @var ContainerInterface
-     */
-    protected $container;
-
-    /**
-     * Route middleware
-     *
-     * @var callable[]
-     */
-    protected $middleware = [];
-
-    /**
-     * Route pattern
-     *
-     * @var string
-     */
-    protected $pattern;
-
-    /**
-     * Get the middleware registered for the group
-     *
-     * @return callable[]
-     */
-    public function getMiddleware()
-    {
-        return $this->middleware;
-    }
-
-    /**
-     * Get the route pattern
-     *
-     * @return string
-     */
-    public function getPattern()
-    {
-        return $this->pattern;
-    }
-
-    /**
-     * Set container for use with resolveCallable
-     *
-     * @param ContainerInterface $container
-     *
-     * @return self
-     */
-    public function setContainer(ContainerInterface $container)
-    {
-        $this->container = $container;
-        return $this;
-    }
-
-    /**
-     * Prepend middleware to the middleware collection
-     *
-     * @param callable|string $callable The callback routine
-     *
-     * @return static
-     */
-    public function add($callable)
-    {
-        $this->middleware[] = new DeferredCallable($callable, $this->container);
-        return $this;
-    }
-    
-    /**
-     * Set the route pattern
-     *
-     * @set string
-     */
-    public function setPattern($newPattern)
-    {
-        $this->pattern = $newPattern;
-    }
-}
diff --git a/vendor/slim/slim/Slim/Route.php b/vendor/slim/slim/Slim/Route.php
deleted file mode 100644
index 4572441..0000000
--- a/vendor/slim/slim/Slim/Route.php
+++ /dev/null
@@ -1,357 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Exception;
-use InvalidArgumentException;
-use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Slim\Handlers\Strategies\RequestResponse;
-use Slim\Interfaces\InvocationStrategyInterface;
-use Slim\Interfaces\RouteInterface;
-
-/**
- * Route
- */
-class Route extends Routable implements RouteInterface
-{
-    use MiddlewareAwareTrait;
-
-    /**
-     * HTTP methods supported by this route
-     *
-     * @var string[]
-     */
-    protected $methods = [];
-
-    /**
-     * Route identifier
-     *
-     * @var string
-     */
-    protected $identifier;
-
-    /**
-     * Route name
-     *
-     * @var null|string
-     */
-    protected $name;
-
-    /**
-     * Parent route groups
-     *
-     * @var RouteGroup[]
-     */
-    protected $groups;
-
-    private $finalized = false;
-
-    /**
-     * Output buffering mode
-     *
-     * One of: false, 'prepend' or 'append'
-     *
-     * @var boolean|string
-     */
-    protected $outputBuffering = 'append';
-
-    /**
-     * Route parameters
-     *
-     * @var array
-     */
-    protected $arguments = [];
-
-    /**
-     * Create new route
-     *
-     * @param string|string[]   $methods The route HTTP methods
-     * @param string            $pattern The route pattern
-     * @param callable          $callable The route callable
-     * @param RouteGroup[]      $groups The parent route groups
-     * @param int               $identifier The route identifier
-     */
-    public function __construct($methods, $pattern, $callable, $groups = [], $identifier = 0)
-    {
-        $this->methods  = is_string($methods) ? [$methods] : $methods;
-        $this->pattern  = $pattern;
-        $this->callable = $callable;
-        $this->groups   = $groups;
-        $this->identifier = 'route' . $identifier;
-    }
-
-    /**
-     * Finalize the route in preparation for dispatching
-     */
-    public function finalize()
-    {
-        if ($this->finalized) {
-            return;
-        }
-
-        $groupMiddleware = [];
-        foreach ($this->getGroups() as $group) {
-            $groupMiddleware = array_merge($group->getMiddleware(), $groupMiddleware);
-        }
-
-        $this->middleware = array_merge($this->middleware, $groupMiddleware);
-
-        foreach ($this->getMiddleware() as $middleware) {
-            $this->addMiddleware($middleware);
-        }
-
-        $this->finalized = true;
-    }
-
-    /**
-     * Get route callable
-     *
-     * @return callable
-     */
-    public function getCallable()
-    {
-        return $this->callable;
-    }
-
-    /**
-     * Get route methods
-     *
-     * @return string[]
-     */
-    public function getMethods()
-    {
-        return $this->methods;
-    }
-
-    /**
-     * Get parent route groups
-     *
-     * @return RouteGroup[]
-     */
-    public function getGroups()
-    {
-        return $this->groups;
-    }
-
-    /**
-     * Get route name
-     *
-     * @return null|string
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Get route identifier
-     *
-     * @return string
-     */
-    public function getIdentifier()
-    {
-        return $this->identifier;
-    }
-
-    /**
-     * Get output buffering mode
-     *
-     * @return boolean|string
-     */
-    public function getOutputBuffering()
-    {
-        return $this->outputBuffering;
-    }
-
-    /**
-     * Set output buffering mode
-     *
-     * One of: false, 'prepend' or 'append'
-     *
-     * @param boolean|string $mode
-     *
-     * @throws InvalidArgumentException If an unknown buffering mode is specified
-     */
-    public function setOutputBuffering($mode)
-    {
-        if (!in_array($mode, [false, 'prepend', 'append'], true)) {
-            throw new InvalidArgumentException('Unknown output buffering mode');
-        }
-        $this->outputBuffering = $mode;
-    }
-
-    /**
-     * Set route name
-     *
-     * @param string $name
-     *
-     * @return self
-     *
-     * @throws InvalidArgumentException if the route name is not a string
-     */
-    public function setName($name)
-    {
-        if (!is_string($name)) {
-            throw new InvalidArgumentException('Route name must be a string');
-        }
-        $this->name = $name;
-        return $this;
-    }
-
-    /**
-     * Set a route argument
-     *
-     * @param string $name
-     * @param string $value
-     *
-     * @return self
-     */
-    public function setArgument($name, $value)
-    {
-        $this->arguments[$name] = $value;
-        return $this;
-    }
-
-    /**
-     * Replace route arguments
-     *
-     * @param array $arguments
-     *
-     * @return self
-     */
-    public function setArguments(array $arguments)
-    {
-        $this->arguments = $arguments;
-        return $this;
-    }
-
-    /**
-     * Retrieve route arguments
-     *
-     * @return array
-     */
-    public function getArguments()
-    {
-        return $this->arguments;
-    }
-
-    /**
-     * Retrieve a specific route argument
-     *
-     * @param string $name
-     * @param mixed $default
-     *
-     * @return mixed
-     */
-    public function getArgument($name, $default = null)
-    {
-        if (array_key_exists($name, $this->arguments)) {
-            return $this->arguments[$name];
-        }
-        return $default;
-    }
-
-    /********************************************************************************
-     * Route Runner
-     *******************************************************************************/
-
-    /**
-     * Prepare the route for use
-     *
-     * @param ServerRequestInterface $request
-     * @param array $arguments
-     */
-    public function prepare(ServerRequestInterface $request, array $arguments)
-    {
-        // Add the arguments
-        foreach ($arguments as $k => $v) {
-            $this->setArgument($k, $v);
-        }
-    }
-
-    /**
-     * Run route
-     *
-     * This method traverses the middleware stack, including the route's callable
-     * and captures the resultant HTTP response object. It then sends the response
-     * back to the Application.
-     *
-     * @param ServerRequestInterface $request
-     * @param ResponseInterface      $response
-     *
-     * @return ResponseInterface
-     */
-    public function run(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        // Finalise route now that we are about to run it
-        $this->finalize();
-
-        // Traverse middleware stack and fetch updated response
-        return $this->callMiddlewareStack($request, $response);
-    }
-
-    /**
-     * Dispatch route callable against current Request and Response objects
-     *
-     * This method invokes the route object's callable. If middleware is
-     * registered for the route, each callable middleware is invoked in
-     * the order specified.
-     *
-     * @param ServerRequestInterface $request  The current Request object
-     * @param ResponseInterface      $response The current Response object
-     * @return \Psr\Http\Message\ResponseInterface
-     * @throws \Exception  if the route callable throws an exception
-     */
-    public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
-    {
-        $this->callable = $this->resolveCallable($this->callable);
-
-        /** @var InvocationStrategyInterface $handler */
-        $handler = isset($this->container) ? $this->container->get('foundHandler') : new RequestResponse();
-
-        // invoke route callable
-        if ($this->outputBuffering === false) {
-            $newResponse = $handler($this->callable, $request, $response, $this->arguments);
-        } else {
-            try {
-                ob_start();
-                $newResponse = $handler($this->callable, $request, $response, $this->arguments);
-                $output = ob_get_clean();
-            } catch (Exception $e) {
-                ob_end_clean();
-                throw $e;
-            }
-        }
-
-        if ($newResponse instanceof ResponseInterface) {
-            // if route callback returns a ResponseInterface, then use it
-            $response = $newResponse;
-        } elseif (is_string($newResponse)) {
-            // if route callback returns a string, then append it to the response
-            if ($response->getBody()->isWritable()) {
-                $response->getBody()->write($newResponse);
-            }
-        }
-
-        if (!empty($output) && $response->getBody()->isWritable()) {
-            if ($this->outputBuffering === 'prepend') {
-                // prepend output buffer content
-                $body = new Http\Body(fopen('php://temp', 'r+'));
-                $body->write($output . $response->getBody());
-                $response = $response->withBody($body);
-            } elseif ($this->outputBuffering === 'append') {
-                // append output buffer content
-                $response->getBody()->write($output);
-            }
-        }
-
-        return $response;
-    }
-}
diff --git a/vendor/slim/slim/Slim/RouteGroup.php b/vendor/slim/slim/Slim/RouteGroup.php
deleted file mode 100644
index a0cdf4d..0000000
--- a/vendor/slim/slim/Slim/RouteGroup.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use Closure;
-use Slim\Interfaces\RouteGroupInterface;
-
-/**
- * A collector for Routable objects with a common middleware stack
- *
- * @package Slim
- */
-class RouteGroup extends Routable implements RouteGroupInterface
-{
-    /**
-     * Create a new RouteGroup
-     *
-     * @param string   $pattern  The pattern prefix for the group
-     * @param callable $callable The group callable
-     */
-    public function __construct($pattern, $callable)
-    {
-        $this->pattern = $pattern;
-        $this->callable = $callable;
-    }
-
-    /**
-     * Invoke the group to register any Routable objects within it.
-     *
-     * @param App $app The App to bind the callable to.
-     */
-    public function __invoke(App $app = null)
-    {
-        $callable = $this->resolveCallable($this->callable);
-        if ($callable instanceof Closure && $app !== null) {
-            $callable = $callable->bindTo($app);
-        }
-
-        $callable();
-    }
-}
diff --git a/vendor/slim/slim/Slim/Router.php b/vendor/slim/slim/Slim/Router.php
deleted file mode 100644
index 5d14fc9..0000000
--- a/vendor/slim/slim/Slim/Router.php
+++ /dev/null
@@ -1,434 +0,0 @@
-<?php
-/**
- * Slim Framework (http://slimframework.com)
- *
- * @link      https://github.com/slimphp/Slim
- * @copyright Copyright (c) 2011-2016 Josh Lockhart
- * @license   https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
- */
-namespace Slim;
-
-use FastRoute\Dispatcher;
-use InvalidArgumentException;
-use RuntimeException;
-use Psr\Http\Message\ServerRequestInterface;
-use FastRoute\RouteCollector;
-use FastRoute\RouteParser;
-use FastRoute\RouteParser\Std as StdParser;
-use Slim\Interfaces\RouteGroupInterface;
-use Slim\Interfaces\RouterInterface;
-use Slim\Interfaces\RouteInterface;
-
-/**
- * Router
- *
- * This class organizes Slim application route objects. It is responsible
- * for registering route objects, assigning names to route objects,
- * finding routes that match the current HTTP request, and creating
- * URLs for a named route.
- */
-class Router implements RouterInterface
-{
-    /**
-     * Parser
-     *
-     * @var \FastRoute\RouteParser
-     */
-    protected $routeParser;
-
-    /**
-     * Base path used in pathFor()
-     *
-     * @var string
-     */
-    protected $basePath = '';
-
-    /**
-     * Path to fast route cache file. Set to false to disable route caching
-     *
-     * @var string|False
-     */
-    protected $cacheFile = false;
-
-    /**
-     * Routes
-     *
-     * @var Route[]
-     */
-    protected $routes = [];
-
-    /**
-     * Route counter incrementer
-     * @var int
-     */
-    protected $routeCounter = 0;
-
-    /**
-     * Route groups
-     *
-     * @var RouteGroup[]
-     */
-    protected $routeGroups = [];
-
-    /**
-     * @var \FastRoute\Dispatcher
-     */
-    protected $dispatcher;
-
-    /**
-     * Create new router
-     *
-     * @param RouteParser   $parser
-     */
-    public function __construct(RouteParser $parser = null)
-    {
-        $this->routeParser = $parser ?: new StdParser;
-    }
-
-    /**
-     * Set the base path used in pathFor()
-     *
-     * @param string $basePath
-     *
-     * @return self
-     */
-    public function setBasePath($basePath)
-    {
-        if (!is_string($basePath)) {
-            throw new InvalidArgumentException('Router basePath must be a string');
-        }
-
-        $this->basePath = $basePath;
-
-        return $this;
-    }
-
-    /**
-     * Set path to fast route cache file. If this is false then route caching is disabled.
-     *
-     * @param string|false $cacheFile
-     *
-     * @return self
-     */
-    public function setCacheFile($cacheFile)
-    {
-        if (!is_string($cacheFile) && $cacheFile !== false) {
-            throw new InvalidArgumentException('Router cacheFile must be a string or false');
-        }
-
-        $this->cacheFile = $cacheFile;
-
-        if ($cacheFile !== false && !is_writable(dirname($cacheFile))) {
-            throw new RuntimeException('Router cacheFile directory must be writable');
-        }
-
-
-        return $this;
-    }
-
-    /**
-     * Add route
-     *
-     * @param  string[] $methods Array of HTTP methods
-     * @param  string   $pattern The route pattern
-     * @param  callable $handler The route callable
-     *
-     * @return RouteInterface
-     *
-     * @throws InvalidArgumentException if the route pattern isn't a string
-     */
-    public function map($methods, $pattern, $handler)
-    {
-        if (!is_string($pattern)) {
-            throw new InvalidArgumentException('Route pattern must be a string');
-        }
-
-        // Prepend parent group pattern(s)
-        if ($this->routeGroups) {
-            $pattern = $this->processGroups() . $pattern;
-        }
-
-        // According to RFC methods are defined in uppercase (See RFC 7231)
-        $methods = array_map("strtoupper", $methods);
-
-        // Add route
-        $route = $this->createRoute($methods, $pattern, $handler);
-        $this->routes[$route->getIdentifier()] = $route;
-        $this->routeCounter++;
-
-        return $route;
-    }
-
-    /**
-     * Dispatch router for HTTP request
-     *
-     * @param  ServerRequestInterface $request The current HTTP request object
-     *
-     * @return array
-     *
-     * @link   https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php
-     */
-    public function dispatch(ServerRequestInterface $request)
-    {
-        $uri = '/' . ltrim($request->getUri()->getPath(), '/');
-
-        return $this->createDispatcher()->dispatch(
-            $request->getMethod(),
-            $uri
-        );
-    }
-
-    /**
-     * Create a new Route object
-     *
-     * @param  string[] $methods Array of HTTP methods
-     * @param  string   $pattern The route pattern
-     * @param  callable $handler The route callable
-     *
-     * @return Slim\Interfaces\RouteInterface
-     */
-    protected function createRoute($methods, $pattern, $callable)
-    {
-        return new Route($methods, $pattern, $callable, $this->routeGroups, $this->routeCounter);
-    }
-
-    /**
-     * @return \FastRoute\Dispatcher
-     */
-    protected function createDispatcher()
-    {
-        if ($this->dispatcher) {
-            return $this->dispatcher;
-        }
-
-        $routeDefinitionCallback = function (RouteCollector $r) {
-            foreach ($this->getRoutes() as $route) {
-                $r->addRoute($route->getMethods(), $route->getPattern(), $route->getIdentifier());
-            }
-        };
-
-        if ($this->cacheFile) {
-            $this->dispatcher = \FastRoute\cachedDispatcher($routeDefinitionCallback, [
-                'routeParser' => $this->routeParser,
-                'cacheFile' => $this->cacheFile,
-            ]);
-        } else {
-            $this->dispatcher = \FastRoute\simpleDispatcher($routeDefinitionCallback, [
-                'routeParser' => $this->routeParser,
-            ]);
-        }
-
-        return $this->dispatcher;
-    }
-
-    /**
-     * @param \FastRoute\Dispatcher $dispatcher
-     */
-    public function setDispatcher(Dispatcher $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * Get route objects
-     *
-     * @return Route[]
-     */
-    public function getRoutes()
-    {
-        return $this->routes;
-    }
-
-    /**
-     * Get named route object
-     *
-     * @param string $name        Route name
-     *
-     * @return Route
-     *
-     * @throws RuntimeException   If named route does not exist
-     */
-    public function getNamedRoute($name)
-    {
-        foreach ($this->routes as $route) {
-            if ($name == $route->getName()) {
-                return $route;
-            }
-        }
-        throw new RuntimeException('Named route does not exist for name: ' . $name);
-    }
-
-    /**
-     * Remove named route
-     *
-     * @param string $name        Route name
-     *
-     * @throws RuntimeException   If named route does not exist
-     */
-    public function removeNamedRoute($name)
-    {
-        $route = $this->getNamedRoute($name);
-
-        // no exception, route exists, now remove by id
-        unset($this->routes[$route->getIdentifier()]);
-    }
-
-    /**
-     * Process route groups
-     *
-     * @return string A group pattern to prefix routes with
-     */
-    protected function processGroups()
-    {
-        $pattern = "";
-        foreach ($this->routeGroups as $group) {
-            $pattern .= $group->getPattern();
-        }
-        return $pattern;
-    }
-
-    /**
-     * Add a route group to the array
-     *
-     * @param string   $pattern
-     * @param callable $callable
-     *
-     * @return RouteGroupInterface
-     */
-    public function pushGroup($pattern, $callable)
-    {
-        $group = new RouteGroup($pattern, $callable);
-        array_push($this->routeGroups, $group);
-        return $group;
-    }
-
-    /**
-     * Removes the last route group from the array
-     *
-     * @return RouteGroup|bool The RouteGroup if successful, else False
-     */
-    public function popGroup()
-    {
-        $group = array_pop($this->routeGroups);
-        return $group instanceof RouteGroup ? $group : false;
-    }
-
-    /**
-     * @param $identifier
-     * @return \Slim\Interfaces\RouteInterface
-     */
-    public function lookupRoute($identifier)
-    {
-        if (!isset($this->routes[$identifier])) {
-            throw new RuntimeException('Route not found, looks like your route cache is stale.');
-        }
-        return $this->routes[$identifier];
-    }
-
-    /**
-     * Build the path for a named route excluding the base path
-     *
-     * @param string $name        Route name
-     * @param array  $data        Named argument replacement data
-     * @param array  $queryParams Optional query string parameters
-     *
-     * @return string
-     *
-     * @throws RuntimeException         If named route does not exist
-     * @throws InvalidArgumentException If required data not provided
-     */
-    public function relativePathFor($name, array $data = [], array $queryParams = [])
-    {
-        $route = $this->getNamedRoute($name);
-        $pattern = $route->getPattern();
-
-        $routeDatas = $this->routeParser->parse($pattern);
-        // $routeDatas is an array of all possible routes that can be made. There is
-        // one routedata for each optional parameter plus one for no optional parameters.
-        //
-        // The most specific is last, so we look for that first.
-        $routeDatas = array_reverse($routeDatas);
-
-        $segments = [];
-        foreach ($routeDatas as $routeData) {
-            foreach ($routeData as $item) {
-                if (is_string($item)) {
-                    // this segment is a static string
-                    $segments[] = $item;
-                    continue;
-                }
-
-                // This segment has a parameter: first element is the name
-                if (!array_key_exists($item[0], $data)) {
-                    // we don't have a data element for this segment: cancel
-                    // testing this routeData item, so that we can try a less
-                    // specific routeData item.
-                    $segments = [];
-                    $segmentName = $item[0];
-                    break;
-                }
-                $segments[] = $data[$item[0]];
-            }
-            if (!empty($segments)) {
-                // we found all the parameters for this route data, no need to check
-                // less specific ones
-                break;
-            }
-        }
-
-        if (empty($segments)) {
-            throw new InvalidArgumentException('Missing data for URL segment: ' . $segmentName);
-        }
-        $url = implode('', $segments);
-
-        if ($queryParams) {
-            $url .= '?' . http_build_query($queryParams);
-        }
-
-        return $url;
-    }
-
-
-    /**
-     * Build the path for a named route including the base path
-     *
-     * @param string $name        Route name
-     * @param array  $data        Named argument replacement data
-     * @param array  $queryParams Optional query string parameters
-     *
-     * @return string
-     *
-     * @throws RuntimeException         If named route does not exist
-     * @throws InvalidArgumentException If required data not provided
-     */
-    public function pathFor($name, array $data = [], array $queryParams = [])
-    {
-        $url = $this->relativePathFor($name, $data, $queryParams);
-
-        if ($this->basePath) {
-            $url = $this->basePath . $url;
-        }
-
-        return $url;
-    }
-
-    /**
-     * Build the path for a named route.
-     *
-     * This method is deprecated. Use pathFor() from now on.
-     *
-     * @param string $name        Route name
-     * @param array  $data        Named argument replacement data
-     * @param array  $queryParams Optional query string parameters
-     *
-     * @return string
-     *
-     * @throws RuntimeException         If named route does not exist
-     * @throws InvalidArgumentException If required data not provided
-     */
-    public function urlFor($name, array $data = [], array $queryParams = [])
-    {
-        trigger_error('urlFor() is deprecated. Use pathFor() instead.', E_USER_DEPRECATED);
-        return $this->pathFor($name, $data, $queryParams);
-    }
-}
diff --git a/vendor/slim/slim/composer.json b/vendor/slim/slim/composer.json
deleted file mode 100644
index 808eb9d..0000000
--- a/vendor/slim/slim/composer.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-    "name": "slim/slim",
-    "type": "library",
-    "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
-    "keywords": ["framework","micro","api","router"],
-    "homepage": "http://slimframework.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Josh Lockhart",
-            "email": "hello@joshlockhart.com",
-            "homepage": "https://joshlockhart.com"
-        },
-        {
-            "name": "Andrew Smith",
-            "email": "a.smith@silentworks.co.uk",
-            "homepage": "http://silentworks.co.uk"
-        },
-        {
-            "name": "Rob Allen",
-            "email": "rob@akrabat.com",
-            "homepage": "http://akrabat.com"
-        },
-        {
-            "name": "Gabriel Manricks",
-            "email": "gmanricks@me.com",
-            "homepage": "http://gabrielmanricks.com"
-        }
-    ],
-    "require": {
-        "php": ">=5.5.0",
-        "pimple/pimple": "^3.0",
-        "psr/http-message": "^1.0",
-        "nikic/fast-route": "^1.0",
-        "container-interop/container-interop": "^1.1"
-    },
-    "require-dev": {
-        "squizlabs/php_codesniffer": "^2.5",
-        "phpunit/phpunit": "^4.0"
-    },
-    "provide": {
-        "psr/http-message-implementation": "1.0"
-    },
-    "autoload": {
-        "psr-4": {
-            "Slim\\": "Slim"
-        }
-    },
-    "scripts": {
-        "test": [
-            "@phpunit",
-            "@phpcs"
-        ],
-        "phpunit": "php vendor/bin/phpunit",
-        "phpcs": "php vendor/bin/phpcs"
-    }
-}
diff --git a/vendor/slim/slim/example/.htaccess b/vendor/slim/slim/example/.htaccess
deleted file mode 100644
index 0784bd2..0000000
--- a/vendor/slim/slim/example/.htaccess
+++ /dev/null
@@ -1,12 +0,0 @@
-# Note: see https://httpd.apache.org/docs/current/howto/htaccess.html:
-#
-# "You should avoid using .htaccess files completely if you have access to
-# httpd main server config file. Using .htaccess files slows down your Apache
-# http server. Any directive that you can include in a .htaccess file is
-# better set in a Directory block, as it will have the same effect with
-# better performance."
-
-RewriteEngine On
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
-RewriteRule ^ index.php [QSA,L]
diff --git a/vendor/slim/slim/example/README.md b/vendor/slim/slim/example/README.md
deleted file mode 100644
index e4fb359..0000000
--- a/vendor/slim/slim/example/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Slim example
-
-1. Install composer
-
-      ```text
-      $ cd Slim
-      $ composer install
-      ```
-
-2. Run php server
-
-      ```text
-      $ cd Slim
-      $ php -S localhost:8888 -t example example/index.php
-      ```
-
-3. Open browser
-
-      Open http://localhost:8888 in your browser and you will see 'Welcome to Slim!'
diff --git a/vendor/slim/slim/example/index.php b/vendor/slim/slim/example/index.php
deleted file mode 100644
index ef895f8..0000000
--- a/vendor/slim/slim/example/index.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * Step 1: Require the Slim Framework using Composer's autoloader
- *
- * If you are not using Composer, you need to load Slim Framework with your own
- * PSR-4 autoloader.
- */
-require 'vendor/autoload.php';
-
-/**
- * Step 2: Instantiate a Slim application
- *
- * This example instantiates a Slim application using
- * its default settings. However, you will usually configure
- * your Slim application now by passing an associative array
- * of setting names and values into the application constructor.
- */
-$app = new Slim\App();
-
-/**
- * Step 3: Define the Slim application routes
- *
- * Here we define several Slim application routes that respond
- * to appropriate HTTP request methods. In this example, the second
- * argument for `Slim::get`, `Slim::post`, `Slim::put`, `Slim::patch`, and `Slim::delete`
- * is an anonymous function.
- */
-$app->get('/', function ($request, $response, $args) {
-    $response->write("Welcome to Slim!");
-    return $response;
-});
-
-$app->get('/hello[/{name}]', function ($request, $response, $args) {
-    $response->write("Hello, " . $args['name']);
-    return $response;
-})->setArgument('name', 'World!');
-
-/**
- * Step 4: Run the Slim application
- *
- * This method should be called last. This executes the Slim application
- * and returns the HTTP response to the HTTP client.
- */
-$app->run();
-- 
GitLab