-
{% endblock %}
diff --git a/src/Product/views/admin/recherches/index.twig b/src/Product/views/admin/recherches/index.twig
new file mode 100644
index 0000000..9deeed6
--- /dev/null
+++ b/src/Product/views/admin/recherches/index.twig
@@ -0,0 +1,277 @@
+
+{% extends 'layout.twig' %}
+{% block title "Ğ1-Marché - Recherches" %}
+
+{% block body %}
+
+
+
+
+
+
+
+ {% if antenne_name == 'Paris' %}
+
+ {% endif %}
+
+
+
+
+
+
Tous les mois, la Toile Francilienne organise des rencontres entre utilisateurs de la Monnaie Libre.
+ C'est l'occasion rêvée d'échanger avec d'autres membres !
+ {{ annonce_ligne1 }}
+ {{ annonce_ligne2 }}
+ {{ annonce_ligne3 }}
+
+
Consultez, rajoutez, modifiez vos propositions dans la liste du mois.
+ Mettez bien le pseudo, la clé publique, le bien ou service, et le prix en june.
+
+
+ {% if current_user() %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
diff --git a/tests/Framework/RouterTest.php b/tests/Framework/RouterTest.php
index b2308fe..031d70a 100644
--- a/tests/Framework/RouterTest.php
+++ b/tests/Framework/RouterTest.php
@@ -37,7 +37,7 @@ class RouterTest extends TestCase {
public function testGetMethodWithParameters()
{
- $request = new ServerRequest('GET', '/gmarche/mon-slug-8');
+ $request = new ServerRequest('GET', '/gmarche/ile-de-france/paris');
$this->router->get('/gmarche', function () { return 'azezea'; }, 'regions');
$this->router->get('/gmarche/{slug:[a-z0-9\-]+}-{id:\d+}', function () { return 'hello'; }, 'region.show');
$route = $this->router->match($request);
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 619a320..7c468f3 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -9,178 +9,188 @@ return array(
'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
- 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
- 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
- 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
- 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
- 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
- 'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
- 'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
- 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
- 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
- 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
- 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
- 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
- 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
- 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
- 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
- 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
- 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
- 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
- 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
- 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
- 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
- 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
- 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
- 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
- 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
- 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
- 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
- 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Generator.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invokable.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
- 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
- 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
- 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
- 'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
- 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
- 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
- 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
- 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
- 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
- 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
- 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
- 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
- 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
- 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
- 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
- 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
- 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
- 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
- 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
- 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
- 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
- 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
- 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
- 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
- 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
- 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
- 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
- 'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
- 'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
- 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
- 'PHPUnit\\Util\\Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
- 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
- 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
- 'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
- 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
- 'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
- 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
- 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
- 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
- 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
- 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
- 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
- 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
- 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
- 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
- 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
- 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockObject.php',
+ 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
+ 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
+ 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
+ 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
+ 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
+ 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
+ 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
+ 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
+ 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
+ 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
+ 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
+ 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
+ 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit_Framework_Constraint_DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
+ 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit_Framework_Constraint_IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit_Framework_Constraint_IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
+ 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
+ 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
+ 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
+ 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
+ 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
+ 'PHPUnit_Framework_CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
+ 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit_Framework_MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
+ 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit_Framework_WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
+ 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
+ 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
+ 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
+ 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit_Util_ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
+ 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
+ 'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
+ 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
+ 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
+ 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
+ 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
+ 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_XML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
+ 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
+ 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
@@ -381,72 +391,6 @@ return array(
'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
- 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
- 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
- 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
- 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
- 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
- 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
- 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
- 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
- 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
- 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
- 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
- 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
- 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
- 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
- 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
- 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
- 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
- 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
- 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
- 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
- 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
- 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
- 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
- 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
- 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
- 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
- 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
- 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
- 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
- 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
- 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
- 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
- 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
- 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
- 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
- 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
- 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
- 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
- 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
- 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
- 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
- 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
- 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
- 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
- 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
- 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
- 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/AbstractVersionConstraint.php',
- 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/AndVersionConstraintGroup.php',
- 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/AnyVersionConstraint.php',
- 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/ExactVersionConstraint.php',
- 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/Exception.php',
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
- 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/InvalidVersionException.php',
- 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/OrVersionConstraintGroup.php',
- 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
- 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
- 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/VersionConstraint.php',
- 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
- 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
- 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
@@ -471,7 +415,6 @@ return array(
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
@@ -480,14 +423,12 @@ return array(
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
- 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
@@ -507,45 +448,27 @@ return array(
'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
- 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
+ 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
- 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
- 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
- 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
- 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
- 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
- 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
- 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
- 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
- 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
- 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
- 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index c048f8a..7953afb 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -11,7 +11,6 @@ return array(
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
- 'aaf5b53a99b4de51dadc23016def253f' => $vendorDir . '/webimpress/http-middleware-compatibility/autoload/http-middleware.php',
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'253c157292f75eb38082b5acb06f3f01' => $vendorDir . '/nikic/fast-route/src/functions.php',
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 6be4661..ddf07bb 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -7,11 +7,9 @@ $baseDir = dirname($vendorDir);
return array(
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
- 'Zend\\Stdlib\\' => array($vendorDir . '/zendframework/zend-stdlib/src'),
'Zend\\Expressive\\Router\\' => array($vendorDir . '/zendframework/zend-expressive-fastroute/src', $vendorDir . '/zendframework/zend-expressive-router/src'),
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
- 'Webimpress\\ComposerExtraDependency\\' => array($vendorDir . '/webimpress/composer-extra-dependency/src'),
'Twig\\' => array($vendorDir . '/twig/twig/src'),
'Tests\\' => array($baseDir . '/tests'),
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index eeac18f..05a93e8 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -12,7 +12,6 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
- 'aaf5b53a99b4de51dadc23016def253f' => __DIR__ . '/..' . '/webimpress/http-middleware-compatibility/autoload/http-middleware.php',
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'253c157292f75eb38082b5acb06f3f01' => __DIR__ . '/..' . '/nikic/fast-route/src/functions.php',
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
@@ -29,14 +28,12 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
),
'Z' =>
array (
- 'Zend\\Stdlib\\' => 12,
'Zend\\Expressive\\Router\\' => 23,
),
'W' =>
array (
'Whoops\\' => 7,
'Webmozart\\Assert\\' => 17,
- 'Webimpress\\ComposerExtraDependency\\' => 35,
),
'T' =>
array (
@@ -118,10 +115,6 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
),
- 'Zend\\Stdlib\\' =>
- array (
- 0 => __DIR__ . '/..' . '/zendframework/zend-stdlib/src',
- ),
'Zend\\Expressive\\Router\\' =>
array (
0 => __DIR__ . '/..' . '/zendframework/zend-expressive-fastroute/src',
@@ -135,10 +128,6 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
- 'Webimpress\\ComposerExtraDependency\\' =>
- array (
- 0 => __DIR__ . '/..' . '/webimpress/composer-extra-dependency/src',
- ),
'Twig\\' =>
array (
0 => __DIR__ . '/..' . '/twig/twig/src',
@@ -314,178 +303,188 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
- 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
- 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
- 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
- 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
- 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
- 'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
- 'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
- 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
- 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
- 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
- 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
- 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
- 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
- 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
- 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
- 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
- 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
- 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
- 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
- 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
- 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
- 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
- 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
- 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
- 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
- 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
- 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
- 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
- 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Generator.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invokable.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
- 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
- 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
- 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
- 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
- 'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
- 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
- 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
- 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
- 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
- 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
- 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
- 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
- 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
- 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
- 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
- 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
- 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
- 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
- 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
- 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
- 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
- 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
- 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
- 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
- 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
- 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
- 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
- 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
- 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
- 'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
- 'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
- 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
- 'PHPUnit\\Util\\Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
- 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
- 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
- 'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
- 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
- 'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
- 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
- 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
- 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
- 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
- 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
- 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
- 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
- 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
- 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
- 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
- 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockObject.php',
+ 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
+ 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
+ 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
+ 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
+ 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
+ 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
+ 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
+ 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
+ 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
+ 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php',
+ 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php',
+ 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php',
+ 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit_Framework_Constraint_DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
+ 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit_Framework_Constraint_IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit_Framework_Constraint_IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit_Framework_Constraint_IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit_Framework_Constraint_IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit_Framework_Constraint_IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
+ 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
+ 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
+ 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
+ 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
+ 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
+ 'PHPUnit_Framework_CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php',
+ 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit_Framework_MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
+ 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit_Framework_WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php',
+ 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
+ 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
+ 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php',
+ 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit_Util_ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php',
+ 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php',
+ 'PHPUnit_Util_Log_TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php',
+ 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php',
+ 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php',
+ 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php',
+ 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php',
+ 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
+ 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
+ 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
@@ -686,72 +685,6 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
- 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
- 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
- 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
- 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
- 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
- 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
- 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
- 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
- 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
- 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
- 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
- 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
- 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
- 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
- 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
- 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
- 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
- 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
- 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
- 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
- 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
- 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
- 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
- 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
- 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
- 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
- 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
- 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
- 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
- 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
- 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
- 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
- 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
- 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
- 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
- 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
- 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
- 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
- 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
- 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
- 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
- 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
- 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
- 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
- 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
- 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
- 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AbstractVersionConstraint.php',
- 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/AndVersionConstraintGroup.php',
- 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AnyVersionConstraint.php',
- 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/ExactVersionConstraint.php',
- 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/Exception.php',
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
- 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/InvalidVersionException.php',
- 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/OrVersionConstraintGroup.php',
- 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
- 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
- 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraint.php',
- 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
- 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
- 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
@@ -776,7 +709,6 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
@@ -785,14 +717,12 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
- 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
@@ -812,47 +742,29 @@ class ComposerStaticInit9f5dfa25090318439fa5089515ea0095
'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
- 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
+ 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
- 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
- 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php',
'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
- 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php',
'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
- 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
- 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
- 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
- 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
- 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
- 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
- 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
- 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
);
public static function getInitializer(ClassLoader $loader)
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index f692f80..64d6171 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1073,112 +1073,6 @@
"random"
]
},
- {
- "name": "phar-io/manifest",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^1.0.1",
- "php": "^5.6 || ^7.0"
- },
- "time": "2017-03-05T18:14:27+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "role": "Developer",
- "email": "arne@blankerts.de"
- },
- {
- "name": "Sebastian Heuer",
- "role": "Developer",
- "email": "sebastian@phpeople.de"
- },
- {
- "name": "Sebastian Bergmann",
- "role": "Developer",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)"
- },
- {
- "name": "phar-io/version",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "time": "2017-03-05T17:38:23+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "role": "Developer",
- "email": "arne@blankerts.de"
- },
- {
- "name": "Sebastian Heuer",
- "role": "Developer",
- "email": "sebastian@phpeople.de"
- },
- {
- "name": "Sebastian Bergmann",
- "role": "Developer",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Library for handling version information and constraints"
- },
{
"name": "php-di/invoker",
"version": "1.3.3",
@@ -1291,17 +1185,17 @@
},
{
"name": "php-di/phpdoc-reader",
- "version": "2.1.0",
- "version_normalized": "2.1.0.0",
+ "version": "2.1.1",
+ "version_normalized": "2.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PhpDocReader.git",
- "reference": "7d0de60b9341933c8afd172a6255cd7557601e0e"
+ "reference": "15678f7451c020226807f520efb867ad26fbbfcf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/7d0de60b9341933c8afd172a6255cd7557601e0e",
- "reference": "7d0de60b9341933c8afd172a6255cd7557601e0e",
+ "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/15678f7451c020226807f520efb867ad26fbbfcf",
+ "reference": "15678f7451c020226807f520efb867ad26fbbfcf",
"shasum": ""
},
"require": {
@@ -1310,7 +1204,7 @@
"require-dev": {
"phpunit/phpunit": "~4.6"
},
- "time": "2018-02-18T17:39:01+00:00",
+ "time": "2019-09-26T11:24:58+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1330,38 +1224,36 @@
},
{
"name": "phpdocumentor/reflection-common",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
+ "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": ">=7.1"
},
"require-dev": {
- "phpunit/phpunit": "^4.6"
+ "phpunit/phpunit": "~6"
},
- "time": "2017-09-11T18:02:19+00:00",
+ "time": "2018-08-07T13:53:10+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src"
- ]
+ "phpDocumentor\\Reflection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1386,31 +1278,31 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "4.3.1",
- "version_normalized": "4.3.1.0",
+ "version": "4.3.2",
+ "version_normalized": "4.3.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
+ "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
+ "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
"shasum": ""
},
"require": {
"php": "^7.0",
- "phpdocumentor/reflection-common": "^1.0.0",
- "phpdocumentor/type-resolver": "^0.4.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
- "doctrine/instantiator": "~1.0.5",
+ "doctrine/instantiator": "^1.0.5",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.4"
},
- "time": "2019-04-30T17:48:53+00:00",
+ "time": "2019-09-12T14:27:41+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1439,40 +1331,39 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.4.0",
- "version_normalized": "0.4.0.0",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+ "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"shasum": ""
},
"require": {
- "php": "^5.5 || ^7.0",
- "phpdocumentor/reflection-common": "^1.0"
+ "php": "^7.1",
+ "phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^5.2||^4.8.24"
+ "ext-tokenizer": "^7.1",
+ "mockery/mockery": "~1",
+ "phpunit/phpunit": "^7.0"
},
- "time": "2017-07-14T14:27:02+00:00",
+ "time": "2019-08-22T18:11:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
+ "phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1484,27 +1375,28 @@
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
}
- ]
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names"
},
{
"name": "phpspec/prophecy",
- "version": "1.8.1",
- "version_normalized": "1.8.1.0",
+ "version": "1.9.0",
+ "version_normalized": "1.9.0.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
+ "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
- "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203",
+ "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
@@ -1512,7 +1404,7 @@
"phpspec/phpspec": "^2.5|^3.2",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
},
- "time": "2019-06-13T12:50:23+00:00",
+ "time": "2019-10-03T11:07:50+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1553,42 +1445,42 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "5.3.2",
- "version_normalized": "5.3.2.0",
+ "version": "4.0.8",
+ "version_normalized": "4.0.8.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+ "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xmlwriter": "*",
- "php": "^7.0",
- "phpunit/php-file-iterator": "^1.4.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^2.0.1",
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
- "sebastian/environment": "^3.0",
- "sebastian/version": "^2.0.1",
- "theseer/tokenizer": "^1.1"
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-file-iterator": "^1.3",
+ "phpunit/php-text-template": "^1.2",
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0",
+ "sebastian/environment": "^1.3.2 || ^2.0",
+ "sebastian/version": "^1.0 || ^2.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "ext-xdebug": "^2.1.4",
+ "phpunit/phpunit": "^5.7"
},
"suggest": {
- "ext-xdebug": "^2.5.5"
+ "ext-xdebug": "^2.5.1"
},
- "time": "2018-04-06T15:36:58+00:00",
+ "time": "2017-04-02T07:44:40+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.3.x-dev"
+ "dev-master": "4.0.x-dev"
}
},
"installation-source": "dist",
@@ -1604,8 +1496,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "role": "lead",
- "email": "sebastian@phpunit.de"
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
}
],
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
@@ -1654,8 +1546,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "role": "lead",
- "email": "sb@sebastian-bergmann.de"
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
}
],
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
@@ -1698,8 +1590,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "role": "lead",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
"description": "Simple template engine.",
@@ -1749,8 +1641,8 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "role": "lead",
- "email": "sb@sebastian-bergmann.de"
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
}
],
"description": "Utility class for timing",
@@ -1812,17 +1704,17 @@
},
{
"name": "phpunit/phpunit",
- "version": "6.5.14",
- "version_normalized": "6.5.14.0",
+ "version": "5.7.27",
+ "version_normalized": "5.7.27.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+ "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
"shasum": ""
},
"require": {
@@ -1831,106 +1723,42 @@
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
- "myclabs/deep-copy": "^1.6.1",
- "phar-io/manifest": "^1.0.1",
- "phar-io/version": "^1.0",
- "php": "^7.0",
- "phpspec/prophecy": "^1.7",
- "phpunit/php-code-coverage": "^5.3",
- "phpunit/php-file-iterator": "^1.4.3",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-timer": "^1.0.9",
- "phpunit/phpunit-mock-objects": "^5.0.9",
- "sebastian/comparator": "^2.1",
- "sebastian/diff": "^2.0",
- "sebastian/environment": "^3.1",
- "sebastian/exporter": "^3.1",
- "sebastian/global-state": "^2.0",
- "sebastian/object-enumerator": "^3.0.3",
- "sebastian/resource-operations": "^1.0",
- "sebastian/version": "^2.0.1"
+ "myclabs/deep-copy": "~1.3",
+ "php": "^5.6 || ^7.0",
+ "phpspec/prophecy": "^1.6.2",
+ "phpunit/php-code-coverage": "^4.0.4",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "^3.2",
+ "sebastian/comparator": "^1.2.4",
+ "sebastian/diff": "^1.4.3",
+ "sebastian/environment": "^1.3.4 || ^2.0",
+ "sebastian/exporter": "~2.0",
+ "sebastian/global-state": "^1.1",
+ "sebastian/object-enumerator": "~2.0",
+ "sebastian/resource-operations": "~1.0",
+ "sebastian/version": "^1.0.6|^2.0.1",
+ "symfony/yaml": "~2.1|~3.0|~4.0"
},
"conflict": {
- "phpdocumentor/reflection-docblock": "3.0.2",
- "phpunit/dbunit": "<3.0"
+ "phpdocumentor/reflection-docblock": "3.0.2"
},
"require-dev": {
"ext-pdo": "*"
},
"suggest": {
"ext-xdebug": "*",
- "phpunit/php-invoker": "^1.1"
+ "phpunit/php-invoker": "~1.1"
},
- "time": "2019-02-01T05:22:47+00:00",
+ "time": "2018-02-01T05:50:59+00:00",
"bin": [
"phpunit"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "6.5.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "role": "lead",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ]
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "5.0.10",
- "version_normalized": "5.0.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.5",
- "php": "^7.0",
- "phpunit/php-text-template": "^1.2.1",
- "sebastian/exporter": "^3.1"
- },
- "conflict": {
- "phpunit/phpunit": "<6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.5.11"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "time": "2018-08-09T05:50:03+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0.x-dev"
+ "dev-master": "5.7.x-dev"
}
},
"installation-source": "dist",
@@ -1950,6 +1778,68 @@
"role": "lead"
}
],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ]
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "3.4.4",
+ "version_normalized": "3.4.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-text-template": "^1.2",
+ "sebastian/exporter": "^1.2 || ^2.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "time": "2017-06-30T09:13:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
"description": "Mock Object library for PHPUnit",
"homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
"keywords": [
@@ -2353,32 +2243,32 @@
},
{
"name": "sebastian/comparator",
- "version": "2.1.3",
- "version_normalized": "2.1.3.0",
+ "version": "1.2.4",
+ "version_normalized": "1.2.4.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "sebastian/diff": "^2.0 || ^3.0",
- "sebastian/exporter": "^3.1"
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2 || ~2.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.4"
+ "phpunit/phpunit": "~4.4"
},
- "time": "2018-02-01T13:46:46+00:00",
+ "time": "2017-01-29T09:50:25+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1.x-dev"
+ "dev-master": "1.2.x-dev"
}
},
"installation-source": "dist",
@@ -2410,7 +2300,7 @@
}
],
"description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
@@ -2419,30 +2309,30 @@
},
{
"name": "sebastian/diff",
- "version": "2.0.1",
- "version_normalized": "2.0.1.0",
+ "version": "1.4.3",
+ "version_normalized": "1.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "php": "^5.3.3 || ^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.2"
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
- "time": "2017-08-03T08:09:46+00:00",
+ "time": "2017-05-22T07:24:03+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "1.4-dev"
}
},
"installation-source": "dist",
@@ -2473,30 +2363,30 @@
},
{
"name": "sebastian/environment",
- "version": "3.1.0",
- "version_normalized": "3.1.0.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+ "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "php": "^5.6 || ^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.1"
+ "phpunit/phpunit": "^5.0"
},
- "time": "2017-07-01T08:51:00+00:00",
+ "time": "2016-11-26T07:53:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -2525,32 +2415,32 @@
},
{
"name": "sebastian/exporter",
- "version": "3.1.1",
- "version_normalized": "3.1.1.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "06a9a5947f47b3029d76118eb5c22802e5869687"
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/06a9a5947f47b3029d76118eb5c22802e5869687",
- "reference": "06a9a5947f47b3029d76118eb5c22802e5869687",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+ "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "sebastian/recursion-context": "^3.0"
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~2.0"
},
"require-dev": {
"ext-mbstring": "*",
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "~4.4"
},
- "time": "2019-08-11T12:43:14+00:00",
+ "time": "2016-11-19T08:54:04+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -2564,10 +2454,6 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
@@ -2577,12 +2463,16 @@
"email": "github@wallbash.com"
},
{
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
},
{
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
}
],
"description": "Provides the functionality to export PHP variables for visualization",
@@ -2594,33 +2484,33 @@
},
{
"name": "sebastian/global-state",
- "version": "2.0.0",
- "version_normalized": "2.0.0.0",
+ "version": "1.1.1",
+ "version_normalized": "1.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "php": ">=5.3.3"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "~4.2"
},
"suggest": {
"ext-uopz": "*"
},
- "time": "2017-04-27T15:39:26+00:00",
+ "time": "2015-10-12T03:26:01+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "1.0-dev"
}
},
"installation-source": "dist",
@@ -2647,32 +2537,31 @@
},
{
"name": "sebastian/object-enumerator",
- "version": "3.0.3",
- "version_normalized": "3.0.3.0",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
+ "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
+ "php": ">=5.6",
+ "sebastian/recursion-context": "~2.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "~5"
},
- "time": "2017-08-03T12:35:26+00:00",
+ "time": "2017-02-18T15:18:39+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -2694,79 +2583,32 @@
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/"
},
- {
- "name": "sebastian/object-reflector",
- "version": "1.1.1",
- "version_normalized": "1.1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "time": "2017-03-29T09:07:27+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/"
- },
{
"name": "sebastian/recursion-context",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+ "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "php": ">=5.3.3"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "~4.4"
},
- "time": "2017-03-03T06:23:57+00:00",
+ "time": "2016-11-19T07:33:16+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -2887,17 +2729,17 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.4.2",
- "version_normalized": "3.4.2.0",
+ "version": "3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8"
+ "reference": "82cd0f854ceca17731d6d019c7098e3755c45060"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
- "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/82cd0f854ceca17731d6d019c7098e3755c45060",
+ "reference": "82cd0f854ceca17731d6d019c7098e3755c45060",
"shasum": ""
},
"require": {
@@ -2909,7 +2751,7 @@
"require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
},
- "time": "2019-04-10T23:49:02+00:00",
+ "time": "2019-10-16T21:14:26+00:00",
"bin": [
"bin/phpcs",
"bin/phpcbf"
@@ -3004,17 +2846,17 @@
},
{
"name": "symfony/config",
- "version": "v3.4.31",
- "version_normalized": "3.4.31.0",
+ "version": "v3.4.32",
+ "version_normalized": "3.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "24a60c0d7ad98a0fa5d1f892e9286095a389404f"
+ "reference": "717ad66b5257e9752ae3c5722b5810bb4c40b236"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/24a60c0d7ad98a0fa5d1f892e9286095a389404f",
- "reference": "24a60c0d7ad98a0fa5d1f892e9286095a389404f",
+ "url": "https://api.github.com/repos/symfony/config/zipball/717ad66b5257e9752ae3c5722b5810bb4c40b236",
+ "reference": "717ad66b5257e9752ae3c5722b5810bb4c40b236",
"shasum": ""
},
"require": {
@@ -3035,7 +2877,7 @@
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
},
- "time": "2019-08-26T07:52:57+00:00",
+ "time": "2019-09-19T15:32:51+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3070,17 +2912,17 @@
},
{
"name": "symfony/console",
- "version": "v3.4.31",
- "version_normalized": "3.4.31.0",
+ "version": "v3.4.32",
+ "version_normalized": "3.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "4510f04e70344d70952566e4262a0b11df39cb10"
+ "reference": "4727d7f3c99b9dea0ae70ed4f34645728aa90453"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/4510f04e70344d70952566e4262a0b11df39cb10",
- "reference": "4510f04e70344d70952566e4262a0b11df39cb10",
+ "url": "https://api.github.com/repos/symfony/console/zipball/4727d7f3c99b9dea0ae70ed4f34645728aa90453",
+ "reference": "4727d7f3c99b9dea0ae70ed4f34645728aa90453",
"shasum": ""
},
"require": {
@@ -3109,7 +2951,7 @@
"symfony/lock": "",
"symfony/process": ""
},
- "time": "2019-08-26T07:52:58+00:00",
+ "time": "2019-10-06T19:52:09+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3144,17 +2986,17 @@
},
{
"name": "symfony/debug",
- "version": "v4.3.4",
- "version_normalized": "4.3.4.0",
+ "version": "v4.3.5",
+ "version_normalized": "4.3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced"
+ "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced",
- "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
+ "reference": "cc5c1efd0edfcfd10b354750594a46b3dd2afbbe",
"shasum": ""
},
"require": {
@@ -3167,7 +3009,7 @@
"require-dev": {
"symfony/http-kernel": "~3.4|~4.0"
},
- "time": "2019-08-20T14:27:59+00:00",
+ "time": "2019-09-19T15:51:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3202,8 +3044,8 @@
},
{
"name": "symfony/filesystem",
- "version": "v4.3.4",
- "version_normalized": "4.3.4.0",
+ "version": "v4.3.5",
+ "version_normalized": "4.3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -3557,17 +3399,17 @@
},
{
"name": "symfony/yaml",
- "version": "v3.4.31",
- "version_normalized": "3.4.31.0",
+ "version": "v3.4.32",
+ "version_normalized": "3.4.32.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "3dc414b7db30695bae671a1d86013d03f4ae9834"
+ "reference": "768f817446da74a776a31eea335540f9dcb53942"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/3dc414b7db30695bae671a1d86013d03f4ae9834",
- "reference": "3dc414b7db30695bae671a1d86013d03f4ae9834",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/768f817446da74a776a31eea335540f9dcb53942",
+ "reference": "768f817446da74a776a31eea335540f9dcb53942",
"shasum": ""
},
"require": {
@@ -3583,7 +3425,7 @@
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
- "time": "2019-08-20T13:31:17+00:00",
+ "time": "2019-09-10T10:38:46+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3616,61 +3458,19 @@
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com"
},
- {
- "name": "theseer/tokenizer",
- "version": "1.1.3",
- "version_normalized": "1.1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.0"
- },
- "time": "2019-06-13T22:48:21+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- }
- ],
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats"
- },
{
"name": "twig/twig",
- "version": "v2.11.3",
- "version_normalized": "2.11.3.0",
+ "version": "v2.12.1",
+ "version_normalized": "2.12.1.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "699ed2342557c88789a15402de5eb834dedd6792"
+ "reference": "ddd4134af9bfc6dba4eff7c8447444ecc45b9ee5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792",
- "reference": "699ed2342557c88789a15402de5eb834dedd6792",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/ddd4134af9bfc6dba4eff7c8447444ecc45b9ee5",
+ "reference": "ddd4134af9bfc6dba4eff7c8447444ecc45b9ee5",
"shasum": ""
},
"require": {
@@ -3680,14 +3480,14 @@
},
"require-dev": {
"psr/container": "^1.0",
- "symfony/debug": "^2.7",
- "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0"
+ "symfony/debug": "^3.4|^4.2",
+ "symfony/phpunit-bridge": "^4.4@dev|^5.0"
},
- "time": "2019-06-18T15:37:11+00:00",
+ "time": "2019-10-17T07:34:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.11-dev"
+ "dev-master": "2.12-dev"
}
},
"installation-source": "dist",
@@ -3706,19 +3506,19 @@
"authors": [
{
"name": "Fabien Potencier",
- "role": "Lead Developer",
"email": "fabien@symfony.com",
- "homepage": "http://fabien.potencier.org"
- },
- {
- "name": "Armin Ronacher",
- "role": "Project Founder",
- "email": "armin.ronacher@active-4.com"
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
},
{
"name": "Twig Team",
- "role": "Contributors",
- "homepage": "https://twig.symfony.com/contributors"
+ "homepage": "https://twig.symfony.com/contributors",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
@@ -3727,103 +3527,6 @@
"templating"
]
},
- {
- "name": "webimpress/composer-extra-dependency",
- "version": "0.2.2",
- "version_normalized": "0.2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webimpress/composer-extra-dependency.git",
- "reference": "31fa56391d30f03b1180c87610cbe22254780ad9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webimpress/composer-extra-dependency/zipball/31fa56391d30f03b1180c87610cbe22254780ad9",
- "reference": "31fa56391d30f03b1180c87610cbe22254780ad9",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.1",
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "composer/composer": "^1.5.2",
- "mikey179/vfsstream": "^1.6.5",
- "phpunit/phpunit": "^5.7.22 || ^6.4.1",
- "zendframework/zend-coding-standard": "~1.0.0"
- },
- "time": "2017-10-17T17:15:14+00:00",
- "type": "composer-plugin",
- "extra": {
- "class": "Webimpress\\ComposerExtraDependency\\Plugin"
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Webimpress\\ComposerExtraDependency\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "description": "Composer plugin to require extra dependencies",
- "homepage": "https://github.com/webimpress/composer-extra-dependency",
- "keywords": [
- "composer",
- "dependency",
- "webimpress"
- ]
- },
- {
- "name": "webimpress/http-middleware-compatibility",
- "version": "0.1.4",
- "version_normalized": "0.1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webimpress/http-middleware-compatibility.git",
- "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webimpress/http-middleware-compatibility/zipball/8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717",
- "reference": "8ed1c2c7523dce0035b98bc4f3a73ca9cd1d3717",
- "shasum": ""
- },
- "require": {
- "http-interop/http-middleware": "^0.1.1 || ^0.2 || ^0.3 || ^0.4.1 || ^0.5",
- "php": "^5.6 || ^7.0",
- "webimpress/composer-extra-dependency": "^0.2.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7.23 || ^6.4.3"
- },
- "time": "2017-10-17T17:31:10+00:00",
- "type": "library",
- "extra": {
- "dependency": [
- "http-interop/http-middleware"
- ]
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "autoload/http-middleware.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "description": "Compatibility library for Draft PSR-15 HTTP Middleware",
- "homepage": "https://github.com/webimpress/http-middleware-compatibility",
- "keywords": [
- "middleware",
- "psr-15",
- "webimpress"
- ],
- "abandoned": "psr/http-server-middleware"
- },
{
"name": "webmozart/assert",
"version": "1.5.0",
@@ -3878,42 +3581,35 @@
},
{
"name": "zendframework/zend-expressive-fastroute",
- "version": "2.2.1",
- "version_normalized": "2.2.1.0",
+ "version": "1.2.0",
+ "version_normalized": "1.2.0.0",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-expressive-fastroute.git",
- "reference": "7567d8e53e7f92b740c937e2215d393cdb65feb6"
+ "reference": "2d08527ee8b4ac8709a9dae626f868eaaa1d84e6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-expressive-fastroute/zipball/7567d8e53e7f92b740c937e2215d393cdb65feb6",
- "reference": "7567d8e53e7f92b740c937e2215d393cdb65feb6",
+ "url": "https://api.github.com/repos/zendframework/zend-expressive-fastroute/zipball/2d08527ee8b4ac8709a9dae626f868eaaa1d84e6",
+ "reference": "2d08527ee8b4ac8709a9dae626f868eaaa1d84e6",
"shasum": ""
},
"require": {
- "fig/http-message-util": "^1.1.2",
- "nikic/fast-route": "^1.2",
- "php": "^5.6 || ^7.0",
- "psr/container": "^1.0",
- "psr/http-message": "^1.0.1",
- "zendframework/zend-expressive-router": "^2.4",
- "zendframework/zend-stdlib": "^3.1 || 2.*"
- },
- "conflict": {
- "container-interop/container-interop": "<1.2.0"
+ "nikic/fast-route": "^1.0.0",
+ "php": "^5.5 || ^7.0",
+ "psr/http-message": "^1.0",
+ "zendframework/zend-expressive-router": "^1.0"
},
"require-dev": {
- "malukenho/docheader": "^0.1.5",
- "phpunit/phpunit": "^5.7.23 || ^6.4.3",
- "zendframework/zend-coding-standard": "~1.0.0"
+ "phpunit/phpunit": "^4.7",
+ "squizlabs/php_codesniffer": "^2.3"
},
- "time": "2018-03-09T17:36:27+00:00",
+ "time": "2016-06-16T13:37:19+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2.x-dev",
- "dev-develop": "3.0.x-dev"
+ "dev-master": "1.1-dev",
+ "dev-develop": "1.2-dev"
}
},
"installation-source": "dist",
@@ -3929,42 +3625,36 @@
"description": "FastRoute integration for Expressive",
"keywords": [
"FastRoute",
- "ZendFramework",
"expressive",
"http",
"middleware",
"psr",
- "psr-7",
- "zend-expressive",
- "zf"
+ "psr-7"
]
},
{
"name": "zendframework/zend-expressive-router",
- "version": "2.4.1",
- "version_normalized": "2.4.1.0",
+ "version": "1.3.2",
+ "version_normalized": "1.3.2.0",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-expressive-router.git",
- "reference": "e1a00596aa20a29968bdc6ecdf0256c8bfd6e0b5"
+ "reference": "50c9e4dff0cf65d9937c56b597c530e1bf5f8ef0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-expressive-router/zipball/e1a00596aa20a29968bdc6ecdf0256c8bfd6e0b5",
- "reference": "e1a00596aa20a29968bdc6ecdf0256c8bfd6e0b5",
+ "url": "https://api.github.com/repos/zendframework/zend-expressive-router/zipball/50c9e4dff0cf65d9937c56b597c530e1bf5f8ef0",
+ "reference": "50c9e4dff0cf65d9937c56b597c530e1bf5f8ef0",
"shasum": ""
},
"require": {
- "fig/http-message-util": "^1.1.2",
+ "fig/http-message-util": "^1.1",
"php": "^5.6 || ^7.0",
- "psr/container": "^1.0",
- "psr/http-message": "^1.0.1",
- "webimpress/http-middleware-compatibility": "^0.1.1"
+ "psr/http-message": "^1.0"
},
"require-dev": {
- "http-interop/http-middleware": "0.4.1",
"malukenho/docheader": "^0.1.5",
- "phpunit/phpunit": "^5.7.23 || ^6.4.3",
+ "phpunit/phpunit": "^4.7 || ^5.6",
"zendframework/zend-coding-standard": "~1.0.0"
},
"suggest": {
@@ -3972,15 +3662,12 @@
"zendframework/zend-expressive-fastroute": "^1.2 to use the FastRoute routing adapter",
"zendframework/zend-expressive-zendrouter": "^1.2 to use the zend-router routing adapter"
},
- "time": "2018-03-08T19:27:02+00:00",
+ "time": "2016-12-14T13:49:15+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4.x-dev",
- "dev-develop": "3.0.x-dev"
- },
- "zf": {
- "config-provider": "Zend\\Expressive\\Router\\ConfigProvider"
+ "dev-master": "1.3.x-dev",
+ "dev-develop": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -3995,62 +3682,11 @@
],
"description": "Router subcomponent for Expressive",
"keywords": [
- "ZendFramework",
"expressive",
"http",
"middleware",
"psr",
- "psr-7",
- "zend-expressive",
- "zf"
- ]
- },
- {
- "name": "zendframework/zend-stdlib",
- "version": "3.2.1",
- "version_normalized": "3.2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/zendframework/zend-stdlib.git",
- "reference": "66536006722aff9e62d1b331025089b7ec71c065"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065",
- "reference": "66536006722aff9e62d1b331025089b7ec71c065",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "phpbench/phpbench": "^0.13",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
- "zendframework/zend-coding-standard": "~1.0.0"
- },
- "time": "2018-08-28T21:34:05+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2.x-dev",
- "dev-develop": "3.3.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Zend\\Stdlib\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "SPL extensions, array utilities, error handlers, and more",
- "keywords": [
- "ZendFramework",
- "stdlib",
- "zf"
+ "psr-7"
]
}
]
diff --git a/vendor/phar-io/manifest/.gitignore b/vendor/phar-io/manifest/.gitignore
deleted file mode 100644
index 94d433b..0000000
--- a/vendor/phar-io/manifest/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/.idea
-/.php_cs.cache
-/composer.lock
-/src/autoload.php
-/tools
-/vendor
-
-/build
diff --git a/vendor/phar-io/manifest/.travis.yml b/vendor/phar-io/manifest/.travis.yml
deleted file mode 100644
index b4be10f..0000000
--- a/vendor/phar-io/manifest/.travis.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-os:
-- linux
-
-language: php
-
-before_install:
- - wget https://phar.io/releases/phive.phar
- - wget https://phar.io/releases/phive.phar.asc
- - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79
- - gpg --verify phive.phar.asc phive.phar
- - chmod +x phive.phar
- - sudo mv phive.phar /usr/bin/phive
-
-install:
- - ant setup
-
-script: ./tools/phpunit
-
-php:
- - 5.6
- - 7.0
- - 7.1
- - 7.0snapshot
- - 7.1snapshot
- - master
-
-matrix:
- allow_failures:
- - php: master
- fast_finish: true
-
-notifications:
- email: false
diff --git a/vendor/phar-io/manifest/LICENSE b/vendor/phar-io/manifest/LICENSE
deleted file mode 100644
index 96051b1..0000000
--- a/vendor/phar-io/manifest/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-manifest
-
-Copyright (c) 2016 Arne Blankerts
, Sebastian Heuer , Sebastian Bergmann , and contributors
-All 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.
-
-* Neither the name of Arne Blankerts nor the names of contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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/phar-io/manifest/README.md b/vendor/phar-io/manifest/README.md
deleted file mode 100644
index e6d0b05..0000000
--- a/vendor/phar-io/manifest/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Manifest
-
-Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar).
-
-[![Build Status](https://travis-ci.org/phar-io/manifest.svg?branch=master)](https://travis-ci.org/phar-io/manifest)
-[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phar-io/manifest/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phar-io/manifest/?branch=master)
-[![SensioLabsInsight](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7/mini.png)](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7)
-
-## Installation
-
-You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
-
- composer require phar-io/manifest
-
-If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
-
- composer require --dev phar-io/manifest
-
-## Usage
-
-```php
-use PharIo\Manifest\ManifestLoader;
-use PharIo\Manifest\ManifestSerializer;
-
-$manifest = ManifestLoader::fromFile('manifest.xml');
-
-var_dump($manifest);
-
-echo (new ManifestSerializer)->serializeToString($manifest);
-```
diff --git a/vendor/phar-io/manifest/build.xml b/vendor/phar-io/manifest/build.xml
deleted file mode 100644
index fc6eb1a..0000000
--- a/vendor/phar-io/manifest/build.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/composer.json b/vendor/phar-io/manifest/composer.json
deleted file mode 100644
index 832134d..0000000
--- a/vendor/phar-io/manifest/composer.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "phar-io/manifest",
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "license": "BSD-3-Clause",
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "support": {
- "issues": "https://github.com/phar-io/manifest/issues"
- },
- "require": {
- "php": "^5.6 || ^7.0",
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^1.0.1"
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- }
-}
-
diff --git a/vendor/phar-io/manifest/examples/example-01.php b/vendor/phar-io/manifest/examples/example-01.php
deleted file mode 100644
index 345c407..0000000
--- a/vendor/phar-io/manifest/examples/example-01.php
+++ /dev/null
@@ -1,23 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use PharIo\Manifest\ManifestLoader;
-use PharIo\Manifest\ManifestSerializer;
-
-require __DIR__ . '/../vendor/autoload.php';
-
-$manifest = ManifestLoader::fromFile(__DIR__ . '/../tests/_fixture/phpunit-5.6.5.xml');
-
-echo sprintf(
- "Manifest for %s (%s):\n\n",
- $manifest->getName(),
- $manifest->getVersion()->getVersionString()
-);
-echo (new ManifestSerializer)->serializeToString($manifest);
diff --git a/vendor/phar-io/manifest/phive.xml b/vendor/phar-io/manifest/phive.xml
deleted file mode 100644
index 69f2f91..0000000
--- a/vendor/phar-io/manifest/phive.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/vendor/phar-io/manifest/src/ManifestDocumentMapper.php b/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
deleted file mode 100644
index d41e4f9..0000000
--- a/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
+++ /dev/null
@@ -1,193 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-use PharIo\Version\Exception as VersionException;
-use PharIo\Version\VersionConstraintParser;
-
-class ManifestDocumentMapper {
- /**
- * @param ManifestDocument $document
- *
- * @returns Manifest
- *
- * @throws ManifestDocumentMapperException
- */
- public function map(ManifestDocument $document) {
- try {
- $contains = $document->getContainsElement();
- $type = $this->mapType($contains);
- $copyright = $this->mapCopyright($document->getCopyrightElement());
- $requirements = $this->mapRequirements($document->getRequiresElement());
- $bundledComponents = $this->mapBundledComponents($document);
-
- return new Manifest(
- new ApplicationName($contains->getName()),
- new Version($contains->getVersion()),
- $type,
- $copyright,
- $requirements,
- $bundledComponents
- );
- } catch (VersionException $e) {
- throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
- } catch (Exception $e) {
- throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
- }
- }
-
- /**
- * @param ContainsElement $contains
- *
- * @return Type
- *
- * @throws ManifestDocumentMapperException
- */
- private function mapType(ContainsElement $contains) {
- switch ($contains->getType()) {
- case 'application':
- return Type::application();
- case 'library':
- return Type::library();
- case 'extension':
- return $this->mapExtension($contains->getExtensionElement());
- }
-
- throw new ManifestDocumentMapperException(
- sprintf('Unsupported type %s', $contains->getType())
- );
- }
-
- /**
- * @param CopyrightElement $copyright
- *
- * @return CopyrightInformation
- *
- * @throws InvalidUrlException
- * @throws InvalidEmailException
- */
- private function mapCopyright(CopyrightElement $copyright) {
- $authors = new AuthorCollection();
-
- foreach($copyright->getAuthorElements() as $authorElement) {
- $authors->add(
- new Author(
- $authorElement->getName(),
- new Email($authorElement->getEmail())
- )
- );
- }
-
- $licenseElement = $copyright->getLicenseElement();
- $license = new License(
- $licenseElement->getType(),
- new Url($licenseElement->getUrl())
- );
-
- return new CopyrightInformation(
- $authors,
- $license
- );
- }
-
- /**
- * @param RequiresElement $requires
- *
- * @return RequirementCollection
- *
- * @throws ManifestDocumentMapperException
- */
- private function mapRequirements(RequiresElement $requires) {
- $collection = new RequirementCollection();
- $phpElement = $requires->getPHPElement();
- $parser = new VersionConstraintParser;
-
- try {
- $versionConstraint = $parser->parse($phpElement->getVersion());
- } catch (VersionException $e) {
- throw new ManifestDocumentMapperException(
- sprintf('Unsupported version constraint - %s', $e->getMessage()),
- $e->getCode(),
- $e
- );
- }
-
- $collection->add(
- new PhpVersionRequirement(
- $versionConstraint
- )
- );
-
- if (!$phpElement->hasExtElements()) {
- return $collection;
- }
-
- foreach($phpElement->getExtElements() as $extElement) {
- $collection->add(
- new PhpExtensionRequirement($extElement->getName())
- );
- }
-
- return $collection;
- }
-
- /**
- * @param ManifestDocument $document
- *
- * @return BundledComponentCollection
- */
- private function mapBundledComponents(ManifestDocument $document) {
- $collection = new BundledComponentCollection();
-
- if (!$document->hasBundlesElement()) {
- return $collection;
- }
-
- foreach($document->getBundlesElement()->getComponentElements() as $componentElement) {
- $collection->add(
- new BundledComponent(
- $componentElement->getName(),
- new Version(
- $componentElement->getVersion()
- )
- )
- );
- }
-
- return $collection;
- }
-
- /**
- * @param ExtensionElement $extension
- *
- * @return Extension
- *
- * @throws ManifestDocumentMapperException
- */
- private function mapExtension(ExtensionElement $extension) {
- try {
- $parser = new VersionConstraintParser;
- $versionConstraint = $parser->parse($extension->getCompatible());
-
- return Type::extension(
- new ApplicationName($extension->getFor()),
- $versionConstraint
- );
- } catch (VersionException $e) {
- throw new ManifestDocumentMapperException(
- sprintf('Unsupported version constraint - %s', $e->getMessage()),
- $e->getCode(),
- $e
- );
- }
- }
-}
diff --git a/vendor/phar-io/manifest/src/ManifestLoader.php b/vendor/phar-io/manifest/src/ManifestLoader.php
deleted file mode 100644
index 81c5c90..0000000
--- a/vendor/phar-io/manifest/src/ManifestLoader.php
+++ /dev/null
@@ -1,66 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ManifestLoader {
- /**
- * @param string $filename
- *
- * @return Manifest
- *
- * @throws ManifestLoaderException
- */
- public static function fromFile($filename) {
- try {
- return (new ManifestDocumentMapper())->map(
- ManifestDocument::fromFile($filename)
- );
- } catch (Exception $e) {
- throw new ManifestLoaderException(
- sprintf('Loading %s failed.', $filename),
- $e->getCode(),
- $e
- );
- }
- }
-
- /**
- * @param string $filename
- *
- * @return Manifest
- *
- * @throws ManifestLoaderException
- */
- public static function fromPhar($filename) {
- return self::fromFile('phar://' . $filename . '/manifest.xml');
- }
-
- /**
- * @param string $manifest
- *
- * @return Manifest
- *
- * @throws ManifestLoaderException
- */
- public static function fromString($manifest) {
- try {
- return (new ManifestDocumentMapper())->map(
- ManifestDocument::fromString($manifest)
- );
- } catch (Exception $e) {
- throw new ManifestLoaderException(
- 'Processing string failed',
- $e->getCode(),
- $e
- );
- }
- }
-}
diff --git a/vendor/phar-io/manifest/src/ManifestSerializer.php b/vendor/phar-io/manifest/src/ManifestSerializer.php
deleted file mode 100644
index 4c18ddd..0000000
--- a/vendor/phar-io/manifest/src/ManifestSerializer.php
+++ /dev/null
@@ -1,163 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\AnyVersionConstraint;
-use PharIo\Version\Version;
-use PharIo\Version\VersionConstraint;
-use XMLWriter;
-
-class ManifestSerializer {
- /**
- * @var XMLWriter
- */
- private $xmlWriter;
-
- public function serializeToFile(Manifest $manifest, $filename) {
- file_put_contents(
- $filename,
- $this->serializeToString($manifest)
- );
- }
-
- public function serializeToString(Manifest $manifest) {
- $this->startDocument();
-
- $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType());
- $this->addCopyright($manifest->getCopyrightInformation());
- $this->addRequirements($manifest->getRequirements());
- $this->addBundles($manifest->getBundledComponents());
-
- return $this->finishDocument();
- }
-
- private function startDocument() {
- $xmlWriter = new XMLWriter();
- $xmlWriter->openMemory();
- $xmlWriter->setIndent(true);
- $xmlWriter->setIndentString(str_repeat(' ', 4));
- $xmlWriter->startDocument('1.0', 'UTF-8');
- $xmlWriter->startElement('phar');
- $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0');
-
- $this->xmlWriter = $xmlWriter;
- }
-
- private function finishDocument() {
- $this->xmlWriter->endElement();
- $this->xmlWriter->endDocument();
-
- return $this->xmlWriter->outputMemory();
- }
-
- private function addContains($name, Version $version, Type $type) {
- $this->xmlWriter->startElement('contains');
- $this->xmlWriter->writeAttribute('name', $name);
- $this->xmlWriter->writeAttribute('version', $version->getVersionString());
-
- switch (true) {
- case $type->isApplication(): {
- $this->xmlWriter->writeAttribute('type', 'application');
- break;
- }
-
- case $type->isLibrary(): {
- $this->xmlWriter->writeAttribute('type', 'library');
- break;
- }
-
- case $type->isExtension(): {
- /* @var $type Extension */
- $this->xmlWriter->writeAttribute('type', 'extension');
- $this->addExtension($type->getApplicationName(), $type->getVersionConstraint());
- break;
- }
-
- default: {
- $this->xmlWriter->writeAttribute('type', 'custom');
- }
- }
-
- $this->xmlWriter->endElement();
- }
-
- private function addCopyright(CopyrightInformation $copyrightInformation) {
- $this->xmlWriter->startElement('copyright');
-
- foreach($copyrightInformation->getAuthors() as $author) {
- $this->xmlWriter->startElement('author');
- $this->xmlWriter->writeAttribute('name', $author->getName());
- $this->xmlWriter->writeAttribute('email', (string) $author->getEmail());
- $this->xmlWriter->endElement();
- }
-
- $license = $copyrightInformation->getLicense();
-
- $this->xmlWriter->startElement('license');
- $this->xmlWriter->writeAttribute('type', $license->getName());
- $this->xmlWriter->writeAttribute('url', $license->getUrl());
- $this->xmlWriter->endElement();
-
- $this->xmlWriter->endElement();
- }
-
- private function addRequirements(RequirementCollection $requirementCollection) {
- $phpRequirement = new AnyVersionConstraint();
- $extensions = [];
-
- foreach($requirementCollection as $requirement) {
- if ($requirement instanceof PhpVersionRequirement) {
- $phpRequirement = $requirement->getVersionConstraint();
- continue;
- }
-
- if ($requirement instanceof PhpExtensionRequirement) {
- $extensions[] = (string) $requirement;
- }
- }
-
- $this->xmlWriter->startElement('requires');
- $this->xmlWriter->startElement('php');
- $this->xmlWriter->writeAttribute('version', $phpRequirement->asString());
-
- foreach($extensions as $extension) {
- $this->xmlWriter->startElement('ext');
- $this->xmlWriter->writeAttribute('name', $extension);
- $this->xmlWriter->endElement();
- }
-
- $this->xmlWriter->endElement();
- $this->xmlWriter->endElement();
- }
-
- private function addBundles(BundledComponentCollection $bundledComponentCollection) {
- if (count($bundledComponentCollection) === 0) {
- return;
- }
- $this->xmlWriter->startElement('bundles');
-
- foreach($bundledComponentCollection as $bundledComponent) {
- $this->xmlWriter->startElement('component');
- $this->xmlWriter->writeAttribute('name', $bundledComponent->getName());
- $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString());
- $this->xmlWriter->endElement();
- }
-
- $this->xmlWriter->endElement();
- }
-
- private function addExtension($application, VersionConstraint $versionConstraint) {
- $this->xmlWriter->startElement('extension');
- $this->xmlWriter->writeAttribute('for', $application);
- $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString());
- $this->xmlWriter->endElement();
- }
-}
diff --git a/vendor/phar-io/manifest/src/exceptions/Exception.php b/vendor/phar-io/manifest/src/exceptions/Exception.php
deleted file mode 100644
index 3ce46f2..0000000
--- a/vendor/phar-io/manifest/src/exceptions/Exception.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-interface Exception {
-}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php b/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
deleted file mode 100644
index a53735a..0000000
--- a/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
+++ /dev/null
@@ -1,16 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class InvalidApplicationNameException extends \InvalidArgumentException implements Exception {
- const NotAString = 1;
- const InvalidFormat = 2;
-}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php b/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
deleted file mode 100644
index 854399b..0000000
--- a/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class InvalidEmailException extends \InvalidArgumentException implements Exception {
-}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php b/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
deleted file mode 100644
index cdd8323..0000000
--- a/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class InvalidUrlException extends \InvalidArgumentException implements Exception {
-}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
deleted file mode 100644
index 8b40195..0000000
--- a/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
+++ /dev/null
@@ -1,6 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class Application extends Type {
- /**
- * @return bool
- */
- public function isApplication() {
- return true;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/ApplicationName.php b/vendor/phar-io/manifest/src/values/ApplicationName.php
deleted file mode 100644
index 1e71af4..0000000
--- a/vendor/phar-io/manifest/src/values/ApplicationName.php
+++ /dev/null
@@ -1,65 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ApplicationName {
- /**
- * @var string
- */
- private $name;
-
- /**
- * ApplicationName constructor.
- *
- * @param string $name
- *
- * @throws InvalidApplicationNameException
- */
- public function __construct($name) {
- $this->ensureIsString($name);
- $this->ensureValidFormat($name);
- $this->name = $name;
- }
-
- /**
- * @return string
- */
- public function __toString() {
- return $this->name;
- }
-
- public function isEqual(ApplicationName $name) {
- return $this->name === $name->name;
- }
-
- /**
- * @param string $name
- *
- * @throws InvalidApplicationNameException
- */
- private function ensureValidFormat($name) {
- if (!preg_match('#\w/\w#', $name)) {
- throw new InvalidApplicationNameException(
- sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name),
- InvalidApplicationNameException::InvalidFormat
- );
- }
- }
-
- private function ensureIsString($name) {
- if (!is_string($name)) {
- throw new InvalidApplicationNameException(
- 'Name must be a string',
- InvalidApplicationNameException::NotAString
- );
- }
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Author.php b/vendor/phar-io/manifest/src/values/Author.php
deleted file mode 100644
index 8295f51..0000000
--- a/vendor/phar-io/manifest/src/values/Author.php
+++ /dev/null
@@ -1,57 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class Author {
- /**
- * @var string
- */
- private $name;
-
- /**
- * @var Email
- */
- private $email;
-
- /**
- * @param string $name
- * @param Email $email
- */
- public function __construct($name, Email $email) {
- $this->name = $name;
- $this->email = $email;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return Email
- */
- public function getEmail() {
- return $this->email;
- }
-
- /**
- * @return string
- */
- public function __toString() {
- return sprintf(
- '%s <%s>',
- $this->name,
- $this->email
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/AuthorCollection.php b/vendor/phar-io/manifest/src/values/AuthorCollection.php
deleted file mode 100644
index d915879..0000000
--- a/vendor/phar-io/manifest/src/values/AuthorCollection.php
+++ /dev/null
@@ -1,43 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class AuthorCollection implements \Countable, \IteratorAggregate {
- /**
- * @var Author[]
- */
- private $authors = [];
-
- public function add(Author $author) {
- $this->authors[] = $author;
- }
-
- /**
- * @return Author[]
- */
- public function getAuthors() {
- return $this->authors;
- }
-
- /**
- * @return int
- */
- public function count() {
- return count($this->authors);
- }
-
- /**
- * @return AuthorCollectionIterator
- */
- public function getIterator() {
- return new AuthorCollectionIterator($this);
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php b/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
deleted file mode 100644
index 792a050..0000000
--- a/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class AuthorCollectionIterator implements \Iterator {
- /**
- * @var Author[]
- */
- private $authors = [];
-
- /**
- * @var int
- */
- private $position;
-
- public function __construct(AuthorCollection $authors) {
- $this->authors = $authors->getAuthors();
- }
-
- public function rewind() {
- $this->position = 0;
- }
-
- /**
- * @return bool
- */
- public function valid() {
- return $this->position < count($this->authors);
- }
-
- /**
- * @return int
- */
- public function key() {
- return $this->position;
- }
-
- /**
- * @return Author
- */
- public function current() {
- return $this->authors[$this->position];
- }
-
- public function next() {
- $this->position++;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponent.php b/vendor/phar-io/manifest/src/values/BundledComponent.php
deleted file mode 100644
index 846d15a..0000000
--- a/vendor/phar-io/manifest/src/values/BundledComponent.php
+++ /dev/null
@@ -1,48 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-
-class BundledComponent {
- /**
- * @var string
- */
- private $name;
-
- /**
- * @var Version
- */
- private $version;
-
- /**
- * @param string $name
- * @param Version $version
- */
- public function __construct($name, Version $version) {
- $this->name = $name;
- $this->version = $version;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return Version
- */
- public function getVersion() {
- return $this->version;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponentCollection.php b/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
deleted file mode 100644
index 2dbb918..0000000
--- a/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
+++ /dev/null
@@ -1,43 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class BundledComponentCollection implements \Countable, \IteratorAggregate {
- /**
- * @var BundledComponent[]
- */
- private $bundledComponents = [];
-
- public function add(BundledComponent $bundledComponent) {
- $this->bundledComponents[] = $bundledComponent;
- }
-
- /**
- * @return BundledComponent[]
- */
- public function getBundledComponents() {
- return $this->bundledComponents;
- }
-
- /**
- * @return int
- */
- public function count() {
- return count($this->bundledComponents);
- }
-
- /**
- * @return BundledComponentCollectionIterator
- */
- public function getIterator() {
- return new BundledComponentCollectionIterator($this);
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php b/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
deleted file mode 100644
index 13b8f05..0000000
--- a/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class BundledComponentCollectionIterator implements \Iterator {
- /**
- * @var BundledComponent[]
- */
- private $bundledComponents = [];
-
- /**
- * @var int
- */
- private $position;
-
- public function __construct(BundledComponentCollection $bundledComponents) {
- $this->bundledComponents = $bundledComponents->getBundledComponents();
- }
-
- public function rewind() {
- $this->position = 0;
- }
-
- /**
- * @return bool
- */
- public function valid() {
- return $this->position < count($this->bundledComponents);
- }
-
- /**
- * @return int
- */
- public function key() {
- return $this->position;
- }
-
- /**
- * @return BundledComponent
- */
- public function current() {
- return $this->bundledComponents[$this->position];
- }
-
- public function next() {
- $this->position++;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/CopyrightInformation.php b/vendor/phar-io/manifest/src/values/CopyrightInformation.php
deleted file mode 100644
index ece60b1..0000000
--- a/vendor/phar-io/manifest/src/values/CopyrightInformation.php
+++ /dev/null
@@ -1,42 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class CopyrightInformation {
- /**
- * @var AuthorCollection
- */
- private $authors;
-
- /**
- * @var License
- */
- private $license;
-
- public function __construct(AuthorCollection $authors, License $license) {
- $this->authors = $authors;
- $this->license = $license;
- }
-
- /**
- * @return AuthorCollection
- */
- public function getAuthors() {
- return $this->authors;
- }
-
- /**
- * @return License
- */
- public function getLicense() {
- return $this->license;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Email.php b/vendor/phar-io/manifest/src/values/Email.php
deleted file mode 100644
index 57cce04..0000000
--- a/vendor/phar-io/manifest/src/values/Email.php
+++ /dev/null
@@ -1,47 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class Email {
- /**
- * @var string
- */
- private $email;
-
- /**
- * @param string $email
- *
- * @throws InvalidEmailException
- */
- public function __construct($email) {
- $this->ensureEmailIsValid($email);
-
- $this->email = $email;
- }
-
- /**
- * @return string
- */
- public function __toString() {
- return $this->email;
- }
-
- /**
- * @param string $url
- *
- * @throws InvalidEmailException
- */
- private function ensureEmailIsValid($url) {
- if (filter_var($url, \FILTER_VALIDATE_EMAIL) === false) {
- throw new InvalidEmailException;
- }
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Extension.php b/vendor/phar-io/manifest/src/values/Extension.php
deleted file mode 100644
index 90d6a6f..0000000
--- a/vendor/phar-io/manifest/src/values/Extension.php
+++ /dev/null
@@ -1,75 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-use PharIo\Version\VersionConstraint;
-
-class Extension extends Type {
- /**
- * @var ApplicationName
- */
- private $application;
-
- /**
- * @var VersionConstraint
- */
- private $versionConstraint;
-
- /**
- * @param ApplicationName $application
- * @param VersionConstraint $versionConstraint
- */
- public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) {
- $this->application = $application;
- $this->versionConstraint = $versionConstraint;
- }
-
- /**
- * @return ApplicationName
- */
- public function getApplicationName() {
- return $this->application;
- }
-
- /**
- * @return VersionConstraint
- */
- public function getVersionConstraint() {
- return $this->versionConstraint;
- }
-
- /**
- * @return bool
- */
- public function isExtension() {
- return true;
- }
-
- /**
- * @param ApplicationName $name
- *
- * @return bool
- */
- public function isExtensionFor(ApplicationName $name) {
- return $this->application->isEqual($name);
- }
-
- /**
- * @param ApplicationName $name
- * @param Version $version
- *
- * @return bool
- */
- public function isCompatibleWith(ApplicationName $name, Version $version) {
- return $this->isExtensionFor($name) && $this->versionConstraint->complies($version);
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Library.php b/vendor/phar-io/manifest/src/values/Library.php
deleted file mode 100644
index a6ff944..0000000
--- a/vendor/phar-io/manifest/src/values/Library.php
+++ /dev/null
@@ -1,20 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class Library extends Type {
- /**
- * @return bool
- */
- public function isLibrary() {
- return true;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/License.php b/vendor/phar-io/manifest/src/values/License.php
deleted file mode 100644
index e278670..0000000
--- a/vendor/phar-io/manifest/src/values/License.php
+++ /dev/null
@@ -1,42 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class License {
- /**
- * @var string
- */
- private $name;
-
- /**
- * @var Url
- */
- private $url;
-
- public function __construct($name, Url $url) {
- $this->name = $name;
- $this->url = $url;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return Url
- */
- public function getUrl() {
- return $this->url;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Manifest.php b/vendor/phar-io/manifest/src/values/Manifest.php
deleted file mode 100644
index 217acef..0000000
--- a/vendor/phar-io/manifest/src/values/Manifest.php
+++ /dev/null
@@ -1,138 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-
-class Manifest {
- /**
- * @var ApplicationName
- */
- private $name;
-
- /**
- * @var Version
- */
- private $version;
-
- /**
- * @var Type
- */
- private $type;
-
- /**
- * @var CopyrightInformation
- */
- private $copyrightInformation;
-
- /**
- * @var RequirementCollection
- */
- private $requirements;
-
- /**
- * @var BundledComponentCollection
- */
- private $bundledComponents;
-
- public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) {
- $this->name = $name;
- $this->version = $version;
- $this->type = $type;
- $this->copyrightInformation = $copyrightInformation;
- $this->requirements = $requirements;
- $this->bundledComponents = $bundledComponents;
- }
-
- /**
- * @return ApplicationName
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * @return Version
- */
- public function getVersion() {
- return $this->version;
- }
-
- /**
- * @return Type
- */
- public function getType() {
- return $this->type;
- }
-
- /**
- * @return CopyrightInformation
- */
- public function getCopyrightInformation() {
- return $this->copyrightInformation;
- }
-
- /**
- * @return RequirementCollection
- */
- public function getRequirements() {
- return $this->requirements;
- }
-
- /**
- * @return BundledComponentCollection
- */
- public function getBundledComponents() {
- return $this->bundledComponents;
- }
-
- /**
- * @return bool
- */
- public function isApplication() {
- return $this->type->isApplication();
- }
-
- /**
- * @return bool
- */
- public function isLibrary() {
- return $this->type->isLibrary();
- }
-
- /**
- * @return bool
- */
- public function isExtension() {
- return $this->type->isExtension();
- }
-
- /**
- * @param ApplicationName $application
- * @param Version|null $version
- *
- * @return bool
- */
- public function isExtensionFor(ApplicationName $application, Version $version = null) {
- if (!$this->isExtension()) {
- return false;
- }
-
- /** @var Extension $type */
- $type = $this->type;
-
- if ($version !== null) {
- return $type->isCompatibleWith($application, $version);
- }
-
- return $type->isExtensionFor($application);
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php b/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
deleted file mode 100644
index 6dd9296..0000000
--- a/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
+++ /dev/null
@@ -1,32 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class PhpExtensionRequirement implements Requirement {
- /**
- * @var string
- */
- private $extension;
-
- /**
- * @param string $extension
- */
- public function __construct($extension) {
- $this->extension = $extension;
- }
-
- /**
- * @return string
- */
- public function __toString() {
- return $this->extension;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php b/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
deleted file mode 100644
index 8ad3e76..0000000
--- a/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
+++ /dev/null
@@ -1,31 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\VersionConstraint;
-
-class PhpVersionRequirement implements Requirement {
- /**
- * @var VersionConstraint
- */
- private $versionConstraint;
-
- public function __construct(VersionConstraint $versionConstraint) {
- $this->versionConstraint = $versionConstraint;
- }
-
- /**
- * @return VersionConstraint
- */
- public function getVersionConstraint() {
- return $this->versionConstraint;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Requirement.php b/vendor/phar-io/manifest/src/values/Requirement.php
deleted file mode 100644
index 03bb56d..0000000
--- a/vendor/phar-io/manifest/src/values/Requirement.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-interface Requirement {
-}
diff --git a/vendor/phar-io/manifest/src/values/RequirementCollection.php b/vendor/phar-io/manifest/src/values/RequirementCollection.php
deleted file mode 100644
index af0e09b..0000000
--- a/vendor/phar-io/manifest/src/values/RequirementCollection.php
+++ /dev/null
@@ -1,43 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class RequirementCollection implements \Countable, \IteratorAggregate {
- /**
- * @var Requirement[]
- */
- private $requirements = [];
-
- public function add(Requirement $requirement) {
- $this->requirements[] = $requirement;
- }
-
- /**
- * @return Requirement[]
- */
- public function getRequirements() {
- return $this->requirements;
- }
-
- /**
- * @return int
- */
- public function count() {
- return count($this->requirements);
- }
-
- /**
- * @return RequirementCollectionIterator
- */
- public function getIterator() {
- return new RequirementCollectionIterator($this);
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php b/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
deleted file mode 100644
index 9bb7003..0000000
--- a/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
+++ /dev/null
@@ -1,56 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class RequirementCollectionIterator implements \Iterator {
- /**
- * @var Requirement[]
- */
- private $requirements = [];
-
- /**
- * @var int
- */
- private $position;
-
- public function __construct(RequirementCollection $requirements) {
- $this->requirements = $requirements->getRequirements();
- }
-
- public function rewind() {
- $this->position = 0;
- }
-
- /**
- * @return bool
- */
- public function valid() {
- return $this->position < count($this->requirements);
- }
-
- /**
- * @return int
- */
- public function key() {
- return $this->position;
- }
-
- /**
- * @return Requirement
- */
- public function current() {
- return $this->requirements[$this->position];
- }
-
- public function next() {
- $this->position++;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Type.php b/vendor/phar-io/manifest/src/values/Type.php
deleted file mode 100644
index 31fbd44..0000000
--- a/vendor/phar-io/manifest/src/values/Type.php
+++ /dev/null
@@ -1,60 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\VersionConstraint;
-
-abstract class Type {
- /**
- * @return Application
- */
- public static function application() {
- return new Application;
- }
-
- /**
- * @return Library
- */
- public static function library() {
- return new Library;
- }
-
- /**
- * @param ApplicationName $application
- * @param VersionConstraint $versionConstraint
- *
- * @return Extension
- */
- public static function extension(ApplicationName $application, VersionConstraint $versionConstraint) {
- return new Extension($application, $versionConstraint);
- }
-
- /**
- * @return bool
- */
- public function isApplication() {
- return false;
- }
-
- /**
- * @return bool
- */
- public function isLibrary() {
- return false;
- }
-
- /**
- * @return bool
- */
- public function isExtension() {
- return false;
- }
-}
diff --git a/vendor/phar-io/manifest/src/values/Url.php b/vendor/phar-io/manifest/src/values/Url.php
deleted file mode 100644
index 37917c8..0000000
--- a/vendor/phar-io/manifest/src/values/Url.php
+++ /dev/null
@@ -1,47 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class Url {
- /**
- * @var string
- */
- private $url;
-
- /**
- * @param string $url
- *
- * @throws InvalidUrlException
- */
- public function __construct($url) {
- $this->ensureUrlIsValid($url);
-
- $this->url = $url;
- }
-
- /**
- * @return string
- */
- public function __toString() {
- return $this->url;
- }
-
- /**
- * @param string $url
- *
- * @throws InvalidUrlException
- */
- private function ensureUrlIsValid($url) {
- if (filter_var($url, \FILTER_VALIDATE_URL) === false) {
- throw new InvalidUrlException;
- }
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/AuthorElement.php b/vendor/phar-io/manifest/src/xml/AuthorElement.php
deleted file mode 100644
index a32f397..0000000
--- a/vendor/phar-io/manifest/src/xml/AuthorElement.php
+++ /dev/null
@@ -1,21 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class AuthorElement extends ManifestElement {
- public function getName() {
- return $this->getAttributeValue('name');
- }
-
- public function getEmail() {
- return $this->getAttributeValue('email');
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php b/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
deleted file mode 100644
index 1240d8c..0000000
--- a/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
+++ /dev/null
@@ -1,19 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class AuthorElementCollection extends ElementCollection {
- public function current() {
- return new AuthorElement(
- $this->getCurrentElement()
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/BundlesElement.php b/vendor/phar-io/manifest/src/xml/BundlesElement.php
deleted file mode 100644
index b90023e..0000000
--- a/vendor/phar-io/manifest/src/xml/BundlesElement.php
+++ /dev/null
@@ -1,19 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class BundlesElement extends ManifestElement {
- public function getComponentElements() {
- return new ComponentElementCollection(
- $this->getChildrenByName('component')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ComponentElement.php b/vendor/phar-io/manifest/src/xml/ComponentElement.php
deleted file mode 100644
index 64ed6b0..0000000
--- a/vendor/phar-io/manifest/src/xml/ComponentElement.php
+++ /dev/null
@@ -1,21 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ComponentElement extends ManifestElement {
- public function getName() {
- return $this->getAttributeValue('name');
- }
-
- public function getVersion() {
- return $this->getAttributeValue('version');
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php b/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
deleted file mode 100644
index 9d375f9..0000000
--- a/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
+++ /dev/null
@@ -1,19 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ComponentElementCollection extends ElementCollection {
- public function current() {
- return new ComponentElement(
- $this->getCurrentElement()
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ContainsElement.php b/vendor/phar-io/manifest/src/xml/ContainsElement.php
deleted file mode 100644
index 8172f33..0000000
--- a/vendor/phar-io/manifest/src/xml/ContainsElement.php
+++ /dev/null
@@ -1,31 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ContainsElement extends ManifestElement {
- public function getName() {
- return $this->getAttributeValue('name');
- }
-
- public function getVersion() {
- return $this->getAttributeValue('version');
- }
-
- public function getType() {
- return $this->getAttributeValue('type');
- }
-
- public function getExtensionElement() {
- return new ExtensionElement(
- $this->getChildByName('extension')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/CopyrightElement.php b/vendor/phar-io/manifest/src/xml/CopyrightElement.php
deleted file mode 100644
index bf7848e..0000000
--- a/vendor/phar-io/manifest/src/xml/CopyrightElement.php
+++ /dev/null
@@ -1,25 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class CopyrightElement extends ManifestElement {
- public function getAuthorElements() {
- return new AuthorElementCollection(
- $this->getChildrenByName('author')
- );
- }
-
- public function getLicenseElement() {
- return new LicenseElement(
- $this->getChildByName('license')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ElementCollection.php b/vendor/phar-io/manifest/src/xml/ElementCollection.php
deleted file mode 100644
index 284e77b..0000000
--- a/vendor/phar-io/manifest/src/xml/ElementCollection.php
+++ /dev/null
@@ -1,58 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use DOMElement;
-use DOMNodeList;
-
-abstract class ElementCollection implements \Iterator {
- /**
- * @var DOMNodeList
- */
- private $nodeList;
-
- private $position;
-
- /**
- * ElementCollection constructor.
- *
- * @param DOMNodeList $nodeList
- */
- public function __construct(DOMNodeList $nodeList) {
- $this->nodeList = $nodeList;
- $this->position = 0;
- }
-
- abstract public function current();
-
- /**
- * @return DOMElement
- */
- protected function getCurrentElement() {
- return $this->nodeList->item($this->position);
- }
-
- public function next() {
- $this->position++;
- }
-
- public function key() {
- return $this->position;
- }
-
- public function valid() {
- return $this->position < $this->nodeList->length;
- }
-
- public function rewind() {
- $this->position = 0;
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ExtElement.php b/vendor/phar-io/manifest/src/xml/ExtElement.php
deleted file mode 100644
index 7a824ab..0000000
--- a/vendor/phar-io/manifest/src/xml/ExtElement.php
+++ /dev/null
@@ -1,17 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ExtElement extends ManifestElement {
- public function getName() {
- return $this->getAttributeValue('name');
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ExtElementCollection.php b/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
deleted file mode 100644
index 17acc62..0000000
--- a/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
+++ /dev/null
@@ -1,20 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ExtElementCollection extends ElementCollection {
- public function current() {
- return new ExtElement(
- $this->getCurrentElement()
- );
- }
-
-}
diff --git a/vendor/phar-io/manifest/src/xml/ExtensionElement.php b/vendor/phar-io/manifest/src/xml/ExtensionElement.php
deleted file mode 100644
index 536c085..0000000
--- a/vendor/phar-io/manifest/src/xml/ExtensionElement.php
+++ /dev/null
@@ -1,21 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class ExtensionElement extends ManifestElement {
- public function getFor() {
- return $this->getAttributeValue('for');
- }
-
- public function getCompatible() {
- return $this->getAttributeValue('compatible');
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/LicenseElement.php b/vendor/phar-io/manifest/src/xml/LicenseElement.php
deleted file mode 100644
index ee001df..0000000
--- a/vendor/phar-io/manifest/src/xml/LicenseElement.php
+++ /dev/null
@@ -1,21 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class LicenseElement extends ManifestElement {
- public function getType() {
- return $this->getAttributeValue('type');
- }
-
- public function getUrl() {
- return $this->getAttributeValue('url');
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ManifestDocument.php b/vendor/phar-io/manifest/src/xml/ManifestDocument.php
deleted file mode 100644
index 9b0bd9d..0000000
--- a/vendor/phar-io/manifest/src/xml/ManifestDocument.php
+++ /dev/null
@@ -1,118 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use DOMDocument;
-use DOMElement;
-
-class ManifestDocument {
- const XMLNS = 'https://phar.io/xml/manifest/1.0';
-
- /**
- * @var DOMDocument
- */
- private $dom;
-
- /**
- * ManifestDocument constructor.
- *
- * @param DOMDocument $dom
- */
- private function __construct(DOMDocument $dom) {
- $this->ensureCorrectDocumentType($dom);
-
- $this->dom = $dom;
- }
-
- public static function fromFile($filename) {
- if (!file_exists($filename)) {
- throw new ManifestDocumentException(
- sprintf('File "%s" not found', $filename)
- );
- }
-
- return self::fromString(
- file_get_contents($filename)
- );
- }
-
- public static function fromString($xmlString) {
- $prev = libxml_use_internal_errors(true);
- libxml_clear_errors();
-
- $dom = new DOMDocument();
- $dom->loadXML($xmlString);
-
- $errors = libxml_get_errors();
- libxml_use_internal_errors($prev);
-
- if (count($errors) !== 0) {
- throw new ManifestDocumentLoadingException($errors);
- }
-
- return new self($dom);
- }
-
- public function getContainsElement() {
- return new ContainsElement(
- $this->fetchElementByName('contains')
- );
- }
-
- public function getCopyrightElement() {
- return new CopyrightElement(
- $this->fetchElementByName('copyright')
- );
- }
-
- public function getRequiresElement() {
- return new RequiresElement(
- $this->fetchElementByName('requires')
- );
- }
-
- public function hasBundlesElement() {
- return $this->dom->getElementsByTagNameNS(self::XMLNS, 'bundles')->length === 1;
- }
-
- public function getBundlesElement() {
- return new BundlesElement(
- $this->fetchElementByName('bundles')
- );
- }
-
- private function ensureCorrectDocumentType(DOMDocument $dom) {
- $root = $dom->documentElement;
-
- if ($root->localName !== 'phar' || $root->namespaceURI !== self::XMLNS) {
- throw new ManifestDocumentException('Not a phar.io manifest document');
- }
- }
-
- /**
- * @param $elementName
- *
- * @return DOMElement
- *
- * @throws ManifestDocumentException
- */
- private function fetchElementByName($elementName) {
- $element = $this->dom->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
-
- if (!$element instanceof DOMElement) {
- throw new ManifestDocumentException(
- sprintf('Element %s missing', $elementName)
- );
- }
-
- return $element;
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php b/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php
deleted file mode 100644
index 59ac5c6..0000000
--- a/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php
+++ /dev/null
@@ -1,48 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use LibXMLError;
-
-class ManifestDocumentLoadingException extends \Exception implements Exception {
- /**
- * @var LibXMLError[]
- */
- private $libxmlErrors;
-
- /**
- * ManifestDocumentLoadingException constructor.
- *
- * @param LibXMLError[] $libxmlErrors
- */
- public function __construct(array $libxmlErrors) {
- $this->libxmlErrors = $libxmlErrors;
- $first = $this->libxmlErrors[0];
-
- parent::__construct(
- sprintf(
- '%s (Line: %d / Column: %d / File: %s)',
- $first->message,
- $first->line,
- $first->column,
- $first->file
- ),
- $first->code
- );
- }
-
- /**
- * @return LibXMLError[]
- */
- public function getLibxmlErrors() {
- return $this->libxmlErrors;
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/ManifestElement.php b/vendor/phar-io/manifest/src/xml/ManifestElement.php
deleted file mode 100644
index 09d07cc..0000000
--- a/vendor/phar-io/manifest/src/xml/ManifestElement.php
+++ /dev/null
@@ -1,100 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use DOMElement;
-use DOMNodeList;
-
-class ManifestElement {
- const XMLNS = 'https://phar.io/xml/manifest/1.0';
-
- /**
- * @var DOMElement
- */
- private $element;
-
- /**
- * ContainsElement constructor.
- *
- * @param DOMElement $element
- */
- public function __construct(DOMElement $element) {
- $this->element = $element;
- }
-
- /**
- * @param string $name
- *
- * @return string
- *
- * @throws ManifestElementException
- */
- protected function getAttributeValue($name) {
- if (!$this->element->hasAttribute($name)) {
- throw new ManifestElementException(
- sprintf(
- 'Attribute %s not set on element %s',
- $name,
- $this->element->localName
- )
- );
- }
-
- return $this->element->getAttribute($name);
- }
-
- /**
- * @param $elementName
- *
- * @return DOMElement
- *
- * @throws ManifestElementException
- */
- protected function getChildByName($elementName) {
- $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
-
- if (!$element instanceof DOMElement) {
- throw new ManifestElementException(
- sprintf('Element %s missing', $elementName)
- );
- }
-
- return $element;
- }
-
- /**
- * @param $elementName
- *
- * @return DOMNodeList
- *
- * @throws ManifestElementException
- */
- protected function getChildrenByName($elementName) {
- $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName);
-
- if ($elementList->length === 0) {
- throw new ManifestElementException(
- sprintf('Element(s) %s missing', $elementName)
- );
- }
-
- return $elementList;
- }
-
- /**
- * @param string $elementName
- *
- * @return bool
- */
- protected function hasChild($elementName) {
- return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0;
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/PhpElement.php b/vendor/phar-io/manifest/src/xml/PhpElement.php
deleted file mode 100644
index e7340c0..0000000
--- a/vendor/phar-io/manifest/src/xml/PhpElement.php
+++ /dev/null
@@ -1,27 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class PhpElement extends ManifestElement {
- public function getVersion() {
- return $this->getAttributeValue('version');
- }
-
- public function hasExtElements() {
- return $this->hasChild('ext');
- }
-
- public function getExtElements() {
- return new ExtElementCollection(
- $this->getChildrenByName('ext')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/src/xml/RequiresElement.php b/vendor/phar-io/manifest/src/xml/RequiresElement.php
deleted file mode 100644
index 5f41b2e..0000000
--- a/vendor/phar-io/manifest/src/xml/RequiresElement.php
+++ /dev/null
@@ -1,19 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-class RequiresElement extends ManifestElement {
- public function getPHPElement() {
- return new PhpElement(
- $this->getChildByName('php')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php b/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php
deleted file mode 100644
index e261231..0000000
--- a/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-assertInstanceOf(
- Manifest::class,
- $mapper->map($manifestDocument)
- );
- }
-
- public function dataProvider() {
- return [
- 'application' => [__DIR__ . '/_fixture/phpunit-5.6.5.xml'],
- 'library' => [__DIR__ . '/_fixture/library.xml'],
- 'extension' => [__DIR__ . '/_fixture/extension.xml']
- ];
- }
-
- public function testThrowsExceptionOnUnsupportedType() {
- $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/custom.xml');
- $mapper = new ManifestDocumentMapper();
-
- $this->expectException(ManifestDocumentMapperException::class);
- $mapper->map($manifestDocument);
- }
-
- public function testInvalidVersionInformationThrowsException() {
- $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversion.xml');
- $mapper = new ManifestDocumentMapper();
-
- $this->expectException(ManifestDocumentMapperException::class);
- $mapper->map($manifestDocument);
- }
-
- public function testInvalidVersionConstraintThrowsException() {
- $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversionconstraint.xml');
- $mapper = new ManifestDocumentMapper();
-
- $this->expectException(ManifestDocumentMapperException::class);
- $mapper->map($manifestDocument);
- }
-
- /**
- * @uses \PharIo\Manifest\ExtensionElement
- */
- public function testInvalidCompatibleConstraintThrowsException() {
- $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/extension-invalidcompatible.xml');
- $mapper = new ManifestDocumentMapper();
-
- $this->expectException(ManifestDocumentMapperException::class);
- $mapper->map($manifestDocument);
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/ManifestLoaderTest.php b/vendor/phar-io/manifest/tests/ManifestLoaderTest.php
deleted file mode 100644
index 73b682e..0000000
--- a/vendor/phar-io/manifest/tests/ManifestLoaderTest.php
+++ /dev/null
@@ -1,83 +0,0 @@
-assertInstanceOf(
- Manifest::class,
- ManifestLoader::fromFile(__DIR__ . '/_fixture/library.xml')
- );
- }
-
- public function testCanBeLoadedFromString() {
- $this->assertInstanceOf(
- Manifest::class,
- ManifestLoader::fromString(
- file_get_contents(__DIR__ . '/_fixture/library.xml')
- )
- );
- }
-
- public function testCanBeLoadedFromPhar() {
- $this->assertInstanceOf(
- Manifest::class,
- ManifestLoader::fromPhar(__DIR__ . '/_fixture/test.phar')
- );
-
- }
-
- public function testLoadingNonExistingFileThrowsException() {
- $this->expectException(ManifestLoaderException::class);
- ManifestLoader::fromFile('/not/existing');
- }
-
- /**
- * @uses \PharIo\Manifest\ManifestDocumentLoadingException
- */
- public function testLoadingInvalidXmlThrowsException() {
- $this->expectException(ManifestLoaderException::class);
- ManifestLoader::fromString('');
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/ManifestSerializerTest.php b/vendor/phar-io/manifest/tests/ManifestSerializerTest.php
deleted file mode 100644
index 4433020..0000000
--- a/vendor/phar-io/manifest/tests/ManifestSerializerTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-assertXmlStringEqualsXmlString(
- $expected,
- $serializer->serializeToString($manifest)
- );
- }
-
- public function dataProvider() {
- return [
- 'application' => [file_get_contents(__DIR__ . '/_fixture/phpunit-5.6.5.xml')],
- 'library' => [file_get_contents(__DIR__ . '/_fixture/library.xml')],
- 'extension' => [file_get_contents(__DIR__ . '/_fixture/extension.xml')]
- ];
- }
-
- /**
- * @uses \PharIo\Manifest\Library
- * @uses \PharIo\Manifest\ApplicationName
- */
- public function testCanSerializeToFile() {
- $src = __DIR__ . '/_fixture/library.xml';
- $dest = '/tmp/' . uniqid('serializer', true);
- $manifest = ManifestLoader::fromFile($src);
- $serializer = new ManifestSerializer();
- $serializer->serializeToFile($manifest, $dest);
- $this->assertXmlFileEqualsXmlFile($src, $dest);
- unlink($dest);
- }
-
- /**
- * @uses \PharIo\Manifest\ApplicationName
- */
- public function testCanHandleUnknownType() {
- $type = $this->getMockForAbstractClass(Type::class);
- $manifest = new Manifest(
- new ApplicationName('testvendor/testname'),
- new Version('1.0.0'),
- $type,
- new CopyrightInformation(
- new AuthorCollection(),
- new License('bsd-3', new Url('https://some/uri'))
- ),
- new RequirementCollection(),
- new BundledComponentCollection()
- );
-
- $serializer = new ManifestSerializer();
- $this->assertXmlStringEqualsXmlFile(
- __DIR__ . '/_fixture/custom.xml',
- $serializer->serializeToString($manifest)
- );
- }
-}
diff --git a/vendor/phar-io/manifest/tests/_fixture/custom.xml b/vendor/phar-io/manifest/tests/_fixture/custom.xml
deleted file mode 100644
index 4f43828..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/custom.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml b/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml
deleted file mode 100644
index a78111c..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/extension.xml b/vendor/phar-io/manifest/tests/_fixture/extension.xml
deleted file mode 100644
index a870aee..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/extension.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml b/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml
deleted file mode 100644
index 788dd4c..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml b/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml
deleted file mode 100644
index f881f8b..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/library.xml b/vendor/phar-io/manifest/tests/_fixture/library.xml
deleted file mode 100644
index a5e2523..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/library.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/manifest.xml b/vendor/phar-io/manifest/tests/_fixture/manifest.xml
deleted file mode 100644
index a5e2523..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/manifest.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml b/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml
deleted file mode 100644
index aadbea2..0000000
--- a/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/manifest/tests/_fixture/test.phar b/vendor/phar-io/manifest/tests/_fixture/test.phar
deleted file mode 100644
index d2a3e39..0000000
Binary files a/vendor/phar-io/manifest/tests/_fixture/test.phar and /dev/null differ
diff --git a/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php b/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php
deleted file mode 100644
index d87e84e..0000000
--- a/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-loadXML('');
- $exception = new ManifestDocumentLoadingException(libxml_get_errors());
- libxml_use_internal_errors($prev);
-
- $this->assertContainsOnlyInstancesOf(LibXMLError::class, $exception->getLibxmlErrors());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php b/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php
deleted file mode 100644
index c959415..0000000
--- a/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-assertInstanceOf(
- ApplicationName::class,
- new ApplicationName('foo/bar')
- );
- }
-
- public function testUsingInvalidFormatForNameThrowsException() {
- $this->expectException(InvalidApplicationNameException::class);
- $this->expectExceptionCode(InvalidApplicationNameException::InvalidFormat);
- new ApplicationName('foo');
- }
-
- public function testUsingWrongTypeForNameThrowsException() {
- $this->expectException(InvalidApplicationNameException::class);
- $this->expectExceptionCode(InvalidApplicationNameException::NotAString);
- new ApplicationName(123);
- }
-
- public function testReturnsTrueForEqualNamesWhenCompared() {
- $app = new ApplicationName('foo/bar');
- $this->assertTrue(
- $app->isEqual($app)
- );
- }
-
- public function testReturnsFalseForNonEqualNamesWhenCompared() {
- $app1 = new ApplicationName('foo/bar');
- $app2 = new ApplicationName('foo/foo');
- $this->assertFalse(
- $app1->isEqual($app2)
- );
- }
-
- public function testCanBeConvertedToString() {
- $this->assertEquals(
- 'foo/bar',
- new ApplicationName('foo/bar')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/ApplicationTest.php b/vendor/phar-io/manifest/tests/values/ApplicationTest.php
deleted file mode 100644
index 86b5da6..0000000
--- a/vendor/phar-io/manifest/tests/values/ApplicationTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\Application
- * @covers PharIo\Manifest\Type
- */
-class ApplicationTest extends TestCase {
- /**
- * @var Application
- */
- private $type;
-
- protected function setUp() {
- $this->type = Type::application();
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(Application::class, $this->type);
- }
-
- public function testIsApplication() {
- $this->assertTrue($this->type->isApplication());
- }
-
- public function testIsNotLibrary() {
- $this->assertFalse($this->type->isLibrary());
- }
-
- public function testIsNotExtension() {
- $this->assertFalse($this->type->isExtension());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php b/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php
deleted file mode 100644
index 0fa1b95..0000000
--- a/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Manifest\AuthorCollection
- * @covers \PharIo\Manifest\AuthorCollectionIterator
- *
- * @uses \PharIo\Manifest\Author
- * @uses \PharIo\Manifest\Email
- */
-class AuthorCollectionTest extends TestCase {
- /**
- * @var AuthorCollection
- */
- private $collection;
-
- /**
- * @var Author
- */
- private $item;
-
- protected function setUp() {
- $this->collection = new AuthorCollection;
- $this->item = new Author('Joe Developer', new Email('user@example.com'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(AuthorCollection::class, $this->collection);
- }
-
- public function testCanBeCounted() {
- $this->collection->add($this->item);
-
- $this->assertCount(1, $this->collection);
- }
-
- public function testCanBeIterated() {
- $this->collection->add(
- new Author('Dummy First', new Email('dummy@example.com'))
- );
- $this->collection->add($this->item);
- $this->assertContains($this->item, $this->collection);
- }
-
- public function testKeyPositionCanBeRetreived() {
- $this->collection->add($this->item);
- foreach($this->collection as $key => $item) {
- $this->assertEquals(0, $key);
- }
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/AuthorTest.php b/vendor/phar-io/manifest/tests/values/AuthorTest.php
deleted file mode 100644
index b7317fa..0000000
--- a/vendor/phar-io/manifest/tests/values/AuthorTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\Author
- *
- * @uses PharIo\Manifest\Email
- */
-class AuthorTest extends TestCase {
- /**
- * @var Author
- */
- private $author;
-
- protected function setUp() {
- $this->author = new Author('Joe Developer', new Email('user@example.com'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(Author::class, $this->author);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('Joe Developer', $this->author->getName());
- }
-
- public function testEmailCanBeRetrieved() {
- $this->assertEquals('user@example.com', $this->author->getEmail());
- }
-
- public function testCanBeUsedAsString() {
- $this->assertEquals('Joe Developer ', $this->author);
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php b/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php
deleted file mode 100644
index 66cd0c4..0000000
--- a/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Manifest\BundledComponentCollection
- * @covers \PharIo\Manifest\BundledComponentCollectionIterator
- *
- * @uses \PharIo\Manifest\BundledComponent
- * @uses \PharIo\Version\Version
- */
-class BundledComponentCollectionTest extends TestCase {
- /**
- * @var BundledComponentCollection
- */
- private $collection;
-
- /**
- * @var BundledComponent
- */
- private $item;
-
- protected function setUp() {
- $this->collection = new BundledComponentCollection;
- $this->item = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(BundledComponentCollection::class, $this->collection);
- }
-
- public function testCanBeCounted() {
- $this->collection->add($this->item);
-
- $this->assertCount(1, $this->collection);
- }
-
- public function testCanBeIterated() {
- $this->collection->add($this->createMock(BundledComponent::class));
- $this->collection->add($this->item);
-
- $this->assertContains($this->item, $this->collection);
- }
-
- public function testKeyPositionCanBeRetreived() {
- $this->collection->add($this->item);
- foreach($this->collection as $key => $item) {
- $this->assertEquals(0, $key);
- }
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/values/BundledComponentTest.php b/vendor/phar-io/manifest/tests/values/BundledComponentTest.php
deleted file mode 100644
index 01b8e13..0000000
--- a/vendor/phar-io/manifest/tests/values/BundledComponentTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\BundledComponent
- *
- * @uses \PharIo\Version\Version
- */
-class BundledComponentTest extends TestCase {
- /**
- * @var BundledComponent
- */
- private $bundledComponent;
-
- protected function setUp() {
- $this->bundledComponent = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(BundledComponent::class, $this->bundledComponent);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('phpunit/php-code-coverage', $this->bundledComponent->getName());
- }
-
- public function testVersionCanBeRetrieved() {
- $this->assertEquals('4.0.2', $this->bundledComponent->getVersion()->getVersionString());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php b/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php
deleted file mode 100644
index de738f4..0000000
--- a/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\CopyrightInformation
- *
- * @uses PharIo\Manifest\AuthorCollection
- * @uses PharIo\Manifest\AuthorCollectionIterator
- * @uses PharIo\Manifest\Author
- * @uses PharIo\Manifest\Email
- * @uses PharIo\Manifest\License
- * @uses PharIo\Manifest\Url
- */
-class CopyrightInformationTest extends TestCase {
- /**
- * @var CopyrightInformation
- */
- private $copyrightInformation;
-
- /**
- * @var Author
- */
- private $author;
-
- /**
- * @var License
- */
- private $license;
-
- protected function setUp() {
- $this->author = new Author('Joe Developer', new Email('user@example.com'));
- $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
-
- $authors = new AuthorCollection;
- $authors->add($this->author);
-
- $this->copyrightInformation = new CopyrightInformation($authors, $this->license);
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(CopyrightInformation::class, $this->copyrightInformation);
- }
-
- public function testAuthorsCanBeRetrieved() {
- $this->assertContains($this->author, $this->copyrightInformation->getAuthors());
- }
-
- public function testLicenseCanBeRetrieved() {
- $this->assertEquals($this->license, $this->copyrightInformation->getLicense());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/EmailTest.php b/vendor/phar-io/manifest/tests/values/EmailTest.php
deleted file mode 100644
index ee38531..0000000
--- a/vendor/phar-io/manifest/tests/values/EmailTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\Email
- */
-class EmailTest extends TestCase {
- public function testCanBeCreatedForValidEmail() {
- $this->assertInstanceOf(Email::class, new Email('user@example.com'));
- }
-
- public function testCanBeUsedAsString() {
- $this->assertEquals('user@example.com', new Email('user@example.com'));
- }
-
- /**
- * @covers PharIo\Manifest\InvalidEmailException
- */
- public function testCannotBeCreatedForInvalidEmail() {
- $this->expectException(InvalidEmailException::class);
-
- new Email('invalid');
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/ExtensionTest.php b/vendor/phar-io/manifest/tests/values/ExtensionTest.php
deleted file mode 100644
index 1c9d676..0000000
--- a/vendor/phar-io/manifest/tests/values/ExtensionTest.php
+++ /dev/null
@@ -1,109 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\AnyVersionConstraint;
-use PharIo\Version\Version;
-use PharIo\Version\VersionConstraint;
-use PharIo\Version\VersionConstraintParser;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Manifest\Extension
- * @covers \PharIo\Manifest\Type
- *
- * @uses \PharIo\Version\VersionConstraint
- * @uses \PharIo\Manifest\ApplicationName
- */
-class ExtensionTest extends TestCase {
- /**
- * @var Extension
- */
- private $type;
-
- /**
- * @var ApplicationName|\PHPUnit_Framework_MockObject_MockObject
- */
- private $name;
-
- protected function setUp() {
- $this->name = $this->createMock(ApplicationName::class);
- $this->type = Type::extension($this->name, new AnyVersionConstraint);
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(Extension::class, $this->type);
- }
-
- public function testIsNotApplication() {
- $this->assertFalse($this->type->isApplication());
- }
-
- public function testIsNotLibrary() {
- $this->assertFalse($this->type->isLibrary());
- }
-
- public function testIsExtension() {
- $this->assertTrue($this->type->isExtension());
- }
-
- public function testApplicationCanBeRetrieved()
- {
- $this->assertInstanceOf(ApplicationName::class, $this->type->getApplicationName());
- }
-
- public function testVersionConstraintCanBeRetrieved() {
- $this->assertInstanceOf(
- VersionConstraint::class,
- $this->type->getVersionConstraint()
- );
- }
-
- public function testApplicationCanBeQueried()
- {
- $this->name->method('isEqual')->willReturn(true);
- $this->assertTrue(
- $this->type->isExtensionFor($this->createMock(ApplicationName::class))
- );
- }
-
- public function testCompatibleWithReturnsTrueForMatchingVersionConstraintAndApplicaiton() {
- $app = new ApplicationName('foo/bar');
- $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
- $version = new Version('1.0.0');
-
- $this->assertTrue(
- $extension->isCompatibleWith($app, $version)
- );
- }
-
- public function testCompatibleWithReturnsFalseForNotMatchingVersionConstraint() {
- $app = new ApplicationName('foo/bar');
- $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
- $version = new Version('2.0.0');
-
- $this->assertFalse(
- $extension->isCompatibleWith($app, $version)
- );
- }
-
- public function testCompatibleWithReturnsFalseForNotMatchingApplication() {
- $app1 = new ApplicationName('foo/bar');
- $app2 = new ApplicationName('foo/foo');
- $extension = Type::extension($app1, (new VersionConstraintParser)->parse('^1.0'));
- $version = new Version('1.0.0');
-
- $this->assertFalse(
- $extension->isCompatibleWith($app2, $version)
- );
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/values/LibraryTest.php b/vendor/phar-io/manifest/tests/values/LibraryTest.php
deleted file mode 100644
index f8d1c64..0000000
--- a/vendor/phar-io/manifest/tests/values/LibraryTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\Library
- * @covers PharIo\Manifest\Type
- */
-class LibraryTest extends TestCase {
- /**
- * @var Library
- */
- private $type;
-
- protected function setUp() {
- $this->type = Type::library();
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(Library::class, $this->type);
- }
-
- public function testIsNotApplication() {
- $this->assertFalse($this->type->isApplication());
- }
-
- public function testIsLibrary() {
- $this->assertTrue($this->type->isLibrary());
- }
-
- public function testIsNotExtension() {
- $this->assertFalse($this->type->isExtension());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/LicenseTest.php b/vendor/phar-io/manifest/tests/values/LicenseTest.php
deleted file mode 100644
index c9c5c3c..0000000
--- a/vendor/phar-io/manifest/tests/values/LicenseTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\License
- *
- * @uses PharIo\Manifest\Url
- */
-class LicenseTest extends TestCase {
- /**
- * @var License
- */
- private $license;
-
- protected function setUp() {
- $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(License::class, $this->license);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('BSD-3-Clause', $this->license->getName());
- }
-
- public function testUrlCanBeRetrieved() {
- $this->assertEquals('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE', $this->license->getUrl());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/ManifestTest.php b/vendor/phar-io/manifest/tests/values/ManifestTest.php
deleted file mode 100644
index cff0a68..0000000
--- a/vendor/phar-io/manifest/tests/values/ManifestTest.php
+++ /dev/null
@@ -1,187 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\Version;
-use PharIo\Version\AnyVersionConstraint;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Manifest\Manifest
- *
- * @uses \PharIo\Manifest\ApplicationName
- * @uses \PharIo\Manifest\Author
- * @uses \PharIo\Manifest\AuthorCollection
- * @uses \PharIo\Manifest\BundledComponent
- * @uses \PharIo\Manifest\BundledComponentCollection
- * @uses \PharIo\Manifest\CopyrightInformation
- * @uses \PharIo\Manifest\Email
- * @uses \PharIo\Manifest\License
- * @uses \PharIo\Manifest\RequirementCollection
- * @uses \PharIo\Manifest\PhpVersionRequirement
- * @uses \PharIo\Manifest\Type
- * @uses \PharIo\Manifest\Application
- * @uses \PharIo\Manifest\Url
- * @uses \PharIo\Version\Version
- * @uses \PharIo\Version\VersionConstraint
- */
-class ManifestTest extends TestCase {
- /**
- * @var ApplicationName
- */
- private $name;
-
- /**
- * @var Version
- */
- private $version;
-
- /**
- * @var Type
- */
- private $type;
-
- /**
- * @var CopyrightInformation
- */
- private $copyrightInformation;
-
- /**
- * @var RequirementCollection
- */
- private $requirements;
-
- /**
- * @var BundledComponentCollection
- */
- private $bundledComponents;
-
- /**
- * @var Manifest
- */
- private $manifest;
-
- protected function setUp() {
- $this->version = new Version('5.6.5');
-
- $this->type = Type::application();
-
- $author = new Author('Joe Developer', new Email('user@example.com'));
- $license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
-
- $authors = new AuthorCollection;
- $authors->add($author);
-
- $this->copyrightInformation = new CopyrightInformation($authors, $license);
-
- $this->requirements = new RequirementCollection;
- $this->requirements->add(new PhpVersionRequirement(new AnyVersionConstraint));
-
- $this->bundledComponents = new BundledComponentCollection;
- $this->bundledComponents->add(new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2')));
-
- $this->name = new ApplicationName('phpunit/phpunit');
-
- $this->manifest = new Manifest(
- $this->name,
- $this->version,
- $this->type,
- $this->copyrightInformation,
- $this->requirements,
- $this->bundledComponents
- );
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(Manifest::class, $this->manifest);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals($this->name, $this->manifest->getName());
- }
-
- public function testVersionCanBeRetrieved() {
- $this->assertEquals($this->version, $this->manifest->getVersion());
- }
-
- public function testTypeCanBeRetrieved() {
- $this->assertEquals($this->type, $this->manifest->getType());
- }
-
- public function testTypeCanBeQueried() {
- $this->assertTrue($this->manifest->isApplication());
- $this->assertFalse($this->manifest->isLibrary());
- $this->assertFalse($this->manifest->isExtension());
- }
-
- public function testCopyrightInformationCanBeRetrieved() {
- $this->assertEquals($this->copyrightInformation, $this->manifest->getCopyrightInformation());
- }
-
- public function testRequirementsCanBeRetrieved() {
- $this->assertEquals($this->requirements, $this->manifest->getRequirements());
- }
-
- public function testBundledComponentsCanBeRetrieved() {
- $this->assertEquals($this->bundledComponents, $this->manifest->getBundledComponents());
- }
-
- /**
- * @uses \PharIo\Manifest\Extension
- */
- public function testExtendedApplicationCanBeQueriedForExtension()
- {
- $appName = new ApplicationName('foo/bar');
- $manifest = new Manifest(
- new ApplicationName('foo/foo'),
- new Version('1.0.0'),
- Type::extension($appName, new AnyVersionConstraint),
- $this->copyrightInformation,
- new RequirementCollection,
- new BundledComponentCollection
- );
-
- $this->assertTrue($manifest->isExtensionFor($appName));
- }
-
- public function testNonExtensionReturnsFalseWhenQueriesForExtension() {
- $appName = new ApplicationName('foo/bar');
- $manifest = new Manifest(
- new ApplicationName('foo/foo'),
- new Version('1.0.0'),
- Type::library(),
- $this->copyrightInformation,
- new RequirementCollection,
- new BundledComponentCollection
- );
-
- $this->assertFalse($manifest->isExtensionFor($appName));
- }
-
- /**
- * @uses \PharIo\Manifest\Extension
- */
- public function testExtendedApplicationCanBeQueriedForExtensionWithVersion()
- {
- $appName = new ApplicationName('foo/bar');
- $manifest = new Manifest(
- new ApplicationName('foo/foo'),
- new Version('1.0.0'),
- Type::extension($appName, new AnyVersionConstraint),
- $this->copyrightInformation,
- new RequirementCollection,
- new BundledComponentCollection
- );
-
- $this->assertTrue($manifest->isExtensionFor($appName, new Version('1.2.3')));
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php b/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php
deleted file mode 100644
index ae1c058..0000000
--- a/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\PhpExtensionRequirement
- */
-class PhpExtensionRequirementTest extends TestCase {
- public function testCanBeCreated() {
- $this->assertInstanceOf(PhpExtensionRequirement::class, new PhpExtensionRequirement('dom'));
- }
-
- public function testCanBeUsedAsString() {
- $this->assertEquals('dom', new PhpExtensionRequirement('dom'));
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php b/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php
deleted file mode 100644
index 67ac41a..0000000
--- a/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\ExactVersionConstraint;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\PhpVersionRequirement
- *
- * @uses \PharIo\Version\VersionConstraint
- */
-class PhpVersionRequirementTest extends TestCase {
- /**
- * @var PhpVersionRequirement
- */
- private $requirement;
-
- protected function setUp() {
- $this->requirement = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(PhpVersionRequirement::class, $this->requirement);
- }
-
- public function testVersionConstraintCanBeRetrieved() {
- $this->assertEquals('7.1.0', $this->requirement->getVersionConstraint()->asString());
- }
-}
diff --git a/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php b/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php
deleted file mode 100644
index 2afeb1a..0000000
--- a/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PharIo\Version\ExactVersionConstraint;
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Manifest\RequirementCollection
- * @covers \PharIo\Manifest\RequirementCollectionIterator
- *
- * @uses \PharIo\Manifest\PhpVersionRequirement
- * @uses \PharIo\Version\VersionConstraint
- */
-class RequirementCollectionTest extends TestCase {
- /**
- * @var RequirementCollection
- */
- private $collection;
-
- /**
- * @var Requirement
- */
- private $item;
-
- protected function setUp() {
- $this->collection = new RequirementCollection;
- $this->item = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0'));
- }
-
- public function testCanBeCreated() {
- $this->assertInstanceOf(RequirementCollection::class, $this->collection);
- }
-
- public function testCanBeCounted() {
- $this->collection->add($this->item);
-
- $this->assertCount(1, $this->collection);
- }
-
- public function testCanBeIterated() {
- $this->collection->add(new PhpVersionRequirement(new ExactVersionConstraint('5.6.0')));
- $this->collection->add($this->item);
-
- $this->assertContains($this->item, $this->collection);
- }
-
- public function testKeyPositionCanBeRetreived() {
- $this->collection->add($this->item);
- foreach($this->collection as $key => $item) {
- $this->assertEquals(0, $key);
- }
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/values/UrlTest.php b/vendor/phar-io/manifest/tests/values/UrlTest.php
deleted file mode 100644
index 20f09c1..0000000
--- a/vendor/phar-io/manifest/tests/values/UrlTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Manifest;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Manifest\Url
- */
-class UrlTest extends TestCase {
- public function testCanBeCreatedForValidUrl() {
- $this->assertInstanceOf(Url::class, new Url('https://phar.io/'));
- }
-
- public function testCanBeUsedAsString() {
- $this->assertEquals('https://phar.io/', new Url('https://phar.io/'));
- }
-
- /**
- * @covers PharIo\Manifest\InvalidUrlException
- */
- public function testCannotBeCreatedForInvalidUrl() {
- $this->expectException(InvalidUrlException::class);
-
- new Url('invalid');
- }
-}
diff --git a/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php b/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php
deleted file mode 100644
index 327a7e3..0000000
--- a/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-loadXML('');
- $collection = new AuthorElementCollection($dom->childNodes);
-
- foreach($collection as $authorElement) {
- $this->assertInstanceOf(AuthorElement::class, $authorElement);
- }
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php b/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php
deleted file mode 100644
index 430c0ca..0000000
--- a/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-loadXML('');
- $this->author = new AuthorElement($dom->documentElement);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('Reiner Zufall', $this->author->getName());
- }
-
- public function testEmailCanBeRetrieved() {
- $this->assertEquals('reiner@zufall.de', $this->author->getEmail());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php b/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php
deleted file mode 100644
index 7972617..0000000
--- a/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-dom = new DOMDocument();
- $this->dom->loadXML('');
- $this->bundles = new BundlesElement($this->dom->documentElement);
- }
-
- public function testThrowsExceptionWhenGetComponentElementsIsCalledButNodesAreMissing() {
- $this->expectException(ManifestElementException::class);
- $this->bundles->getComponentElements();
- }
-
- public function testGetComponentElementsReturnsComponentElementCollection() {
- $this->addComponent();
- $this->assertInstanceOf(
- ComponentElementCollection::class, $this->bundles->getComponentElements()
- );
- }
-
- private function addComponent() {
- $this->dom->documentElement->appendChild(
- $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'component')
- );
- }
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php b/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php
deleted file mode 100644
index 3a2716f..0000000
--- a/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php
+++ /dev/null
@@ -1,18 +0,0 @@
-loadXML('');
- $collection = new ComponentElementCollection($dom->childNodes);
-
- foreach($collection as $componentElement) {
- $this->assertInstanceOf(ComponentElement::class, $componentElement);
- }
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php b/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php
deleted file mode 100644
index ab89fbd..0000000
--- a/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-loadXML('');
- $this->component = new ComponentElement($dom->documentElement);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('phar-io/phive', $this->component->getName());
- }
-
- public function testEmailCanBeRetrieved() {
- $this->assertEquals('0.6.0', $this->component->getVersion());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php b/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php
deleted file mode 100644
index f77313d..0000000
--- a/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-loadXML('');
- $this->domElement = $dom->documentElement;
- $this->contains = new ContainsElement($this->domElement);
- }
-
- public function testVersionCanBeRetrieved() {
- $this->assertEquals('5.6.5', $this->contains->getVersion());
- }
-
- public function testThrowsExceptionWhenVersionAttributeIsMissing() {
- $this->domElement->removeAttribute('version');
- $this->expectException(ManifestElementException::class);
- $this->contains->getVersion();
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('phpunit/phpunit', $this->contains->getName());
- }
-
- public function testThrowsExceptionWhenNameAttributeIsMissing() {
- $this->domElement->removeAttribute('name');
- $this->expectException(ManifestElementException::class);
- $this->contains->getName();
- }
-
- public function testTypeCanBeRetrieved() {
- $this->assertEquals('application', $this->contains->getType());
- }
-
- public function testThrowsExceptionWhenTypeAttributeIsMissing() {
- $this->domElement->removeAttribute('type');
- $this->expectException(ManifestElementException::class);
- $this->contains->getType();
- }
-
- public function testGetExtensionElementReturnsExtensionElement() {
- $this->domElement->appendChild(
- $this->domElement->ownerDocument->createElementNS('https://phar.io/xml/manifest/1.0', 'extension')
- );
- $this->assertInstanceOf(ExtensionElement::class, $this->contains->getExtensionElement());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php b/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php
deleted file mode 100644
index 9ad8eb3..0000000
--- a/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-dom = new DOMDocument();
- $this->dom->loadXML('');
- $this->copyright = new CopyrightElement($this->dom->documentElement);
- }
-
- public function testThrowsExceptionWhenGetAuthroElementsIsCalledButNodesAreMissing() {
- $this->expectException(ManifestElementException::class);
- $this->copyright->getAuthorElements();
- }
-
- public function testThrowsExceptionWhenGetLicenseElementIsCalledButNodeIsMissing() {
- $this->expectException(ManifestElementException::class);
- $this->copyright->getLicenseElement();
- }
-
- public function testGetAuthorElementsReturnsAuthorElementCollection() {
- $this->dom->documentElement->appendChild(
- $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'author')
- );
- $this->assertInstanceOf(
- AuthorElementCollection::class, $this->copyright->getAuthorElements()
- );
- }
-
- public function testGetLicenseElementReturnsLicenseElement() {
- $this->dom->documentElement->appendChild(
- $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'license')
- );
- $this->assertInstanceOf(
- LicenseElement::class, $this->copyright->getLicenseElement()
- );
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php b/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php
deleted file mode 100644
index 463e4d6..0000000
--- a/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-loadXML('');
- $collection = new ExtElementCollection($dom->childNodes);
-
- foreach($collection as $position => $extElement) {
- $this->assertInstanceOf(ExtElement::class, $extElement);
- $this->assertEquals(0, $position);
- }
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ExtElementTest.php b/vendor/phar-io/manifest/tests/xml/ExtElementTest.php
deleted file mode 100644
index 097b522..0000000
--- a/vendor/phar-io/manifest/tests/xml/ExtElementTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-loadXML('');
- $this->ext = new ExtElement($dom->documentElement);
- }
-
- public function testNameCanBeRetrieved() {
- $this->assertEquals('dom', $this->ext->getName());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php b/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php
deleted file mode 100644
index 2ae0112..0000000
--- a/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-loadXML('');
- $this->extension = new ExtensionElement($dom->documentElement);
- }
-
- public function testNForCanBeRetrieved() {
- $this->assertEquals('phar-io/phive', $this->extension->getFor());
- }
-
- public function testCompatibleVersionConstraintCanBeRetrieved() {
- $this->assertEquals('~0.6', $this->extension->getCompatible());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php b/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php
deleted file mode 100644
index 00d4a6c..0000000
--- a/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-loadXML('');
- $this->license = new LicenseElement($dom->documentElement);
- }
-
- public function testTypeCanBeRetrieved() {
- $this->assertEquals('BSD-3', $this->license->getType());
- }
-
- public function testUrlCanBeRetrieved() {
- $this->assertEquals('https://some.tld/LICENSE', $this->license->getUrl());
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php b/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php
deleted file mode 100644
index b5bb8cd..0000000
--- a/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-expectException(ManifestDocumentException::class);
- ManifestDocument::fromFile('/does/not/exist');
- }
-
- public function testCanBeCreatedFromFile() {
- $this->assertInstanceOf(
- ManifestDocument::class,
- ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml')
- );
- }
-
- public function testCaneBeConstructedFromString() {
- $content = file_get_contents(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
- $this->assertInstanceOf(
- ManifestDocument::class,
- ManifestDocument::fromString($content)
- );
- }
-
- public function testThrowsExceptionOnInvalidXML() {
- $this->expectException(ManifestDocumentLoadingException::class);
- ManifestDocument::fromString('');
- }
-
- public function testLoadingDocumentWithWrongRootNameThrowsException() {
- $this->expectException(ManifestDocumentException::class);
- ManifestDocument::fromString('');
- }
-
- public function testLoadingDocumentWithWrongNamespaceThrowsException() {
- $this->expectException(ManifestDocumentException::class);
- ManifestDocument::fromString('');
- }
-
- public function testContainsElementCanBeRetrieved() {
- $this->assertInstanceOf(
- ContainsElement::class,
- $this->loadFixture()->getContainsElement()
- );
- }
-
- public function testRequiresElementCanBeRetrieved() {
- $this->assertInstanceOf(
- RequiresElement::class,
- $this->loadFixture()->getRequiresElement()
- );
- }
-
- public function testCopyrightElementCanBeRetrieved() {
- $this->assertInstanceOf(
- CopyrightElement::class,
- $this->loadFixture()->getCopyrightElement()
- );
- }
-
- public function testBundlesElementCanBeRetrieved() {
- $this->assertInstanceOf(
- BundlesElement::class,
- $this->loadFixture()->getBundlesElement()
- );
- }
-
- public function testThrowsExceptionWhenContainsIsMissing() {
- $this->expectException(ManifestDocumentException::class);
- $this->loadEmptyFixture()->getContainsElement();
- }
-
- public function testThrowsExceptionWhenCopyirhgtIsMissing() {
- $this->expectException(ManifestDocumentException::class);
- $this->loadEmptyFixture()->getCopyrightElement();
- }
-
- public function testThrowsExceptionWhenRequiresIsMissing() {
- $this->expectException(ManifestDocumentException::class);
- $this->loadEmptyFixture()->getRequiresElement();
- }
-
- public function testThrowsExceptionWhenBundlesIsMissing() {
- $this->expectException(ManifestDocumentException::class);
- $this->loadEmptyFixture()->getBundlesElement();
- }
-
- public function testHasBundlesReturnsTrueWhenBundlesNodeIsPresent() {
- $this->assertTrue(
- $this->loadFixture()->hasBundlesElement()
- );
- }
-
- public function testHasBundlesReturnsFalseWhenBundlesNoNodeIsPresent() {
- $this->assertFalse(
- $this->loadEmptyFixture()->hasBundlesElement()
- );
- }
-
- private function loadFixture() {
- return ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
- }
-
- private function loadEmptyFixture() {
- return ManifestDocument::fromString(
- ''
- );
- }
-}
diff --git a/vendor/phar-io/manifest/tests/xml/PhpElementTest.php b/vendor/phar-io/manifest/tests/xml/PhpElementTest.php
deleted file mode 100644
index 546187a..0000000
--- a/vendor/phar-io/manifest/tests/xml/PhpElementTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-dom = new DOMDocument();
- $this->dom->loadXML('');
- $this->php = new PhpElement($this->dom->documentElement);
- }
-
- public function testVersionConstraintCanBeRetrieved() {
- $this->assertEquals('^5.6 || ^7.0', $this->php->getVersion());
- }
-
- public function testHasExtElementsReturnsFalseWhenNoExtensionsAreRequired() {
- $this->assertFalse($this->php->hasExtElements());
- }
-
- public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() {
- $this->addExtElement();
- $this->assertTrue($this->php->hasExtElements());
- }
-
- public function testGetExtElementsReturnsExtElementCollection() {
- $this->addExtElement();
- $this->assertInstanceOf(ExtElementCollection::class, $this->php->getExtElements());
- }
-
- private function addExtElement() {
- $this->dom->documentElement->appendChild(
- $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'ext')
- );
- }
-
-}
diff --git a/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php b/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php
deleted file mode 100644
index 907b0a6..0000000
--- a/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-dom = new DOMDocument();
- $this->dom->loadXML('');
- $this->requires = new RequiresElement($this->dom->documentElement);
- }
-
- public function testThrowsExceptionWhenGetPhpElementIsCalledButElementIsMissing() {
- $this->expectException(ManifestElementException::class);
- $this->requires->getPHPElement();
- }
-
- public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() {
- $this->dom->documentElement->appendChild(
- $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'php')
- );
-
- $this->assertInstanceOf(PhpElement::class, $this->requires->getPHPElement());
- }
-
-}
diff --git a/vendor/phar-io/version/.gitignore b/vendor/phar-io/version/.gitignore
deleted file mode 100644
index 1c8f2e6..0000000
--- a/vendor/phar-io/version/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/.idea
-/.php_cs.cache
-/composer.lock
-/src/autoload.php
-/tools
-/vendor
-
diff --git a/vendor/phar-io/version/.travis.yml b/vendor/phar-io/version/.travis.yml
deleted file mode 100644
index b4be10f..0000000
--- a/vendor/phar-io/version/.travis.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-os:
-- linux
-
-language: php
-
-before_install:
- - wget https://phar.io/releases/phive.phar
- - wget https://phar.io/releases/phive.phar.asc
- - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79
- - gpg --verify phive.phar.asc phive.phar
- - chmod +x phive.phar
- - sudo mv phive.phar /usr/bin/phive
-
-install:
- - ant setup
-
-script: ./tools/phpunit
-
-php:
- - 5.6
- - 7.0
- - 7.1
- - 7.0snapshot
- - 7.1snapshot
- - master
-
-matrix:
- allow_failures:
- - php: master
- fast_finish: true
-
-notifications:
- email: false
diff --git a/vendor/phar-io/version/LICENSE b/vendor/phar-io/version/LICENSE
deleted file mode 100644
index 359dbc5..0000000
--- a/vendor/phar-io/version/LICENSE
+++ /dev/null
@@ -1,31 +0,0 @@
-phar-io/version
-
-Copyright (c) 2016-2017 Arne Blankerts , Sebastian Heuer and contributors
-All 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.
-
-* Neither the name of Arne Blankerts nor the names of contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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/phar-io/version/build.xml b/vendor/phar-io/version/build.xml
deleted file mode 100644
index 943c957..0000000
--- a/vendor/phar-io/version/build.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/phar-io/version/composer.json b/vendor/phar-io/version/composer.json
deleted file mode 100644
index 891e8b1..0000000
--- a/vendor/phar-io/version/composer.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "phar-io/version",
- "description": "Library for handling version information and constraints",
- "license": "BSD-3-Clause",
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "support": {
- "issues": "https://github.com/phar-io/version/issues"
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- }
-}
-
diff --git a/vendor/phar-io/version/phive.xml b/vendor/phar-io/version/phive.xml
deleted file mode 100644
index 0c3bc6f..0000000
--- a/vendor/phar-io/version/phive.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/vendor/phar-io/version/src/AbstractVersionConstraint.php b/vendor/phar-io/version/src/AbstractVersionConstraint.php
deleted file mode 100644
index b732dbc..0000000
--- a/vendor/phar-io/version/src/AbstractVersionConstraint.php
+++ /dev/null
@@ -1,32 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-abstract class AbstractVersionConstraint implements VersionConstraint {
- /**
- * @var string
- */
- private $originalValue = '';
-
- /**
- * @param string $originalValue
- */
- public function __construct($originalValue) {
- $this->originalValue = $originalValue;
- }
-
- /**
- * @return string
- */
- public function asString() {
- return $this->originalValue;
- }
-}
diff --git a/vendor/phar-io/version/src/AndVersionConstraintGroup.php b/vendor/phar-io/version/src/AndVersionConstraintGroup.php
deleted file mode 100644
index 455dcd1..0000000
--- a/vendor/phar-io/version/src/AndVersionConstraintGroup.php
+++ /dev/null
@@ -1,43 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class AndVersionConstraintGroup extends AbstractVersionConstraint {
- /**
- * @var VersionConstraint[]
- */
- private $constraints = [];
-
- /**
- * @param string $originalValue
- * @param VersionConstraint[] $constraints
- */
- public function __construct($originalValue, array $constraints) {
- parent::__construct($originalValue);
-
- $this->constraints = $constraints;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- foreach ($this->constraints as $constraint) {
- if (!$constraint->complies($version)) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/vendor/phar-io/version/src/AnyVersionConstraint.php b/vendor/phar-io/version/src/AnyVersionConstraint.php
deleted file mode 100644
index 13ca2ef..0000000
--- a/vendor/phar-io/version/src/AnyVersionConstraint.php
+++ /dev/null
@@ -1,29 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class AnyVersionConstraint implements VersionConstraint {
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- return true;
- }
-
- /**
- * @return string
- */
- public function asString() {
- return '*';
- }
-}
diff --git a/vendor/phar-io/version/src/ExactVersionConstraint.php b/vendor/phar-io/version/src/ExactVersionConstraint.php
deleted file mode 100644
index b214117..0000000
--- a/vendor/phar-io/version/src/ExactVersionConstraint.php
+++ /dev/null
@@ -1,22 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class ExactVersionConstraint extends AbstractVersionConstraint {
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- return $this->asString() == $version->getVersionString();
- }
-}
diff --git a/vendor/phar-io/version/src/Exception.php b/vendor/phar-io/version/src/Exception.php
deleted file mode 100644
index b99e4dd..0000000
--- a/vendor/phar-io/version/src/Exception.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-interface Exception {
-}
diff --git a/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php b/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php
deleted file mode 100644
index a237d79..0000000
--- a/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php
+++ /dev/null
@@ -1,38 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class GreaterThanOrEqualToVersionConstraint extends AbstractVersionConstraint {
- /**
- * @var Version
- */
- private $minimalVersion;
-
- /**
- * @param string $originalValue
- * @param Version $minimalVersion
- */
- public function __construct($originalValue, Version $minimalVersion) {
- parent::__construct($originalValue);
-
- $this->minimalVersion = $minimalVersion;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- return $version->getVersionString() == $this->minimalVersion->getVersionString() ||
- $version->isGreaterThan($this->minimalVersion);
- }
-}
diff --git a/vendor/phar-io/version/src/InvalidVersionException.php b/vendor/phar-io/version/src/InvalidVersionException.php
deleted file mode 100644
index e52f5d7..0000000
--- a/vendor/phar-io/version/src/InvalidVersionException.php
+++ /dev/null
@@ -1,5 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class OrVersionConstraintGroup extends AbstractVersionConstraint {
- /**
- * @var VersionConstraint[]
- */
- private $constraints = [];
-
- /**
- * @param string $originalValue
- * @param VersionConstraint[] $constraints
- */
- public function __construct($originalValue, array $constraints) {
- parent::__construct($originalValue);
-
- $this->constraints = $constraints;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- foreach ($this->constraints as $constraint) {
- if ($constraint->complies($version)) {
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/vendor/phar-io/version/src/PreReleaseSuffix.php b/vendor/phar-io/version/src/PreReleaseSuffix.php
deleted file mode 100644
index d9e7ee7..0000000
--- a/vendor/phar-io/version/src/PreReleaseSuffix.php
+++ /dev/null
@@ -1,41 +0,0 @@
-value = $value;
- $this->number = $number;
- }
-
- /**
- * @return string
- */
- public function getValue()
- {
- return $this->value;
- }
-
- /**
- * @return int|null
- */
- public function getNumber()
- {
- return $this->number;
- }
-}
diff --git a/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php b/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php
deleted file mode 100644
index dbeaa06..0000000
--- a/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php
+++ /dev/null
@@ -1,48 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class SpecificMajorAndMinorVersionConstraint extends AbstractVersionConstraint {
- /**
- * @var int
- */
- private $major = 0;
-
- /**
- * @var int
- */
- private $minor = 0;
-
- /**
- * @param string $originalValue
- * @param int $major
- * @param int $minor
- */
- public function __construct($originalValue, $major, $minor) {
- parent::__construct($originalValue);
-
- $this->major = $major;
- $this->minor = $minor;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- if ($version->getMajor()->getValue() != $this->major) {
- return false;
- }
-
- return $version->getMinor()->getValue() == $this->minor;
- }
-}
diff --git a/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php b/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php
deleted file mode 100644
index 51b12d9..0000000
--- a/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php
+++ /dev/null
@@ -1,37 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class SpecificMajorVersionConstraint extends AbstractVersionConstraint {
- /**
- * @var int
- */
- private $major = 0;
-
- /**
- * @param string $originalValue
- * @param int $major
- */
- public function __construct($originalValue, $major) {
- parent::__construct($originalValue);
-
- $this->major = $major;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version) {
- return $version->getMajor()->getValue() == $this->major;
- }
-}
diff --git a/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php b/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php
deleted file mode 100644
index 45488c2..0000000
--- a/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php
+++ /dev/null
@@ -1,14 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-final class UnsupportedVersionConstraintException extends \RuntimeException implements Exception {
-}
diff --git a/vendor/phar-io/version/src/Version.php b/vendor/phar-io/version/src/Version.php
deleted file mode 100644
index 825ed44..0000000
--- a/vendor/phar-io/version/src/Version.php
+++ /dev/null
@@ -1,162 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class Version {
- /**
- * @var VersionNumber
- */
- private $major;
-
- /**
- * @var VersionNumber
- */
- private $minor;
-
- /**
- * @var VersionNumber
- */
- private $patch;
-
- /**
- * @var PreReleaseSuffix
- */
- private $preReleaseSuffix;
-
- /**
- * @var string
- */
- private $versionString = '';
-
- /**
- * @param string $versionString
- */
- public function __construct($versionString) {
- $this->ensureVersionStringIsValid($versionString);
-
- $this->versionString = $versionString;
- }
-
- /**
- * @param array $matches
- */
- private function parseVersion(array $matches) {
- $this->major = new VersionNumber($matches['Major']);
- $this->minor = new VersionNumber($matches['Minor']);
- $this->patch = isset($matches['Patch']) ? new VersionNumber($matches['Patch']) : new VersionNumber(null);
-
- if (isset($matches['ReleaseType'])) {
- $preReleaseNumber = isset($matches['ReleaseTypeCount']) ? (int) $matches['ReleaseTypeCount'] : null;
-
- $this->preReleaseSuffix = new PreReleaseSuffix($matches['ReleaseType'], $preReleaseNumber);
- }
- }
-
- /**
- * @return PreReleaseSuffix
- */
- public function getPreReleaseSuffix()
- {
- return $this->preReleaseSuffix;
- }
-
- /**
- * @return string
- */
- public function getVersionString() {
- return $this->versionString;
- }
-
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function isGreaterThan(Version $version) {
- if ($version->getMajor()->getValue() > $this->getMajor()->getValue()) {
- return false;
- }
-
- if ($version->getMajor()->getValue() < $this->getMajor()->getValue()) {
- return true;
- }
-
- if ($version->getMinor()->getValue() > $this->getMinor()->getValue()) {
- return false;
- }
-
- if ($version->getMinor()->getValue() < $this->getMinor()->getValue()) {
- return true;
- }
-
- if ($version->getPatch()->getValue() >= $this->getPatch()->getValue()) {
- return false;
- }
-
- if ($version->getPatch()->getValue() < $this->getPatch()->getValue()) {
- return true;
- }
-
- return false;
- }
-
- /**
- * @return VersionNumber
- */
- public function getMajor() {
- return $this->major;
- }
-
- /**
- * @return VersionNumber
- */
- public function getMinor() {
- return $this->minor;
- }
-
- /**
- * @return VersionNumber
- */
- public function getPatch() {
- return $this->patch;
- }
-
- /**
- * @param string $version
- *
- * @throws InvalidVersionException
- */
- private function ensureVersionStringIsValid($version) {
- $regex = '/^v?
- (?(0|(?:[1-9][0-9]*)))
- \\.
- (?(0|(?:[1-9][0-9]*)))
- (\\.
- (?(0|(?:[1-9][0-9]*)))
- )?
- (?:
- -
- (?(?:(dev|beta|b|RC|alpha|a|patch|p)))
- (?:
- (?[0-9])
- )?
- )?
- $/x';
-
- if (preg_match($regex, $version, $matches) !== 1) {
- throw new InvalidVersionException(
- sprintf("Version string '%s' does not follow SemVer semantics", $version)
- );
- }
-
- $this->parseVersion($matches);
- }
-}
diff --git a/vendor/phar-io/version/src/VersionConstraint.php b/vendor/phar-io/version/src/VersionConstraint.php
deleted file mode 100644
index 9558163..0000000
--- a/vendor/phar-io/version/src/VersionConstraint.php
+++ /dev/null
@@ -1,26 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-interface VersionConstraint {
- /**
- * @param Version $version
- *
- * @return bool
- */
- public function complies(Version $version);
-
- /**
- * @return string
- */
- public function asString();
-
-}
diff --git a/vendor/phar-io/version/src/VersionConstraintParser.php b/vendor/phar-io/version/src/VersionConstraintParser.php
deleted file mode 100644
index 0a24f87..0000000
--- a/vendor/phar-io/version/src/VersionConstraintParser.php
+++ /dev/null
@@ -1,122 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class VersionConstraintParser {
- /**
- * @param string $value
- *
- * @return VersionConstraint
- *
- * @throws UnsupportedVersionConstraintException
- */
- public function parse($value) {
-
- if (strpos($value, '||') !== false) {
- return $this->handleOrGroup($value);
- }
-
- if (!preg_match('/^[\^~\*]?[\d.\*]+$/', $value)) {
- throw new UnsupportedVersionConstraintException(
- sprintf('Version constraint %s is not supported.', $value)
- );
- }
-
- switch ($value[0]) {
- case '~':
- return $this->handleTildeOperator($value);
- case '^':
- return $this->handleCaretOperator($value);
- }
-
- $version = new VersionConstraintValue($value);
-
- if ($version->getMajor()->isAny()) {
- return new AnyVersionConstraint();
- }
-
- if ($version->getMinor()->isAny()) {
- return new SpecificMajorVersionConstraint(
- $value,
- $version->getMajor()->getValue()
- );
- }
-
- if ($version->getPatch()->isAny()) {
- return new SpecificMajorAndMinorVersionConstraint(
- $value,
- $version->getMajor()->getValue(),
- $version->getMinor()->getValue()
- );
- }
-
- return new ExactVersionConstraint($value);
- }
-
- /**
- * @param $value
- *
- * @return OrVersionConstraintGroup
- */
- private function handleOrGroup($value) {
- $constraints = [];
-
- foreach (explode('||', $value) as $groupSegment) {
- $constraints[] = $this->parse(trim($groupSegment));
- }
-
- return new OrVersionConstraintGroup($value, $constraints);
- }
-
- /**
- * @param string $value
- *
- * @return AndVersionConstraintGroup
- */
- private function handleTildeOperator($value) {
- $version = new Version(substr($value, 1));
- $constraints = [
- new GreaterThanOrEqualToVersionConstraint($value, $version)
- ];
-
- if ($version->getPatch()->isAny()) {
- $constraints[] = new SpecificMajorVersionConstraint(
- $value,
- $version->getMajor()->getValue()
- );
- } else {
- $constraints[] = new SpecificMajorAndMinorVersionConstraint(
- $value,
- $version->getMajor()->getValue(),
- $version->getMinor()->getValue()
- );
- }
-
- return new AndVersionConstraintGroup($value, $constraints);
- }
-
- /**
- * @param string $value
- *
- * @return AndVersionConstraintGroup
- */
- private function handleCaretOperator($value) {
- $version = new Version(substr($value, 1));
-
- return new AndVersionConstraintGroup(
- $value,
- [
- new GreaterThanOrEqualToVersionConstraint($value, $version),
- new SpecificMajorVersionConstraint($value, $version->getMajor()->getValue())
- ]
- );
- }
-}
diff --git a/vendor/phar-io/version/src/VersionConstraintValue.php b/vendor/phar-io/version/src/VersionConstraintValue.php
deleted file mode 100644
index ad59068..0000000
--- a/vendor/phar-io/version/src/VersionConstraintValue.php
+++ /dev/null
@@ -1,123 +0,0 @@
-versionString = $versionString;
-
- $this->parseVersion($versionString);
- }
-
- /**
- * @param $versionString
- */
- private function parseVersion($versionString) {
- $this->extractBuildMetaData($versionString);
- $this->extractLabel($versionString);
-
- $versionSegments = explode('.', $versionString);
- $this->major = new VersionNumber($versionSegments[0]);
-
- $minorValue = isset($versionSegments[1]) ? $versionSegments[1] : null;
- $patchValue = isset($versionSegments[2]) ? $versionSegments[2] : null;
-
- $this->minor = new VersionNumber($minorValue);
- $this->patch = new VersionNumber($patchValue);
- }
-
- /**
- * @param string $versionString
- */
- private function extractBuildMetaData(&$versionString) {
- if (preg_match('/\+(.*)/', $versionString, $matches) == 1) {
- $this->buildMetaData = $matches[1];
- $versionString = str_replace($matches[0], '', $versionString);
- }
- }
-
- /**
- * @param string $versionString
- */
- private function extractLabel(&$versionString) {
- if (preg_match('/\-(.*)/', $versionString, $matches) == 1) {
- $this->label = $matches[1];
- $versionString = str_replace($matches[0], '', $versionString);
- }
- }
-
- /**
- * @return string
- */
- public function getLabel() {
- return $this->label;
- }
-
- /**
- * @return string
- */
- public function getBuildMetaData() {
- return $this->buildMetaData;
- }
-
- /**
- * @return string
- */
- public function getVersionString() {
- return $this->versionString;
- }
-
- /**
- * @return VersionNumber
- */
- public function getMajor() {
- return $this->major;
- }
-
- /**
- * @return VersionNumber
- */
- public function getMinor() {
- return $this->minor;
- }
-
- /**
- * @return VersionNumber
- */
- public function getPatch() {
- return $this->patch;
- }
-}
diff --git a/vendor/phar-io/version/src/VersionNumber.php b/vendor/phar-io/version/src/VersionNumber.php
deleted file mode 100644
index ab512ed..0000000
--- a/vendor/phar-io/version/src/VersionNumber.php
+++ /dev/null
@@ -1,41 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-class VersionNumber {
- /**
- * @var int
- */
- private $value;
-
- /**
- * @param mixed $value
- */
- public function __construct($value) {
- if (is_numeric($value)) {
- $this->value = $value;
- }
- }
-
- /**
- * @return bool
- */
- public function isAny() {
- return $this->value === null;
- }
-
- /**
- * @return int
- */
- public function getValue() {
- return $this->value;
- }
-}
diff --git a/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php b/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php
deleted file mode 100644
index 683e9d0..0000000
--- a/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Version\VersionConstraintParser
- */
-class VersionConstraintParserTest extends TestCase {
- /**
- * @dataProvider versionStringProvider
- *
- * @param string $versionString
- * @param VersionConstraint $expectedConstraint
- */
- public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
- $parser = new VersionConstraintParser;
-
- $this->assertEquals($expectedConstraint, $parser->parse($versionString));
- }
-
- /**
- * @dataProvider unsupportedVersionStringProvider
- *
- * @param string $versionString
- */
- public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
- $parser = new VersionConstraintParser;
-
- $this->expectException(UnsupportedVersionConstraintException::class);
-
- $parser->parse($versionString);
- }
-
- /**
- * @return array
- */
- public function versionStringProvider() {
- return [
- ['1.0.2', new ExactVersionConstraint('1.0.2')],
- [
- '~4.6',
- new AndVersionConstraintGroup(
- '~4.6',
- [
- new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
- new SpecificMajorVersionConstraint('~4.6', 4)
- ]
- )
- ],
- [
- '~4.6.2',
- new AndVersionConstraintGroup(
- '~4.6.2',
- [
- new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
- new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
- ]
- )
- ],
- [
- '^2.6.1',
- new AndVersionConstraintGroup(
- '^2.6.1',
- [
- new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
- new SpecificMajorVersionConstraint('^2.6.1', 2)
- ]
- )
- ],
- ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
- ['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
- ['*', new AnyVersionConstraint()],
- [
- '1.0.2 || 1.0.5',
- new OrVersionConstraintGroup(
- '1.0.2 || 1.0.5',
- [
- new ExactVersionConstraint('1.0.2'),
- new ExactVersionConstraint('1.0.5')
- ]
- )
- ],
- [
- '^5.6 || ^7.0',
- new OrVersionConstraintGroup(
- '^5.6 || ^7.0',
- [
- new AndVersionConstraintGroup(
- '^5.6', [
- new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
- new SpecificMajorVersionConstraint('^5.6', 5)
- ]
- ),
- new AndVersionConstraintGroup(
- '^7.0', [
- new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
- new SpecificMajorVersionConstraint('^7.0', 7)
- ]
- )
- ]
- )
- ]
- ];
- }
-
- public function unsupportedVersionStringProvider() {
- return [
- ['foo'],
- ['+1.0.2'],
- ['>=2.0'],
- ['^5.6 || >= 7.0'],
- ['2.0 || foo']
- ];
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php
deleted file mode 100644
index c618566..0000000
--- a/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Version\AbstractVersionConstraint
- */
-class AbstractVersionConstraintTest extends TestCase {
- public function testAsString() {
- /** @var AbstractVersionConstraint|\PHPUnit_Framework_MockObject_MockObject $constraint */
- $constraint = $this->getMockForAbstractClass(AbstractVersionConstraint::class, ['foo']);
-
- $this->assertSame('foo', $constraint->asString());
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php b/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php
deleted file mode 100644
index ce7f5da..0000000
--- a/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\AndVersionConstraintGroup
- */
-class AndVersionConstraintGroupTest extends TestCase {
- public function testReturnsFalseIfOneConstraintReturnsFalse() {
- $firstConstraint = $this->createMock(VersionConstraint::class);
- $secondConstraint = $this->createMock(VersionConstraint::class);
-
- $firstConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(true));
-
- $secondConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(false));
-
- $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
-
- $this->assertFalse($group->complies(new Version('1.0.0')));
- }
-
- public function testReturnsTrueIfAllConstraintsReturnsTrue() {
- $firstConstraint = $this->createMock(VersionConstraint::class);
- $secondConstraint = $this->createMock(VersionConstraint::class);
-
- $firstConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(true));
-
- $secondConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(true));
-
- $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
-
- $this->assertTrue($group->complies(new Version('1.0.0')));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php
deleted file mode 100644
index 331785e..0000000
--- a/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\AnyVersionConstraint
- */
-class AnyVersionConstraintTest extends TestCase {
- public function versionProvider() {
- return [
- [new Version('1.0.2')],
- [new Version('4.8')],
- [new Version('0.1.1-dev')]
- ];
- }
-
- /**
- * @dataProvider versionProvider
- *
- * @param Version $version
- */
- public function testReturnsTrue(Version $version) {
- $constraint = new AnyVersionConstraint;
-
- $this->assertTrue($constraint->complies($version));
- }
-
- public function testAsString() {
- $this->assertSame('*', (new AnyVersionConstraint())->asString());
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php
deleted file mode 100644
index 6b906fa..0000000
--- a/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\ExactVersionConstraint
- */
-class ExactVersionConstraintTest extends TestCase {
- public function compliantVersionProvider() {
- return [
- ['1.0.2', new Version('1.0.2')],
- ['4.8.9', new Version('4.8.9')],
- ['4.8', new Version('4.8')],
- ];
- }
-
- public function nonCompliantVersionProvider() {
- return [
- ['1.0.2', new Version('1.0.3')],
- ['4.8.9', new Version('4.7.9')],
- ['4.8', new Version('4.8.5')],
- ];
- }
-
- /**
- * @dataProvider compliantVersionProvider
- *
- * @param string $constraintValue
- * @param Version $version
- */
- public function testReturnsTrueForCompliantVersion($constraintValue, Version $version) {
- $constraint = new ExactVersionConstraint($constraintValue);
-
- $this->assertTrue($constraint->complies($version));
- }
-
- /**
- * @dataProvider nonCompliantVersionProvider
- *
- * @param string $constraintValue
- * @param Version $version
- */
- public function testReturnsFalseForNonCompliantVersion($constraintValue, Version $version) {
- $constraint = new ExactVersionConstraint($constraintValue);
-
- $this->assertFalse($constraint->complies($version));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php
deleted file mode 100644
index 2ae54a8..0000000
--- a/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\GreaterThanOrEqualToVersionConstraint
- */
-class GreaterThanOrEqualToVersionConstraintTest extends TestCase {
- public function versionProvider() {
- return [
- // compliant versions
- [new Version('1.0.2'), new Version('1.0.2'), true],
- [new Version('1.0.2'), new Version('1.0.3'), true],
- [new Version('1.0.2'), new Version('1.1.1'), true],
- [new Version('1.0.2'), new Version('2.0.0'), true],
- [new Version('1.0.2'), new Version('1.0.3'), true],
- // non-compliant versions
- [new Version('1.0.2'), new Version('1.0.1'), false],
- [new Version('1.9.8'), new Version('0.9.9'), false],
- [new Version('2.3.1'), new Version('2.2.3'), false],
- [new Version('3.0.2'), new Version('2.9.9'), false],
- ];
- }
-
- /**
- * @dataProvider versionProvider
- *
- * @param Version $constraintVersion
- * @param Version $version
- * @param bool $expectedResult
- */
- public function testReturnsTrueForCompliantVersions(Version $constraintVersion, Version $version, $expectedResult) {
- $constraint = new GreaterThanOrEqualToVersionConstraint('foo', $constraintVersion);
-
- $this->assertSame($expectedResult, $constraint->complies($version));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php b/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php
deleted file mode 100644
index 4c6f594..0000000
--- a/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\OrVersionConstraintGroup
- */
-class OrVersionConstraintGroupTest extends TestCase {
- public function testReturnsTrueIfOneConstraintReturnsFalse() {
- $firstConstraint = $this->createMock(VersionConstraint::class);
- $secondConstraint = $this->createMock(VersionConstraint::class);
-
- $firstConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(false));
-
- $secondConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(true));
-
- $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
-
- $this->assertTrue($group->complies(new Version('1.0.0')));
- }
-
- public function testReturnsTrueIfAllConstraintsReturnsTrue() {
- $firstConstraint = $this->createMock(VersionConstraint::class);
- $secondConstraint = $this->createMock(VersionConstraint::class);
-
- $firstConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(true));
-
- $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
-
- $this->assertTrue($group->complies(new Version('1.0.0')));
- }
-
- public function testReturnsFalseIfAllConstraintsReturnsFalse() {
- $firstConstraint = $this->createMock(VersionConstraint::class);
- $secondConstraint = $this->createMock(VersionConstraint::class);
-
- $firstConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(false));
-
- $secondConstraint->expects($this->once())
- ->method('complies')
- ->will($this->returnValue(false));
-
- $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
-
- $this->assertFalse($group->complies(new Version('1.0.0')));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php
deleted file mode 100644
index d3ab123..0000000
--- a/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\SpecificMajorAndMinorVersionConstraint
- */
-class SpecificMajorAndMinorVersionConstraintTest extends TestCase {
- public function versionProvider() {
- return [
- // compliant versions
- [1, 0, new Version('1.0.2'), true],
- [1, 0, new Version('1.0.3'), true],
- [1, 1, new Version('1.1.1'), true],
- // non-compliant versions
- [2, 9, new Version('0.9.9'), false],
- [3, 2, new Version('2.2.3'), false],
- [2, 8, new Version('2.9.9'), false],
- ];
- }
-
- /**
- * @dataProvider versionProvider
- *
- * @param int $major
- * @param int $minor
- * @param Version $version
- * @param bool $expectedResult
- */
- public function testReturnsTrueForCompliantVersions($major, $minor, Version $version, $expectedResult) {
- $constraint = new SpecificMajorAndMinorVersionConstraint('foo', $major, $minor);
-
- $this->assertSame($expectedResult, $constraint->complies($version));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php b/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php
deleted file mode 100644
index fc78c7e..0000000
--- a/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers PharIo\Version\SpecificMajorVersionConstraint
- */
-class SpecificMajorVersionConstraintTest extends TestCase {
- public function versionProvider() {
- return [
- // compliant versions
- [1, new Version('1.0.2'), true],
- [1, new Version('1.0.3'), true],
- [1, new Version('1.1.1'), true],
- // non-compliant versions
- [2, new Version('0.9.9'), false],
- [3, new Version('2.2.3'), false],
- [3, new Version('2.9.9'), false],
- ];
- }
-
- /**
- * @dataProvider versionProvider
- *
- * @param int $major
- * @param Version $version
- * @param bool $expectedResult
- */
- public function testReturnsTrueForCompliantVersions($major, Version $version, $expectedResult) {
- $constraint = new SpecificMajorVersionConstraint('foo', $major);
-
- $this->assertSame($expectedResult, $constraint->complies($version));
- }
-}
diff --git a/vendor/phar-io/version/tests/Unit/VersionTest.php b/vendor/phar-io/version/tests/Unit/VersionTest.php
deleted file mode 100644
index 4d0eee4..0000000
--- a/vendor/phar-io/version/tests/Unit/VersionTest.php
+++ /dev/null
@@ -1,104 +0,0 @@
-, Sebastian Heuer , Sebastian Bergmann
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace PharIo\Version;
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * @covers \PharIo\Version\Version
- */
-class VersionTest extends TestCase {
- /**
- * @dataProvider versionProvider
- *
- * @param string $versionString
- * @param string $expectedMajor
- * @param string $expectedMinor
- * @param string $expectedPatch
- * @param string $expectedPreReleaseValue
- * @param int $expectedReleaseCount
- */
- public function testParsesVersionNumbers($versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0) {
- $version = new Version($versionString);
-
- $this->assertSame($expectedMajor, $version->getMajor()->getValue());
- $this->assertSame($expectedMinor, $version->getMinor()->getValue());
- $this->assertSame($expectedPatch, $version->getPatch()->getValue());
- if ($expectedPreReleaseValue !== '') {
- $this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue());
- }
- if ($expectedReleaseCount !== 0) {
- $this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber());
- }
-
- $this->assertSame($versionString, $version->getVersionString());
- }
-
- public function versionProvider() {
- return [
- ['0.0.1', '0', '0', '1'],
- ['0.1.2', '0', '1', '2'],
- ['1.0.0-alpha', '1', '0', '0', 'alpha'],
- ['3.4.12-dev3', '3', '4', '12', 'dev', 3],
- ];
- }
-
- /**
- * @dataProvider versionGreaterThanProvider
- *
- * @param Version $versionA
- * @param Version $versionB
- * @param bool $expectedResult
- */
- public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) {
- $this->assertSame($expectedResult, $versionA->isGreaterThan($versionB));
- }
-
- /**
- * @return array
- */
- public function versionGreaterThanProvider() {
- return [
- [new Version('1.0.0'), new Version('1.0.1'), false],
- [new Version('1.0.1'), new Version('1.0.0'), true],
- [new Version('1.1.0'), new Version('1.0.1'), true],
- [new Version('1.1.0'), new Version('2.0.1'), false],
- [new Version('1.1.0'), new Version('1.1.0'), false],
- [new Version('2.5.8'), new Version('1.6.8'), true],
- [new Version('2.5.8'), new Version('2.6.8'), false],
- [new Version('2.5.8'), new Version('3.1.2'), false],
- ];
- }
-
- /**
- * @dataProvider invalidVersionStringProvider
- *
- * @param string $versionString
- */
- public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString)
- {
- $this->expectException(InvalidVersionException::class);
- new Version($versionString);
- }
-
- /**
- * @return array
- */
- public function invalidVersionStringProvider()
- {
- return [
- ['foo'],
- ['0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'],
- ['1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92']
- ];
- }
-
-}
diff --git a/vendor/php-di/phpdoc-reader/src/PhpDocReader/PhpDocReader.php b/vendor/php-di/phpdoc-reader/src/PhpDocReader/PhpDocReader.php
index 8cf2bf3..f582324 100644
--- a/vendor/php-di/phpdoc-reader/src/PhpDocReader/PhpDocReader.php
+++ b/vendor/php-di/phpdoc-reader/src/PhpDocReader/PhpDocReader.php
@@ -34,6 +34,7 @@ class PhpDocReader
'callable',
'resource',
'mixed',
+ 'iterable',
);
/**
diff --git a/vendor/phpdocumentor/reflection-common/.scrutinizer.yml b/vendor/phpdocumentor/reflection-common/.scrutinizer.yml
new file mode 100644
index 0000000..b83b01f
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/.scrutinizer.yml
@@ -0,0 +1,48 @@
+before_commands:
+ - "composer install --no-dev --prefer-source"
+
+checks:
+ php:
+ excluded_dependencies:
+ - phpstan/phpstan
+
+tools:
+ external_code_coverage:
+ enabled: true
+ timeout: 300
+ filter:
+ excluded_paths: ["tests", "vendor"]
+ php_code_sniffer:
+ enabled: true
+ config:
+ standard: PSR2
+ filter:
+ paths: ["src/*", "tests/*"]
+ excluded_paths: []
+ php_cpd:
+ enabled: true
+ excluded_dirs: ["tests", "vendor"]
+ php_cs_fixer:
+ enabled: true
+ config:
+ level: all
+ filter:
+ paths: ["src/*", "tests/*"]
+ php_loc:
+ enabled: true
+ excluded_dirs: ["tests", "vendor"]
+ php_mess_detector:
+ enabled: true
+ config:
+ ruleset: phpmd.xml.dist
+ design_rules: { eval_expression: false }
+ filter:
+ paths: ["src/*"]
+ php_pdepend:
+ enabled: true
+ excluded_dirs: ["tests", "vendor"]
+ php_analyzer:
+ enabled: true
+ filter:
+ paths: ["src/*", "tests/*"]
+ sensiolabs_security_checker: true
diff --git a/vendor/phpdocumentor/reflection-common/.travis.yml b/vendor/phpdocumentor/reflection-common/.travis.yml
index 958ecf8..2263ed4 100644
--- a/vendor/phpdocumentor/reflection-common/.travis.yml
+++ b/vendor/phpdocumentor/reflection-common/.travis.yml
@@ -1,35 +1,53 @@
language: php
-php:
- - 5.5
- - 5.6
- - 7.0
- - 7.1
- - hhvm
- - nightly
+php: [ 7.1, 7.2, nightly ]
+sudo: false
+
+env:
matrix:
+ fast_finish: true
allow_failures:
- - php:
- - hhvm
- - nightly
+ - php: nightly
+
+install:
+ - travis_retry composer install --no-interaction --prefer-dist --optimize-autoloader
+
+script:
+ - ./vendor/bin/phpunit --no-coverage
+
+jobs:
+ include:
+ - stage: analysis
+ php: 7.1
+ script:
+ - ./vendor/bin/phpunit
+ after_script:
+ - travis_retry wget --no-verbose https://phar.io/releases/phive.phar
+ - travis_retry php phive.phar --no-progress install --trust-gpg-keys E82B2FB314E9906E php-coveralls/php-coveralls && ./tools/php-coveralls --verbose
+ - travis_retry wget --no-verbose https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml
+
+ - stage: analysis
+ php: 7.1
+ before_script:
+ - travis_retry wget --no-verbose https://phar.io/releases/phive.phar
+ - travis_retry php phive.phar --no-progress install --trust-gpg-keys 8E730BA25823D8B5 phpstan
+ script:
+ - ./tools/phpstan analyse src --level max --configuration phpstan.neon
+
+ - stage: analysis
+ php: 7.1
+ script:
+ - composer create-project symplify/easy-coding-standard temp/ecs ^3 && temp/ecs/bin/ecs check src tests
cache:
directories:
- - $HOME/.composer/cache
-
-script:
- - vendor/bin/phpunit --coverage-clover=coverage.clover -v
- - composer update --no-interaction --prefer-source
- - vendor/bin/phpunit -v
-
-before_script:
- - composer install --no-interaction
-
-after_script:
- - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
+ - $HOME/.composer
+ - $HOME/.phive
notifications:
irc: "irc.freenode.org#phpdocumentor"
+ slack:
+ secure: "fjumM0h+4w3EYM4dpgqvpiCug7m4sSIC5+HATgwga/Nrc6IjlbWvGOv3JPgD3kQUhi18VmZfUYPmCv916SIbMnv8JWcrSaJXnPCgmxidvYkuzQDIw1HDJbVppGnkmwQA/qjIrM3sIEMfnu/arLRJQLI363aStZzGPxwIa4PDKcg="
email:
- - me@mikevanriel.com
- - ashnazg@php.net
+ - me@mikevanriel.com
+ - ashnazg@php.net
diff --git a/vendor/phpdocumentor/reflection-common/README.md b/vendor/phpdocumentor/reflection-common/README.md
index 68a80c8..a8bf63d 100644
--- a/vendor/phpdocumentor/reflection-common/README.md
+++ b/vendor/phpdocumentor/reflection-common/README.md
@@ -1,2 +1,12 @@
-# ReflectionCommon
-[![Build Status](https://travis-ci.org/phpDocumentor/ReflectionCommon.svg?branch=master)](https://travis-ci.org/phpDocumentor/ReflectionCommon)
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![Travis Status](https://img.shields.io/travis/phpDocumentor/ReflectionCommon.svg?label=Linux)](https://travis-ci.org/phpDocumentor/ReflectionCommon)
+[![Appveyor Status](https://img.shields.io/appveyor/ci/phpDocumentor/ReflectionCommon.svg?label=Windows)](https://ci.appveyor.com/project/phpDocumentor/ReflectionCommon/branch/master)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/ReflectionCommon.svg)](https://coveralls.io/github/phpDocumentor/ReflectionCommon?branch=master)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Stable Version](https://img.shields.io/packagist/v/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+[![Unstable Version](https://img.shields.io/packagist/vpre/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+
+
+ReflectionCommon
+================
diff --git a/vendor/phpdocumentor/reflection-common/appveyor.yml b/vendor/phpdocumentor/reflection-common/appveyor.yml
new file mode 100644
index 0000000..46e4705
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/appveyor.yml
@@ -0,0 +1,52 @@
+build: false
+clone_folder: c:\reflectioncommon
+max_jobs: 3
+platform: x86
+pull_requests:
+ do_not_increment_build_number: true
+version: '{build}.{branch}'
+skip_tags: true
+branches:
+ only:
+ - master
+
+environment:
+ matrix:
+ - php_ver_target: 7.1
+ - php_ver_target: 7.2
+matrix:
+ fast_finish: false
+
+cache:
+ - c:\php -> appveyor.yml
+ - '%LOCALAPPDATA%\Composer\files'
+
+init:
+ - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH%
+ - SET COMPOSER_NO_INTERACTION=1
+ - SET PHP=1
+ - SET ANSICON=121x90 (121x90)
+
+
+install:
+ - IF EXIST c:\tools\php (SET PHP=0)
+ - ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_ver_target | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
+ - cd c:\tools\php
+ - IF %PHP%==1 copy /Y php.ini-development php.ini
+ - IF %PHP%==1 echo max_execution_time=1200 >> php.ini
+ - IF %PHP%==1 echo date.timezone="UTC" >> php.ini
+ - IF %PHP%==1 echo extension_dir=ext >> php.ini
+ - IF %PHP%==1 echo extension=php_curl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini
+ - IF %PHP%==1 echo zend.assertions=1 >> php.ini
+ - IF %PHP%==1 echo assert.exception=On >> php.ini
+ - IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
+ - appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar
+ - cd c:\reflectioncommon
+ - composer install --no-interaction --prefer-dist --no-progress
+
+test_script:
+ - cd c:\reflectioncommon
+ - vendor\bin\phpunit --no-coverage
diff --git a/vendor/phpdocumentor/reflection-common/composer.json b/vendor/phpdocumentor/reflection-common/composer.json
index 90eee0f..6daeb50 100644
--- a/vendor/phpdocumentor/reflection-common/composer.json
+++ b/vendor/phpdocumentor/reflection-common/composer.json
@@ -11,19 +11,19 @@
}
],
"require": {
- "php": ">=5.5"
+ "php": ">=7.1"
},
"autoload" : {
"psr-4" : {
- "phpDocumentor\\Reflection\\": ["src"]
+ "phpDocumentor\\Reflection\\": "src/"
}
},
"require-dev": {
- "phpunit/phpunit": "^4.6"
+ "phpunit/phpunit": "~6"
},
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.x-dev"
}
}
}
diff --git a/vendor/phpdocumentor/reflection-common/easy-coding-standard.neon b/vendor/phpdocumentor/reflection-common/easy-coding-standard.neon
new file mode 100644
index 0000000..559a897
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/easy-coding-standard.neon
@@ -0,0 +1,17 @@
+includes:
+ - temp/ecs/config/clean-code.neon
+ - temp/ecs/config/psr2.neon
+ - temp/ecs/config/common.neon
+
+parameters:
+ exclude_checkers:
+ # from temp/ecs/config/common.neon
+ - PhpCsFixer\Fixer\ClassNotation\OrderedClassElementsFixer
+ - PhpCsFixer\Fixer\PhpUnit\PhpUnitStrictFixer
+ - PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer
+ # from temp/ecs/config/spaces.neon
+ - PhpCsFixer\Fixer\Operator\NotOperatorWithSuccessorSpaceFixer
+
+ skip:
+ PHP_CodeSniffer\Standards\Generic\Sniffs\NamingConventions\CamelCapsFunctionNameSniff:
+ - */tests/**
diff --git a/vendor/phpdocumentor/reflection-common/phive.xml b/vendor/phpdocumentor/reflection-common/phive.xml
new file mode 100644
index 0000000..5630fde
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/phive.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/phpdocumentor/reflection-common/phpmd.xml.dist b/vendor/phpdocumentor/reflection-common/phpmd.xml.dist
new file mode 100644
index 0000000..9abf85c
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/phpmd.xml.dist
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 40
+
+
+
diff --git a/vendor/phpdocumentor/reflection-common/phpstan.neon b/vendor/phpdocumentor/reflection-common/phpstan.neon
new file mode 100644
index 0000000..e69de29
diff --git a/vendor/phpdocumentor/reflection-common/src/Element.php b/vendor/phpdocumentor/reflection-common/src/Element.php
index 712e30e..b3820f8 100644
--- a/vendor/phpdocumentor/reflection-common/src/Element.php
+++ b/vendor/phpdocumentor/reflection-common/src/Element.php
@@ -1,10 +1,13 @@
+ * @copyright 2010-2018 Mike van Riel
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -19,22 +21,16 @@ interface File
{
/**
* Returns the content of the file as a string.
- *
- * @return string
*/
- public function getContents();
+ public function getContents(): string;
/**
* Returns md5 hash of the file.
- *
- * @return string
*/
- public function md5();
+ public function md5(): string;
/**
* Returns an relative path to the file.
- *
- * @return string
*/
- public function path();
+ public function path(): string;
}
diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php
index ce88d03..9fc0c64 100644
--- a/vendor/phpdocumentor/reflection-common/src/Fqsen.php
+++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php
@@ -1,16 +1,21 @@
fqsen;
}
/**
* Returns the name of the element without path.
- *
- * @return string
*/
- public function getName()
+ public function getName(): string
{
return $this->name;
}
diff --git a/vendor/phpdocumentor/reflection-common/src/Location.php b/vendor/phpdocumentor/reflection-common/src/Location.php
index 5760321..fdb1816 100644
--- a/vendor/phpdocumentor/reflection-common/src/Location.php
+++ b/vendor/phpdocumentor/reflection-common/src/Location.php
@@ -1,11 +1,13 @@
+ * @copyright 2010-2018 Mike van Riel
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -17,7 +19,7 @@ namespace phpDocumentor\Reflection;
*/
final class Location
{
- /** @var int */
+ /** @var int */
private $lineNumber = 0;
/** @var int */
@@ -25,32 +27,25 @@ final class Location
/**
* Initializes the location for an element using its line number in the file and optionally the column number.
- *
- * @param int $lineNumber
- * @param int $columnNumber
*/
- public function __construct($lineNumber, $columnNumber = 0)
+ public function __construct(int $lineNumber, int $columnNumber = 0)
{
- $this->lineNumber = $lineNumber;
+ $this->lineNumber = $lineNumber;
$this->columnNumber = $columnNumber;
}
/**
* Returns the line number that is covered by this location.
- *
- * @return integer
*/
- public function getLineNumber()
+ public function getLineNumber(): int
{
return $this->lineNumber;
}
/**
* Returns the column number (character position on a line) for this location object.
- *
- * @return integer
*/
- public function getColumnNumber()
+ public function getColumnNumber(): int
{
return $this->columnNumber;
}
diff --git a/vendor/phpdocumentor/reflection-common/src/Project.php b/vendor/phpdocumentor/reflection-common/src/Project.php
index 3ed1e39..7d4b176 100644
--- a/vendor/phpdocumentor/reflection-common/src/Project.php
+++ b/vendor/phpdocumentor/reflection-common/src/Project.php
@@ -1,10 +1,13 @@
appveyor.yml
+ - '%LOCALAPPDATA%\Composer\files'
+
+init:
+ - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH%
+ - SET COMPOSER_NO_INTERACTION=1
+ - SET PHP=1
+ - SET ANSICON=121x90 (121x90)
+
+
+install:
+ - IF EXIST c:\tools\php (SET PHP=0)
+ - ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_ver_target | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
+ - cd c:\tools\php
+ - IF %PHP%==1 copy /Y php.ini-development php.ini
+ - IF %PHP%==1 echo max_execution_time=1200 >> php.ini
+ - IF %PHP%==1 echo date.timezone="UTC" >> php.ini
+ - IF %PHP%==1 echo extension_dir=ext >> php.ini
+ - IF %PHP%==1 echo extension=php_curl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini
+ - IF %PHP%==1 echo zend.assertions=1 >> php.ini
+ - IF %PHP%==1 echo assert.exception=On >> php.ini
+ - IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
+ - appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar
+ - cd c:\reflectiondocblock
+ - composer install --no-interaction --prefer-dist --no-progress
+ - composer global require phpunit/phpunit ^6
+ - composer global config bin-dir --absolute
+
+test_script:
+ - cd c:\reflectiondocblock
+ - c:\Users\appveyor\AppData\Roaming\Composer\vendor\bin\phpunit --no-coverage
diff --git a/vendor/phpdocumentor/reflection-docblock/composer.json b/vendor/phpdocumentor/reflection-docblock/composer.json
index e3dc38a..f15fe38 100644
--- a/vendor/phpdocumentor/reflection-docblock/composer.json
+++ b/vendor/phpdocumentor/reflection-docblock/composer.json
@@ -11,8 +11,8 @@
],
"require": {
"php": "^7.0",
- "phpdocumentor/reflection-common": "^1.0.0",
- "phpdocumentor/type-resolver": "^0.4.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
"webmozart/assert": "^1.0"
},
"autoload": {
@@ -24,7 +24,7 @@
"require-dev": {
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.4",
- "doctrine/instantiator": "~1.0.5"
+ "doctrine/instantiator": "^1.0.5"
},
"extra": {
"branch-alias": {
diff --git a/vendor/phpdocumentor/type-resolver/.github/workflows/push.yml b/vendor/phpdocumentor/type-resolver/.github/workflows/push.yml
new file mode 100644
index 0000000..f218c25
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/.github/workflows/push.yml
@@ -0,0 +1,35 @@
+on: push
+name: Qa workflow
+jobs:
+ composer:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: composer
+ uses: docker://composer
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: install --no-interaction --prefer-dist --optimize-autoloader
+ - name: Code style check
+ uses: docker://phpdoc/phpcs-ga:master
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: -d memory_limit=1024M -s
+ - name: composer-require-checker
+ uses: docker://phpga/composer-require-checker-ga
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: check --config-file ./composer-require-config.json composer.json
+ - name: Psalm
+ uses: docker://mickaelandrieu/psalm-ga
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: PHPStan
+ uses: docker://oskarstark/phpstan-ga
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: analyse src tests --level max --configuration phpstan.neon
diff --git a/vendor/phpdocumentor/type-resolver/README.md b/vendor/phpdocumentor/type-resolver/README.md
index fad3400..72fc36c 100644
--- a/vendor/phpdocumentor/type-resolver/README.md
+++ b/vendor/phpdocumentor/type-resolver/README.md
@@ -1,3 +1,13 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![Travis Status](https://img.shields.io/travis/phpDocumentor/TypeResolver.svg?label=Linux)](https://travis-ci.org/phpDocumentor/TypeResolver)
+[![Appveyor Status](https://img.shields.io/appveyor/ci/phpDocumentor/TypeResolver.svg?label=Windows)](https://ci.appveyor.com/project/phpDocumentor/TypeResolver/branch/master)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/TypeResolver.svg)](https://coveralls.io/github/phpDocumentor/TypeResolver?branch=master)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/TypeResolver.svg)](https://scrutinizer-ci.com/g/phpDocumentor/TypeResolver/?branch=master)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/TypeResolver.svg)](https://scrutinizer-ci.com/g/phpDocumentor/TypeResolver/?branch=master)
+[![Stable Version](https://img.shields.io/packagist/v/phpDocumentor/Type-Resolver.svg)](https://packagist.org/packages/phpDocumentor/TypeResolver)
+[![Unstable Version](https://img.shields.io/packagist/vpre/phpDocumentor/Type-Resolver.svg)](https://packagist.org/packages/phpDocumentor/TypeResolver)
+
+
TypeResolver and FqsenResolver
==============================
@@ -22,8 +32,7 @@ The easiest way to install this library is with [Composer](https://getcomposer.o
## Examples
-Ready to dive in and don't want to read through all that text below? Just consult the [examples](examples) folder and
-check which type of action that your want to accomplish.
+Ready to dive in and don't want to read through all that text below? Just consult the [examples](examples) folder and check which type of action that your want to accomplish.
## On Types and Element Names
@@ -39,6 +48,7 @@ The TypeResolver can resolve:
- a php primitive or pseudo-primitive such as a string or void (`@var string` or `@return void`).
- a composite such as an array of string (`@var string[]`).
- a compound such as a string or integer (`@var string|integer`).
+- an array expression (`@var (string|TypeResolver)[]`)
- an object or interface such as the TypeResolver class (`@var TypeResolver`
or `@var \phpDocumentor\Reflection\TypeResolver`)
@@ -58,8 +68,7 @@ Where the FqsenResolver can resolve:
## Resolving a type
-In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver`
-and call its `resolve` method like this:
+In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver` and call its `resolve` method like this:
```php
$typeResolver = new \phpDocumentor\Reflection\TypeResolver();
@@ -70,31 +79,30 @@ In this example you will receive a Value Object of class `\phpDocumentor\Reflect
elements, one of type `\phpDocumentor\Reflection\Types\String_` and one of type
`\phpDocumentor\Reflection\Types\Integer`.
-The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but
-in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver
-in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+
+### Resolving nullable types
+
+Php 7.1 introduced nullable types e.g. `?string`. Type resolver will resolve the original type without the nullable notation `?`
+just like it would do without the `?`. After that the type is wrapped in a `\phpDocumentor\Reflection\Types\Nullable` object.
+The `Nullable` type has a method to fetch the actual type.
## Resolving an FQSEN
-A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using
-the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this:
+A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this:
```php
$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
$fqsen = $fqsenResolver->resolve('\phpDocumentor\Reflection\FqsenResolver::resolve()');
```
-In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class
-name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`.
+In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`.
-The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural
-Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will
-inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
## Resolving partial Classes and Structural Element Names
-Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class
-names.
+Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class names.
For example, you have this file:
@@ -116,9 +124,8 @@ class Classy
```
Suppose that you would want to resolve (and expand) the type in the `@var` tag and the element name in the `@see` tag.
-For the resolvers to know how to expand partial names you have to provide a bit of _Context_ for them by instantiating
-a new class named `\phpDocumentor\Reflection\Types\Context` with the name of the namespace and the aliases that are in
-play.
+
+For the resolvers to know how to expand partial names you have to provide a bit of _Context_ for them by instantiating a new class named `\phpDocumentor\Reflection\Types\Context` with the name of the namespace and the aliases that are in play.
### Creating a Context
@@ -131,9 +138,7 @@ $context = new \phpDocumentor\Reflection\Types\Context(
);
```
-Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector
-object or by providing the namespace that you'd like to extract and the source code of the file in which the given
-type expression occurs.
+Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector object or by providing the namespace that you'd like to extract and the source code of the file in which the given type expression occurs.
```php
$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
@@ -149,8 +154,7 @@ $context = $contextFactory->createForNamespace('\My\Example', file_get_contents(
### Using the Context
-After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver
-class as second argument and the Resolvers will take this into account when resolving partial names.
+After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver class as second argument and the Resolvers will take this into account when resolving partial names.
To obtain the resolved class name for the `@var` tag in the example above you can do:
@@ -159,24 +163,17 @@ $typeResolver = new \phpDocumentor\Reflection\TypeResolver();
$type = $typeResolver->resolve('Types\Context', $context);
```
-When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call
-the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be
-`phpDocumentor\Reflection\Types\Context`.
+When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be `phpDocumentor\Reflection\Types\Context`.
> Why is the FQSEN wrapped in another object `Object_`?
>
-> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common
-> type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it
-> is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN.
+> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN.
-Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To
-resolve that you can do the following:
+Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To resolve that you can do the following:
```php
$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
$type = $fqsenResolver->resolve('Classy::otherFunction()', $context);
```
-Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the
-`resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to
-`\My\Example\Classy::otherFunction()`.
+Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the `resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to `\My\Example\Classy::otherFunction()`.
diff --git a/vendor/phpdocumentor/type-resolver/appveyor.yml b/vendor/phpdocumentor/type-resolver/appveyor.yml
new file mode 100644
index 0000000..9dda46c
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/appveyor.yml
@@ -0,0 +1,52 @@
+build: false
+clone_folder: c:\typeresolver
+max_jobs: 3
+platform: x86
+pull_requests:
+ do_not_increment_build_number: true
+version: '{build}.{branch}'
+skip_tags: true
+branches:
+ only:
+ - master
+
+environment:
+ matrix:
+ - php_ver_target: 7.1
+ - php_ver_target: 7.2
+matrix:
+ fast_finish: false
+
+cache:
+ - c:\php -> appveyor.yml
+ - '%LOCALAPPDATA%\Composer\files'
+
+init:
+ - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH%
+ - SET COMPOSER_NO_INTERACTION=1
+ - SET PHP=1
+ - SET ANSICON=121x90 (121x90)
+
+
+install:
+ - IF EXIST c:\tools\php (SET PHP=0)
+ - ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_ver_target | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
+ - cd c:\tools\php
+ - IF %PHP%==1 copy /Y php.ini-development php.ini
+ - IF %PHP%==1 echo max_execution_time=1200 >> php.ini
+ - IF %PHP%==1 echo date.timezone="UTC" >> php.ini
+ - IF %PHP%==1 echo extension_dir=ext >> php.ini
+ - IF %PHP%==1 echo extension=php_curl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
+ - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini
+ - IF %PHP%==1 echo zend.assertions=1 >> php.ini
+ - IF %PHP%==1 echo assert.exception=On >> php.ini
+ - IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
+ - appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar
+ - cd c:\typeresolver
+ - composer install --no-interaction --prefer-dist --no-progress
+
+test_script:
+ - cd c:\typeresolver
+ - vendor\bin\phpunit --no-coverage
diff --git a/vendor/phpdocumentor/type-resolver/composer-require-config.json b/vendor/phpdocumentor/type-resolver/composer-require-config.json
new file mode 100644
index 0000000..19eee4f
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/composer-require-config.json
@@ -0,0 +1,15 @@
+{
+ "symbol-whitelist" : [
+ "null", "true", "false",
+ "static", "self", "parent",
+ "array", "string", "int", "float", "bool", "iterable", "callable", "void", "object", "XSLTProcessor"
+ ],
+ "php-core-extensions" : [
+ "Core",
+ "pcre",
+ "Reflection",
+ "tokenizer",
+ "SPL",
+ "standard"
+ ]
+}
diff --git a/vendor/phpdocumentor/type-resolver/composer.json b/vendor/phpdocumentor/type-resolver/composer.json
index 82ead15..f784935 100644
--- a/vendor/phpdocumentor/type-resolver/composer.json
+++ b/vendor/phpdocumentor/type-resolver/composer.json
@@ -1,27 +1,36 @@
{
- "name": "phpdocumentor/type-resolver",
- "type": "library",
+ "name": "phpdocumentor/type-resolver",
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "type": "library",
"license": "MIT",
"authors": [
- {"name": "Mike van Riel", "email": "me@mikevanriel.com"}
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
],
"require": {
- "php": "^5.5 || ^7.0",
- "phpdocumentor/reflection-common": "^1.0"
- },
- "autoload": {
- "psr-4": {"phpDocumentor\\Reflection\\": ["src/"]}
- },
- "autoload-dev": {
- "psr-4": {"phpDocumentor\\Reflection\\": ["tests/unit"]}
+ "php": "^7.1",
+ "phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "phpunit/phpunit": "^5.2||^4.8.24",
- "mockery/mockery": "^0.9.4"
+ "mockery/mockery": "~1",
+ "ext-tokenizer": "^7.1",
+ "phpunit/phpunit": "^7.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "tests/unit"
+ }
},
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.x-dev"
}
}
}
diff --git a/vendor/phpdocumentor/type-resolver/phive.xml b/vendor/phpdocumentor/type-resolver/phive.xml
new file mode 100644
index 0000000..9908931
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/phive.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/vendor/phpdocumentor/type-resolver/phpcs.xml.dist b/vendor/phpdocumentor/type-resolver/phpcs.xml.dist
new file mode 100644
index 0000000..c030e8d
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/phpcs.xml.dist
@@ -0,0 +1,30 @@
+
+
+ The coding standard for phpDocumentor.
+
+ src
+ tests/unit
+ */tests/unit/Types/ContextFactoryTest.php
+
+
+ *\.php
+
+
+
+
+
+
+
+ */src/*_.php
+
+
+
+ */src/*/Abstract*.php
+
+
+
+
+
+
+
+
diff --git a/vendor/phpdocumentor/type-resolver/phpstan.neon b/vendor/phpdocumentor/type-resolver/phpstan.neon
new file mode 100644
index 0000000..73a7e51
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/phpstan.neon
@@ -0,0 +1,7 @@
+parameters:
+ ignoreErrors:
+ -
+ message: '#Parameter \#1 \$types of class phpDocumentor\\Reflection\\Types\\Compound constructor expects array, array given\.#'
+ path: %currentWorkingDirectory%/tests/unit/Types/CompoundTest.php
+ - message: '#Parameter \#2 \$fileContents of method phpDocumentor\\Reflection\\Types\\ContextFactory::createForNamespace\(\) expects string, string|false given\.#'
+ path: %currentWorkingDirectory%/tests/unit/Types/ContextFactoryTest.php
diff --git a/vendor/phpdocumentor/type-resolver/psalm.xml b/vendor/phpdocumentor/type-resolver/psalm.xml
new file mode 100644
index 0000000..9fedb8a
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/psalm.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
index 9aa6ba3..1f9fe50 100644
--- a/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
+++ b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
@@ -1,25 +1,30 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection;
+use InvalidArgumentException;
use phpDocumentor\Reflection\Types\Context;
+use function explode;
+use function implode;
+use function strpos;
class FqsenResolver
{
/** @var string Definition of the NAMESPACE operator in PHP */
- const OPERATOR_NAMESPACE = '\\';
+ private const OPERATOR_NAMESPACE = '\\';
- public function resolve($fqsen, Context $context = null)
+ public function resolve(string $fqsen, ?Context $context = null) : Fqsen
{
if ($context === null) {
$context = new Context('');
@@ -34,12 +39,8 @@ class FqsenResolver
/**
* Tests whether the given type is a Fully Qualified Structural Element Name.
- *
- * @param string $type
- *
- * @return bool
*/
- private function isFqsen($type)
+ private function isFqsen(string $type) : bool
{
return strpos($type, self::OPERATOR_NAMESPACE) === 0;
}
@@ -48,13 +49,9 @@ class FqsenResolver
* Resolves a partial Structural Element Name (i.e. `Reflection\DocBlock`) to its FQSEN representation
* (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context.
*
- * @param string $type
- * @param Context $context
- *
- * @return Fqsen
- * @throws \InvalidArgumentException when type is not a valid FQSEN.
+ * @throws InvalidArgumentException When type is not a valid FQSEN.
*/
- private function resolvePartialStructuralElementName($type, Context $context)
+ private function resolvePartialStructuralElementName(string $type, Context $context) : Fqsen
{
$typeParts = explode(self::OPERATOR_NAMESPACE, $type, 2);
@@ -63,7 +60,7 @@ class FqsenResolver
// if the first segment is not an alias; prepend namespace name and return
if (!isset($namespaceAliases[$typeParts[0]])) {
$namespace = $context->getNamespace();
- if ('' !== $namespace) {
+ if ($namespace !== '') {
$namespace .= self::OPERATOR_NAMESPACE;
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Type.php b/vendor/phpdocumentor/type-resolver/src/Type.php
index 33ca559..fc931eb 100644
--- a/vendor/phpdocumentor/type-resolver/src/Type.php
+++ b/vendor/phpdocumentor/type-resolver/src/Type.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -14,5 +15,8 @@ namespace phpDocumentor\Reflection;
interface Type
{
- public function __toString();
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString() : string;
}
diff --git a/vendor/phpdocumentor/type-resolver/src/TypeResolver.php b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php
index 08b2a5f..d849d5a 100644
--- a/vendor/phpdocumentor/type-resolver/src/TypeResolver.php
+++ b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php
@@ -1,39 +1,76 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection;
+use ArrayIterator;
+use InvalidArgumentException;
use phpDocumentor\Reflection\Types\Array_;
+use phpDocumentor\Reflection\Types\Collection;
use phpDocumentor\Reflection\Types\Compound;
use phpDocumentor\Reflection\Types\Context;
+use phpDocumentor\Reflection\Types\Integer;
use phpDocumentor\Reflection\Types\Iterable_;
use phpDocumentor\Reflection\Types\Nullable;
use phpDocumentor\Reflection\Types\Object_;
+use phpDocumentor\Reflection\Types\String_;
+use RuntimeException;
+use const PREG_SPLIT_DELIM_CAPTURE;
+use const PREG_SPLIT_NO_EMPTY;
+use function array_keys;
+use function array_pop;
+use function class_exists;
+use function class_implements;
+use function count;
+use function in_array;
+use function preg_split;
+use function strlen;
+use function strpos;
+use function strtolower;
+use function substr;
+use function trim;
final class TypeResolver
{
/** @var string Definition of the ARRAY operator for types */
- const OPERATOR_ARRAY = '[]';
+ private const OPERATOR_ARRAY = '[]';
/** @var string Definition of the NAMESPACE operator in PHP */
- const OPERATOR_NAMESPACE = '\\';
+ private const OPERATOR_NAMESPACE = '\\';
- /** @var string[] List of recognized keywords and unto which Value Object they map */
- private $keywords = array(
+ /** @var int the iterator parser is inside a compound context */
+ private const PARSER_IN_COMPOUND = 0;
+
+ /** @var int the iterator parser is inside a nullable expression context */
+ private const PARSER_IN_NULLABLE = 1;
+
+ /** @var int the iterator parser is inside an array expression context */
+ private const PARSER_IN_ARRAY_EXPRESSION = 2;
+
+ /** @var int the iterator parser is inside a collection expression context */
+ private const PARSER_IN_COLLECTION_EXPRESSION = 3;
+
+ /**
+ * @var array List of recognized keywords and unto which Value Object they map
+ * @psalm-var array>
+ */
+ private $keywords = [
'string' => Types\String_::class,
'int' => Types\Integer::class,
'integer' => Types\Integer::class,
'bool' => Types\Boolean::class,
'boolean' => Types\Boolean::class,
+ 'real' => Types\Float_::class,
'float' => Types\Float_::class,
'double' => Types\Float_::class,
'object' => Object_::class,
@@ -52,17 +89,15 @@ final class TypeResolver
'static' => Types\Static_::class,
'parent' => Types\Parent_::class,
'iterable' => Iterable_::class,
- );
+ ];
/** @var FqsenResolver */
private $fqsenResolver;
/**
* Initializes this TypeResolver with the means to create and resolve Fqsen objects.
- *
- * @param FqsenResolver $fqsenResolver
*/
- public function __construct(FqsenResolver $fqsenResolver = null)
+ public function __construct(?FqsenResolver $fqsenResolver = null)
{
$this->fqsenResolver = $fqsenResolver ?: new FqsenResolver();
}
@@ -77,39 +112,177 @@ final class TypeResolver
* This method only works as expected if the namespace and aliases are set;
* no dynamic reflection is being performed here.
*
- * @param string $type The relative or absolute type.
- * @param Context $context
- *
- * @uses Context::getNamespace() to determine with what to prefix the type name.
* @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be
- * replaced with another namespace.
+ * replaced with another namespace.
+ * @uses Context::getNamespace() to determine with what to prefix the type name.
*
- * @return Type|null
+ * @param string $type The relative or absolute type.
*/
- public function resolve($type, Context $context = null)
+ public function resolve(string $type, ?Context $context = null) : Type
{
- if (!is_string($type)) {
- throw new \InvalidArgumentException(
- 'Attempted to resolve type but it appeared not to be a string, received: ' . var_export($type, true)
- );
- }
-
$type = trim($type);
if (!$type) {
- throw new \InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty');
+ throw new InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty');
}
if ($context === null) {
$context = new Context('');
}
+ // split the type string into tokens `|`, `?`, `<`, `>`, `,`, `(`, `)[]`, '<', '>' and type names
+ $tokens = preg_split(
+ '/(\\||\\?|<|>|, ?|\\(|\\)(?:\\[\\])+)/',
+ $type,
+ -1,
+ PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
+ );
+
+ if ($tokens === false) {
+ throw new InvalidArgumentException('Unable to split the type string "' . $type . '" into tokens');
+ }
+
+ $tokenIterator = new ArrayIterator($tokens);
+
+ return $this->parseTypes($tokenIterator, $context, self::PARSER_IN_COMPOUND);
+ }
+
+ /**
+ * Analyse each tokens and creates types
+ *
+ * @param ArrayIterator $tokens the iterator on tokens
+ * @param int $parserContext on of self::PARSER_* constants, indicating
+ * the context where we are in the parsing
+ */
+ private function parseTypes(ArrayIterator $tokens, Context $context, int $parserContext) : Type
+ {
+ $types = [];
+ $token = '';
+ while ($tokens->valid()) {
+ $token = $tokens->current();
+
+ if ($token === '|') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'A type is missing before a type separator'
+ );
+ }
+
+ if ($parserContext !== self::PARSER_IN_COMPOUND
+ && $parserContext !== self::PARSER_IN_ARRAY_EXPRESSION
+ && $parserContext !== self::PARSER_IN_COLLECTION_EXPRESSION
+ ) {
+ throw new RuntimeException(
+ 'Unexpected type separator'
+ );
+ }
+
+ $tokens->next();
+ } elseif ($token === '?') {
+ if ($parserContext !== self::PARSER_IN_COMPOUND
+ && $parserContext !== self::PARSER_IN_ARRAY_EXPRESSION
+ && $parserContext !== self::PARSER_IN_COLLECTION_EXPRESSION
+ ) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_NULLABLE);
+ $types[] = new Nullable($type);
+ } elseif ($token === '(') {
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_ARRAY_EXPRESSION);
+
+ $resolvedType = new Array_($type);
+
+ $token = $tokens->current();
+ // Someone did not properly close their array expression ..
+ if ($token === null) {
+ break;
+ }
+
+ // we generate arrays corresponding to the number of '[]' after the ')'
+ $numberOfArrays = (strlen($token) - 1) / 2;
+ for ($i = 0; $i < $numberOfArrays - 1; ++$i) {
+ $resolvedType = new Array_($resolvedType);
+ }
+
+ $types[] = $resolvedType;
+ $tokens->next();
+ } elseif ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION && $token[0] === ')') {
+ break;
+ } elseif ($token === '<') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'Unexpected collection operator "<", class name is missing'
+ );
+ }
+
+ $classType = array_pop($types);
+ if ($classType !== null) {
+ $types[] = $this->resolveCollection($tokens, $classType, $context);
+ }
+
+ $tokens->next();
+ } elseif ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION
+ && ($token === '>' || trim($token) === ',')
+ ) {
+ break;
+ } else {
+ $type = $this->resolveSingleType($token, $context);
+ $tokens->next();
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ return $type;
+ }
+
+ $types[] = $type;
+ }
+ }
+
+ if ($token === '|') {
+ throw new RuntimeException(
+ 'A type is missing after a type separator'
+ );
+ }
+
+ if (count($types) === 0) {
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ throw new RuntimeException(
+ 'A type is missing after a nullable character'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in an array expression'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in a collection expression'
+ );
+ }
+ } elseif (count($types) === 1) {
+ return $types[0];
+ }
+
+ return new Compound($types);
+ }
+
+ /**
+ * resolve the given type into a type object
+ *
+ * @param string $type the type string, representing a single type
+ *
+ * @return Type|Array_|Object_
+ */
+ private function resolveSingleType(string $type, Context $context)
+ {
switch (true) {
- case $this->isNullableType($type):
- return $this->resolveNullableType($type, $context);
case $this->isKeyword($type):
return $this->resolveKeyword($type);
- case ($this->isCompoundType($type)):
- return $this->resolveCompoundType($type, $context);
case $this->isTypedArray($type):
return $this->resolveTypedArray($type, $context);
case $this->isFqsen($type):
@@ -119,32 +292,28 @@ final class TypeResolver
// @codeCoverageIgnoreStart
default:
// I haven't got the foggiest how the logic would come here but added this as a defense.
- throw new \RuntimeException(
+ throw new RuntimeException(
'Unable to resolve type "' . $type . '", there is no known method to resolve it'
);
}
+
// @codeCoverageIgnoreEnd
}
/**
* Adds a keyword to the list of Keywords and associates it with a specific Value Object.
- *
- * @param string $keyword
- * @param string $typeClassName
- *
- * @return void
*/
- public function addKeyword($keyword, $typeClassName)
+ public function addKeyword(string $keyword, string $typeClassName) : void
{
if (!class_exists($typeClassName)) {
- throw new \InvalidArgumentException(
+ throw new InvalidArgumentException(
'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class'
. ' but we could not find the class ' . $typeClassName
);
}
- if (!in_array(Type::class, class_implements($typeClassName))) {
- throw new \InvalidArgumentException(
+ if (!in_array(Type::class, class_implements($typeClassName), true)) {
+ throw new InvalidArgumentException(
'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"'
);
}
@@ -156,10 +325,8 @@ final class TypeResolver
* Detects whether the given type represents an array.
*
* @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
- *
- * @return bool
*/
- private function isTypedArray($type)
+ private function isTypedArray(string $type) : bool
{
return substr($type, -2) === self::OPERATOR_ARRAY;
}
@@ -168,10 +335,8 @@ final class TypeResolver
* Detects whether the given type represents a PHPDoc keyword.
*
* @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
- *
- * @return bool
*/
- private function isKeyword($type)
+ private function isKeyword(string $type) : bool
{
return in_array(strtolower($type), array_keys($this->keywords), true);
}
@@ -180,119 +345,126 @@ final class TypeResolver
* Detects whether the given type represents a relative structural element name.
*
* @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
- *
- * @return bool
*/
- private function isPartialStructuralElementName($type)
+ private function isPartialStructuralElementName(string $type) : bool
{
return ($type[0] !== self::OPERATOR_NAMESPACE) && !$this->isKeyword($type);
}
/**
* Tests whether the given type is a Fully Qualified Structural Element Name.
- *
- * @param string $type
- *
- * @return bool
*/
- private function isFqsen($type)
+ private function isFqsen(string $type) : bool
{
return strpos($type, self::OPERATOR_NAMESPACE) === 0;
}
- /**
- * Tests whether the given type is a compound type (i.e. `string|int`).
- *
- * @param string $type
- *
- * @return bool
- */
- private function isCompoundType($type)
- {
- return strpos($type, '|') !== false;
- }
-
- /**
- * Test whether the given type is a nullable type (i.e. `?string`)
- *
- * @param string $type
- *
- * @return bool
- */
- private function isNullableType($type)
- {
- return $type[0] === '?';
- }
-
/**
* Resolves the given typed array string (i.e. `string[]`) into an Array object with the right types set.
- *
- * @param string $type
- * @param Context $context
- *
- * @return Array_
*/
- private function resolveTypedArray($type, Context $context)
+ private function resolveTypedArray(string $type, Context $context) : Array_
{
- return new Array_($this->resolve(substr($type, 0, -2), $context));
+ return new Array_($this->resolveSingleType(substr($type, 0, -2), $context));
}
/**
* Resolves the given keyword (such as `string`) into a Type object representing that keyword.
- *
- * @param string $type
- *
- * @return Type
*/
- private function resolveKeyword($type)
+ private function resolveKeyword(string $type) : Type
{
$className = $this->keywords[strtolower($type)];
-
return new $className();
}
/**
* Resolves the given FQSEN string into an FQSEN object.
- *
- * @param string $type
- * @param Context|null $context
- *
- * @return Object_
*/
- private function resolveTypedObject($type, Context $context = null)
+ private function resolveTypedObject(string $type, ?Context $context = null) : Object_
{
return new Object_($this->fqsenResolver->resolve($type, $context));
}
/**
- * Resolves a compound type (i.e. `string|int`) into the appropriate Type objects or FQSEN.
+ * Resolves the collection values and keys
*
- * @param string $type
- * @param Context $context
- *
- * @return Compound
+ * @return Array_|Collection
*/
- private function resolveCompoundType($type, Context $context)
+ private function resolveCollection(ArrayIterator $tokens, Type $classType, Context $context) : Type
{
- $types = [];
+ $isArray = ((string) $classType === 'array');
- foreach (explode('|', $type) as $part) {
- $types[] = $this->resolve($part, $context);
+ // allow only "array" or class name before "<"
+ if (!$isArray
+ && (!$classType instanceof Object_ || $classType->getFqsen() === null)) {
+ throw new RuntimeException(
+ $classType . ' is not a collection'
+ );
}
- return new Compound($types);
+ $tokens->next();
+
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ $keyType = null;
+
+ if ($tokens->current() !== null && trim($tokens->current()) === ',') {
+ // if we have a comma, then we just parsed the key type, not the value type
+ $keyType = $valueType;
+ if ($isArray) {
+ // check the key type for an "array" collection. We allow only
+ // strings or integers.
+ if (!$keyType instanceof String_ &&
+ !$keyType instanceof Integer &&
+ !$keyType instanceof Compound
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+
+ if ($keyType instanceof Compound) {
+ foreach ($keyType->getIterator() as $item) {
+ if (!$item instanceof String_ &&
+ !$item instanceof Integer
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+ }
+ }
+ }
+
+ $tokens->next();
+ // now let's parse the value type
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ }
+
+ if ($tokens->current() !== '>') {
+ if (empty($tokens->current())) {
+ throw new RuntimeException(
+ 'Collection: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $tokens->current() . '", ">" is missing'
+ );
+ }
+
+ if ($isArray) {
+ return new Array_($valueType, $keyType);
+ }
+
+ /** @psalm-suppress RedundantCondition */
+ if ($classType instanceof Object_) {
+ return $this->makeCollectionFromObject($classType, $valueType, $keyType);
+ }
+
+ throw new RuntimeException('Invalid $classType provided');
}
- /**
- * Resolve nullable types (i.e. `?string`) into a Nullable type wrapper
- *
- * @param string $type
- * @param Context $context
- *
- * @return Nullable
- */
- private function resolveNullableType($type, Context $context)
+ private function makeCollectionFromObject(Object_ $object, Type $valueType, ?Type $keyType = null) : Collection
{
- return new Nullable($this->resolve(ltrim($type, '?'), $context));
+ return new Collection($object->getFqsen(), $valueType, $keyType);
}
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php b/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
new file mode 100644
index 0000000..06260bc
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
@@ -0,0 +1,85 @@
+valueType = $valueType;
+ $this->defaultKeyType = new Compound([new String_(), new Integer()]);
+ $this->keyType = $keyType;
+ }
+
+ /**
+ * Returns the type for the keys of this array.
+ */
+ public function getKeyType() : Type
+ {
+ if ($this->keyType === null) {
+ return $this->defaultKeyType;
+ }
+
+ return $this->keyType;
+ }
+
+ /**
+ * Returns the value for the keys of this array.
+ */
+ public function getValueType() : Type
+ {
+ return $this->valueType;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString() : string
+ {
+ if ($this->keyType) {
+ return 'array<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+
+ if ($this->valueType instanceof Mixed_) {
+ return 'array';
+ }
+
+ if ($this->valueType instanceof Compound) {
+ return '(' . $this->valueType . ')[]';
+ }
+
+ return $this->valueType . '[]';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Array_.php b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
index 49b7c6e..7e3b13f 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
@@ -1,19 +1,18 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\Types;
-use phpDocumentor\Reflection\Type;
-
/**
* Represents an array type as described in the PSR-5, the PHPDoc Standard.
*
@@ -23,64 +22,6 @@ use phpDocumentor\Reflection\Type;
* 2. Types (`string[]`), where the value type is provided by preceding an opening and closing square bracket with a
* type name.
*/
-final class Array_ implements Type
+final class Array_ extends AbstractList
{
- /** @var Type */
- private $valueType;
-
- /** @var Type */
- private $keyType;
-
- /**
- * Initializes this representation of an array with the given Type or Fqsen.
- *
- * @param Type $valueType
- * @param Type $keyType
- */
- public function __construct(Type $valueType = null, Type $keyType = null)
- {
- if ($keyType === null) {
- $keyType = new Compound([ new String_(), new Integer() ]);
- }
- if ($valueType === null) {
- $valueType = new Mixed_();
- }
-
- $this->valueType = $valueType;
- $this->keyType = $keyType;
- }
-
- /**
- * Returns the type for the keys of this array.
- *
- * @return Type
- */
- public function getKeyType()
- {
- return $this->keyType;
- }
-
- /**
- * Returns the value for the keys of this array.
- *
- * @return Type
- */
- public function getValueType()
- {
- return $this->valueType;
- }
-
- /**
- * Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
- */
- public function __toString()
- {
- if ($this->valueType instanceof Mixed_) {
- return 'array';
- }
-
- return $this->valueType . '[]';
- }
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php
index f82b19e..2490917 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Boolean implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'bool';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php
index 68ebfbd..a0c3734 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Callable_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'callable';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Collection.php b/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
new file mode 100644
index 0000000..8699df6
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
@@ -0,0 +1,66 @@
+`
+ * 2. `ACollectionObject`
+ *
+ * - ACollectionObject can be 'array' or an object that can act as an array
+ * - aValueType and aKeyType can be any type expression
+ */
+final class Collection extends AbstractList
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this representation of an array with the given Type or Fqsen.
+ */
+ public function __construct(?Fqsen $fqsen, Type $valueType, ?Type $keyType = null)
+ {
+ parent::__construct($valueType, $keyType);
+
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen() : ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString() : string
+ {
+ $objectType = (string) ($this->fqsen ?? 'object');
+
+ if ($this->keyType === null) {
+ return $objectType . '<' . $this->valueType . '>';
+ }
+
+ return $objectType . '<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Compound.php b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
index be986c3..1da7bf9 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
@@ -1,20 +1,23 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\Types;
use ArrayIterator;
+use InvalidArgumentException;
use IteratorAggregate;
use phpDocumentor\Reflection\Type;
+use function implode;
/**
* Value Object representing a Compound Type.
@@ -32,13 +35,15 @@ final class Compound implements Type, IteratorAggregate
* Initializes a compound type (i.e. `string|int`) and tests if the provided types all implement the Type interface.
*
* @param Type[] $types
- * @throws \InvalidArgumentException when types are not all instance of Type
+ *
+ * @throws InvalidArgumentException When types are not all instance of Type.
*/
public function __construct(array $types)
{
foreach ($types as $type) {
+ /** @psalm-suppress RedundantConditionGivenDocblockType */
if (!$type instanceof Type) {
- throw new \InvalidArgumentException('A compound type can only have other types as elements');
+ throw new InvalidArgumentException('A compound type can only have other types as elements');
}
}
@@ -47,12 +52,8 @@ final class Compound implements Type, IteratorAggregate
/**
* Returns the type at the given index.
- *
- * @param integer $index
- *
- * @return Type|null
*/
- public function get($index)
+ public function get(int $index) : ?Type
{
if (!$this->has($index)) {
return null;
@@ -63,22 +64,16 @@ final class Compound implements Type, IteratorAggregate
/**
* Tests if this compound type has a type with the given index.
- *
- * @param integer $index
- *
- * @return bool
*/
- public function has($index)
+ public function has(int $index) : bool
{
return isset($this->types[$index]);
}
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return implode('|', $this->types);
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Context.php b/vendor/phpdocumentor/type-resolver/src/Types/Context.php
index 4e9ce5a..6e29baa 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Context.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Context.php
@@ -1,17 +1,22 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\Types;
+use function strlen;
+use function substr;
+use function trim;
+
/**
* Provides information about the Context in which the DocBlock occurs that receives this context.
*
@@ -31,26 +36,27 @@ final class Context
/** @var string The current namespace. */
private $namespace;
- /** @var array List of namespace aliases => Fully Qualified Namespace. */
+ /** @var string[] List of namespace aliases => Fully Qualified Namespace. */
private $namespaceAliases;
/**
* Initializes the new context and normalizes all passed namespaces to be in Qualified Namespace Name (QNN)
* format (without a preceding `\`).
*
- * @param string $namespace The namespace where this DocBlock resides in.
- * @param array $namespaceAliases List of namespace aliases => Fully Qualified Namespace.
+ * @param string $namespace The namespace where this DocBlock resides in.
+ * @param string[] $namespaceAliases List of namespace aliases => Fully Qualified Namespace.
*/
- public function __construct($namespace, array $namespaceAliases = [])
+ public function __construct(string $namespace, array $namespaceAliases = [])
{
- $this->namespace = ('global' !== $namespace && 'default' !== $namespace)
- ? trim((string)$namespace, '\\')
+ $this->namespace = $namespace !== 'global' && $namespace !== 'default'
+ ? trim($namespace, '\\')
: '';
foreach ($namespaceAliases as $alias => $fqnn) {
if ($fqnn[0] === '\\') {
$fqnn = substr($fqnn, 1);
}
+
if ($fqnn[strlen($fqnn) - 1] === '\\') {
$fqnn = substr($fqnn, 0, -1);
}
@@ -63,10 +69,8 @@ final class Context
/**
* Returns the Qualified Namespace Name (thus without `\` in front) where the associated element is in.
- *
- * @return string
*/
- public function getNamespace()
+ public function getNamespace() : string
{
return $this->namespace;
}
@@ -77,7 +81,7 @@ final class Context
*
* @return string[]
*/
- public function getNamespaceAliases()
+ public function getNamespaceAliases() : array
{
return $this->namespaceAliases;
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
index 30936a3..851a3c2 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
@@ -1,17 +1,44 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\Types;
+use ArrayIterator;
+use InvalidArgumentException;
+use ReflectionClass;
+use ReflectionClassConstant;
+use ReflectionMethod;
+use ReflectionParameter;
+use ReflectionProperty;
+use Reflector;
+use RuntimeException;
+use UnexpectedValueException;
+use const T_AS;
+use const T_CLASS;
+use const T_CURLY_OPEN;
+use const T_DOLLAR_OPEN_CURLY_BRACES;
+use const T_NAMESPACE;
+use const T_NS_SEPARATOR;
+use const T_STRING;
+use const T_USE;
+use function array_merge;
+use function file_exists;
+use function file_get_contents;
+use function get_class;
+use function is_string;
+use function token_get_all;
+use function trim;
+
/**
* Convenience class to create a Context for DocBlocks when not using the Reflection Component of phpDocumentor.
*
@@ -24,31 +51,78 @@ namespace phpDocumentor\Reflection\Types;
final class ContextFactory
{
/** The literal used at the end of a use statement. */
- const T_LITERAL_END_OF_USE = ';';
+ private const T_LITERAL_END_OF_USE = ';';
/** The literal used between sets of use statements */
- const T_LITERAL_USE_SEPARATOR = ',';
+ private const T_LITERAL_USE_SEPARATOR = ',';
/**
* Build a Context given a Class Reflection.
*
- * @param \Reflector $reflector
- *
* @see Context for more information on Contexts.
- *
- * @return Context
*/
- public function createFromReflector(\Reflector $reflector)
+ public function createFromReflector(Reflector $reflector) : Context
{
- if (method_exists($reflector, 'getDeclaringClass')) {
- $reflector = $reflector->getDeclaringClass();
+ if ($reflector instanceof ReflectionClass) {
+ return $this->createFromReflectionClass($reflector);
}
- $fileName = $reflector->getFileName();
- $namespace = $reflector->getNamespaceName();
+ if ($reflector instanceof ReflectionParameter) {
+ return $this->createFromReflectionParameter($reflector);
+ }
- if (file_exists($fileName)) {
- return $this->createForNamespace($namespace, file_get_contents($fileName));
+ if ($reflector instanceof ReflectionMethod) {
+ return $this->createFromReflectionMethod($reflector);
+ }
+
+ if ($reflector instanceof ReflectionProperty) {
+ return $this->createFromReflectionProperty($reflector);
+ }
+
+ if ($reflector instanceof ReflectionClassConstant) {
+ return $this->createFromReflectionClassConstant($reflector);
+ }
+
+ throw new UnexpectedValueException('Unhandled \Reflector instance given: ' . get_class($reflector));
+ }
+
+ private function createFromReflectionParameter(ReflectionParameter $parameter) : Context
+ {
+ $class = $parameter->getDeclaringClass();
+ if ($class) {
+ return $this->createFromReflectionClass($class);
+ }
+
+ throw new InvalidArgumentException('Unable to get class of ' . $parameter->getName());
+ }
+
+ private function createFromReflectionMethod(ReflectionMethod $method) : Context
+ {
+ return $this->createFromReflectionClass($method->getDeclaringClass());
+ }
+
+ private function createFromReflectionProperty(ReflectionProperty $property) : Context
+ {
+ return $this->createFromReflectionClass($property->getDeclaringClass());
+ }
+
+ private function createFromReflectionClassConstant(ReflectionClassConstant $constant) : Context
+ {
+ return $this->createFromReflectionClass($constant->getDeclaringClass());
+ }
+
+ private function createFromReflectionClass(ReflectionClass $class) : Context
+ {
+ $fileName = $class->getFileName();
+ $namespace = $class->getNamespaceName();
+
+ if (is_string($fileName) && file_exists($fileName)) {
+ $contents = file_get_contents($fileName);
+ if ($contents === false) {
+ throw new RuntimeException('Unable to read file "' . $fileName . '"');
+ }
+
+ return $this->createForNamespace($namespace, $contents);
}
return new Context($namespace, []);
@@ -57,19 +131,18 @@ final class ContextFactory
/**
* Build a Context for a namespace in the provided file contents.
*
- * @param string $namespace It does not matter if a `\` precedes the namespace name, this method first normalizes.
- * @param string $fileContents the file's contents to retrieve the aliases from with the given namespace.
- *
* @see Context for more information on Contexts.
*
- * @return Context
+ * @param string $namespace It does not matter if a `\` precedes the namespace name,
+ * this method first normalizes.
+ * @param string $fileContents The file's contents to retrieve the aliases from with the given namespace.
*/
- public function createForNamespace($namespace, $fileContents)
+ public function createForNamespace(string $namespace, string $fileContents) : Context
{
- $namespace = trim($namespace, '\\');
- $useStatements = [];
+ $namespace = trim($namespace, '\\');
+ $useStatements = [];
$currentNamespace = '';
- $tokens = new \ArrayIterator(token_get_all($fileContents));
+ $tokens = new ArrayIterator(token_get_all($fileContents));
while ($tokens->valid()) {
switch ($tokens->current()[0]) {
@@ -80,7 +153,7 @@ final class ContextFactory
// Fast-forward the iterator through the class so that any
// T_USE tokens found within are skipped - these are not
// valid namespace use statements so should be ignored.
- $braceLevel = 0;
+ $braceLevel = 0;
$firstBraceFound = false;
while ($tokens->valid() && ($braceLevel > 0 || !$firstBraceFound)) {
if ($tokens->current() === '{'
@@ -89,12 +162,14 @@ final class ContextFactory
if (!$firstBraceFound) {
$firstBraceFound = true;
}
- $braceLevel++;
+
+ ++$braceLevel;
}
if ($tokens->current() === '}') {
- $braceLevel--;
+ --$braceLevel;
}
+
$tokens->next();
}
break;
@@ -104,6 +179,7 @@ final class ContextFactory
}
break;
}
+
$tokens->next();
}
@@ -112,12 +188,8 @@ final class ContextFactory
/**
* Deduce the name from tokens when we are at the T_NAMESPACE token.
- *
- * @param \ArrayIterator $tokens
- *
- * @return string
*/
- private function parseNamespace(\ArrayIterator $tokens)
+ private function parseNamespace(ArrayIterator $tokens) : string
{
// skip to the first string or namespace separator
$this->skipToNextStringOrNamespaceSeparator($tokens);
@@ -135,22 +207,18 @@ final class ContextFactory
/**
* Deduce the names of all imports when we are at the T_USE token.
*
- * @param \ArrayIterator $tokens
- *
* @return string[]
*/
- private function parseUseStatement(\ArrayIterator $tokens)
+ private function parseUseStatement(ArrayIterator $tokens) : array
{
$uses = [];
- $continue = true;
- while ($continue) {
+ while (true) {
$this->skipToNextStringOrNamespaceSeparator($tokens);
- list($alias, $fqnn) = $this->extractUseStatement($tokens);
- $uses[$alias] = $fqnn;
+ $uses = array_merge($uses, $this->extractUseStatements($tokens));
if ($tokens->current()[0] === self::T_LITERAL_END_OF_USE) {
- $continue = false;
+ return $uses;
}
}
@@ -159,12 +227,8 @@ final class ContextFactory
/**
* Fast-forwards the iterator as longs as we don't encounter a T_STRING or T_NS_SEPARATOR token.
- *
- * @param \ArrayIterator $tokens
- *
- * @return void
*/
- private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens)
+ private function skipToNextStringOrNamespaceSeparator(ArrayIterator $tokens) : void
{
while ($tokens->valid() && ($tokens->current()[0] !== T_STRING) && ($tokens->current()[0] !== T_NS_SEPARATOR)) {
$tokens->next();
@@ -173,38 +237,114 @@ final class ContextFactory
/**
* Deduce the namespace name and alias of an import when we are at the T_USE token or have not reached the end of
- * a USE statement yet.
+ * a USE statement yet. This will return a key/value array of the alias => namespace.
*
- * @param \ArrayIterator $tokens
+ * @return string[]
*
- * @return string
+ * @psalm-suppress TypeDoesNotContainType
*/
- private function extractUseStatement(\ArrayIterator $tokens)
+ private function extractUseStatements(ArrayIterator $tokens) : array
{
- $result = [''];
- while ($tokens->valid()
- && ($tokens->current()[0] !== self::T_LITERAL_USE_SEPARATOR)
- && ($tokens->current()[0] !== self::T_LITERAL_END_OF_USE)
- ) {
- if ($tokens->current()[0] === T_AS) {
- $result[] = '';
+ $extractedUseStatements = [];
+ $groupedNs = '';
+ $currentNs = '';
+ $currentAlias = '';
+ $state = 'start';
+
+ while ($tokens->valid()) {
+ $currentToken = $tokens->current();
+ $tokenId = is_string($currentToken) ? $currentToken : $currentToken[0];
+ $tokenValue = is_string($currentToken) ? null : $currentToken[1];
+ switch ($state) {
+ case 'start':
+ switch ($tokenId) {
+ case T_STRING:
+ case T_NS_SEPARATOR:
+ $currentNs .= $tokenValue;
+ $currentAlias = $tokenValue;
+ break;
+ case T_CURLY_OPEN:
+ case '{':
+ $state = 'grouped';
+ $groupedNs = $currentNs;
+ break;
+ case T_AS:
+ $state = 'start-alias';
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+ break;
+ case 'start-alias':
+ switch ($tokenId) {
+ case T_STRING:
+ $currentAlias = $tokenValue;
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+ break;
+ case 'grouped':
+ switch ($tokenId) {
+ case T_STRING:
+ case T_NS_SEPARATOR:
+ $currentNs .= $tokenValue;
+ $currentAlias = $tokenValue;
+ break;
+ case T_AS:
+ $state = 'grouped-alias';
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ $state = 'grouped';
+ $extractedUseStatements[$currentAlias] = $currentNs;
+ $currentNs = $groupedNs;
+ $currentAlias = '';
+ break;
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+ break;
+ case 'grouped-alias':
+ switch ($tokenId) {
+ case T_STRING:
+ $currentAlias = $tokenValue;
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ $state = 'grouped';
+ $extractedUseStatements[$currentAlias] = $currentNs;
+ $currentNs = $groupedNs;
+ $currentAlias = '';
+ break;
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
}
- if ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) {
- $result[count($result) - 1] .= $tokens->current()[1];
+
+ if ($state === 'end') {
+ break;
}
+
$tokens->next();
}
- if (count($result) == 1) {
- $backslashPos = strrpos($result[0], '\\');
-
- if (false !== $backslashPos) {
- $result[] = substr($result[0], $backslashPos + 1);
- } else {
- $result[] = $result[0];
- }
+ if ($groupedNs !== $currentNs) {
+ $extractedUseStatements[$currentAlias] = $currentNs;
}
- return array_reverse($result);
+ return $extractedUseStatements;
}
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Float_.php b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php
index e58d896..7149c93 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Float_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Float_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'float';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Integer.php b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php
index be4555e..25d52e7 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Integer.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -18,10 +19,8 @@ final class Integer implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'int';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php
index 0cbf48f..4916951 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Iterable_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'iterable';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php b/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php
index c1c165f..470c60a 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Mixed_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'mixed';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Null_.php b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php
index 203b422..725f9d8 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Null_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Null_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'null';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php b/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php
index 3c6d1b1..0d38228 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -19,15 +20,11 @@ use phpDocumentor\Reflection\Type;
*/
final class Nullable implements Type
{
- /**
- * @var Type
- */
+ /** @var Type The actual type that is wrapped */
private $realType;
/**
* Initialises this nullable type using the real type embedded
- *
- * @param Type $realType
*/
public function __construct(Type $realType)
{
@@ -36,20 +33,16 @@ final class Nullable implements Type
/**
* Provide access to the actual type directly, if needed.
- *
- * @return Type
*/
- public function getActualType()
+ public function getActualType() : Type
{
return $this->realType;
}
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return '?' . $this->realType->__toString();
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Object_.php b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php
index 389f7c7..3155699 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Object_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php
@@ -1,19 +1,22 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection\Types;
+use InvalidArgumentException;
use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Type;
+use function strpos;
/**
* Value Object representing an object.
@@ -30,15 +33,14 @@ final class Object_ implements Type
/**
* Initializes this object with an optional FQSEN, if not provided this object is considered 'untyped'.
*
- * @param Fqsen $fqsen
- * @throws \InvalidArgumentException when provided $fqsen is not a valid type.
+ * @throws InvalidArgumentException When provided $fqsen is not a valid type.
*/
- public function __construct(Fqsen $fqsen = null)
+ public function __construct(?Fqsen $fqsen = null)
{
- if (strpos((string)$fqsen, '::') !== false || strpos((string)$fqsen, '()') !== false) {
- throw new \InvalidArgumentException(
+ if (strpos((string) $fqsen, '::') !== false || strpos((string) $fqsen, '()') !== false) {
+ throw new InvalidArgumentException(
'Object types can only refer to a class, interface or trait but a method, function, constant or '
- . 'property was received: ' . (string)$fqsen
+ . 'property was received: ' . (string) $fqsen
);
}
@@ -47,23 +49,16 @@ final class Object_ implements Type
/**
* Returns the FQSEN associated with this object.
- *
- * @return Fqsen|null
*/
- public function getFqsen()
+ public function getFqsen() : ?Fqsen
{
return $this->fqsen;
}
- /**
- * Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
- */
- public function __toString()
+ public function __toString() : string
{
if ($this->fqsen) {
- return (string)$this->fqsen;
+ return (string) $this->fqsen;
}
return 'object';
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php b/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php
index aabdbfb..8d7efb6 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -23,10 +24,8 @@ final class Parent_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'parent';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php b/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php
index a1b613d..b46ea9a 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Resource_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'resource';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php
index 1e2a660..6ce586c 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class Scalar implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'scalar';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Self_.php b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php
index 1ba3fc5..bcce03d 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Self_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -23,10 +24,8 @@ final class Self_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'self';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Static_.php b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php
index 9eb6729..112bf87 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Static_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -28,10 +29,8 @@ final class Static_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'static';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/String_.php b/vendor/phpdocumentor/type-resolver/src/Types/String_.php
index 8db5968..2af6342 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/String_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/String_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -21,10 +22,8 @@ final class String_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'string';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/This.php b/vendor/phpdocumentor/type-resolver/src/Types/This.php
index c098a93..4e1b33d 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/This.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/This.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -24,10 +25,8 @@ final class This implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return '$this';
}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Void_.php b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php
index 3d1be27..176039f 100644
--- a/vendor/phpdocumentor/type-resolver/src/Types/Void_.php
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php
@@ -1,12 +1,13 @@
- * @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
@@ -24,10 +25,8 @@ final class Void_ implements Type
{
/**
* Returns a rendered output of the Type as it would be used in a DocBlock.
- *
- * @return string
*/
- public function __toString()
+ public function __toString() : string
{
return 'void';
}
diff --git a/vendor/phpspec/prophecy/CHANGES.md b/vendor/phpspec/prophecy/CHANGES.md
index 37a4807..35f7b64 100644
--- a/vendor/phpspec/prophecy/CHANGES.md
+++ b/vendor/phpspec/prophecy/CHANGES.md
@@ -1,3 +1,10 @@
+1.9.0 / 2019/10/03
+==================
+
+* [added] Add willYield feature to Method Prophecy(@tkotosz)
+* [fixed] Allow `MethodProphecy::willThrow()` to accept Throwable as string (@timoschinkel )
+* [fixed] Allow new version of phpdocumentor/reflection-docblock (@ricpelo)
+
1.8.1 / 2019/06/13
==================
diff --git a/vendor/phpspec/prophecy/README.md b/vendor/phpspec/prophecy/README.md
index b190d43..3da9b59 100644
--- a/vendor/phpspec/prophecy/README.md
+++ b/vendor/phpspec/prophecy/README.md
@@ -12,7 +12,7 @@ enough to be used inside any testing framework out there with minimal effort.
```php
assertEquals('hashed_pass', $user->getPassword());
}
- protected function setup()
+ protected function setUp()
{
$this->prophet = new \Prophecy\Prophet;
}
@@ -206,6 +206,17 @@ $user->setName('everzet')->will(function ($args) use ($user) {
And now it doesn't matter how many times or in which order your methods are called.
What matters is their behaviors and how well you faked it.
+Note: If the method is called several times, you can use the following syntax to return different
+values for each call:
+
+```php
+$prophecy->read('123')->willReturn(1, 2, 3);
+```
+
+This feature is actually not recommended for most cases. Relying on the order of
+calls for the same arguments tends to make test fragile, as adding one more call
+can break everything.
+
#### Arguments wildcarding
The previous example is awesome (at least I hope it is for you), but that's not
diff --git a/vendor/phpspec/prophecy/composer.json b/vendor/phpspec/prophecy/composer.json
index 13b6658..7d22143 100644
--- a/vendor/phpspec/prophecy/composer.json
+++ b/vendor/phpspec/prophecy/composer.json
@@ -19,7 +19,7 @@
"require": {
"php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"doctrine/instantiator": "^1.0.2",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
index bc936c8..d52ad61 100644
--- a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
+++ b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
@@ -12,7 +12,6 @@
namespace Prophecy\Call;
use Prophecy\Exception\Prophecy\MethodProphecyException;
-use Prophecy\Prophecy\MethodProphecy;
use Prophecy\Prophecy\ObjectProphecy;
use Prophecy\Argument\ArgumentsWildcard;
use Prophecy\Util\StringUtil;
@@ -194,28 +193,6 @@ class CallCenter
);
}
- private function formatExceptionMessage(MethodProphecy $methodProphecy)
- {
- return sprintf(
- " - %s(\n".
- "%s\n".
- " )",
- $methodProphecy->getMethodName(),
- implode(
- ",\n",
- $this->indentArguments(
- array_map(
- function ($token) {
- return (string) $token;
- },
- $methodProphecy->getArgumentsWildcard()->getTokens()
- ),
- $indentationLength
- )
- )
- );
- }
-
private function indentArguments(array $arguments, $indentationLength)
{
return preg_replace_callback(
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
index c5f9a5c..6dab2d9 100644
--- a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
@@ -144,7 +144,7 @@ class ClassMirror
}
if (version_compare(PHP_VERSION, '7.0', '>=') && $method->hasReturnType()) {
- $returnType = (string) $method->getReturnType();
+ $returnType = PHP_VERSION_ID >= 70100 ? $method->getReturnType()->getName() : (string) $method->getReturnType();
$returnTypeLower = strtolower($returnType);
if ('self' === $returnTypeLower) {
@@ -231,7 +231,7 @@ class ClassMirror
}
if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) {
- return (string) $parameter->getType();
+ return PHP_VERSION_ID >= 70100 ? $parameter->getType()->getName() : (string) $parameter->getType();
}
return null;
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
index 7250fa3..26ec19e 100644
--- a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
@@ -41,7 +41,7 @@ class ThrowPromise implements PromiseInterface
public function __construct($exception)
{
if (is_string($exception)) {
- if (!class_exists($exception) || !$this->isAValidThrowable($exception)) {
+ if ((!class_exists($exception) && !interface_exists($exception)) || !$this->isAValidThrowable($exception)) {
throw new InvalidArgumentException(sprintf(
'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.',
$exception
@@ -94,6 +94,7 @@ class ThrowPromise implements PromiseInterface
*/
private function isAValidThrowable($exception)
{
- return is_a($exception, 'Exception', true) || is_subclass_of($exception, 'Throwable', true);
+ return is_a($exception, 'Exception', true)
+ || is_a($exception, 'Throwable', true);
}
}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
index 7084ed6..f33364c 100644
--- a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
@@ -71,7 +71,7 @@ class MethodProphecy
}
if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) {
- $type = (string) $reflectedMethod->getReturnType();
+ $type = PHP_VERSION_ID >= 70100 ? $reflectedMethod->getReturnType()->getName() : (string) $reflectedMethod->getReturnType();
if ('void' === $type) {
$this->voidReturnType = true;
@@ -180,6 +180,40 @@ class MethodProphecy
return $this->will(new Promise\ReturnPromise(func_get_args()));
}
+ /**
+ * @param array $items
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function willYield($items)
+ {
+ if ($this->voidReturnType) {
+ throw new MethodProphecyException(
+ "The method \"$this->methodName\" has a void return type, and so cannot yield anything",
+ $this
+ );
+ }
+
+ if (!is_array($items)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Expected array, but got %s.',
+ gettype($items)
+ ));
+ }
+
+ // Remove eval() when minimum version >=5.5
+ /** @var callable $generator */
+ $generator = eval('return function() use ($items) {
+ foreach ($items as $key => $value) {
+ yield $key => $value;
+ }
+ };');
+
+ return $this->will($generator);
+ }
+
/**
* Sets return argument promise to the prophecy.
*
diff --git a/vendor/phpunit/php-code-coverage/.gitattributes b/vendor/phpunit/php-code-coverage/.gitattributes
new file mode 100644
index 0000000..461090b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/.gitattributes
@@ -0,0 +1 @@
+*.php diff=php
diff --git a/vendor/phpunit/php-code-coverage/.github/CONTRIBUTING.md b/vendor/phpunit/php-code-coverage/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..76a4345
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/.github/CONTRIBUTING.md
@@ -0,0 +1 @@
+Please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for details on how to contribute to this project.
diff --git a/vendor/phpunit/php-code-coverage/.github/ISSUE_TEMPLATE.md b/vendor/phpunit/php-code-coverage/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..dc8e3b0
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,18 @@
+| Q | A
+| --------------------------| ---------------
+| php-code-coverage version | x.y.z
+| PHP version | x.y.z
+| Driver | Xdebug / PHPDBG
+| Xdebug version (if used) | x.y.z
+| Installation Method | Composer / PHPUnit PHAR
+| Usage Method | PHPUnit / other
+| PHPUnit version (if used) | x.y.z
+
+
+
diff --git a/vendor/sebastian/object-reflector/.gitignore b/vendor/phpunit/php-code-coverage/.gitignore
similarity index 70%
rename from vendor/sebastian/object-reflector/.gitignore
rename to vendor/phpunit/php-code-coverage/.gitignore
index c3e9d7e..603bc9e 100644
--- a/vendor/sebastian/object-reflector/.gitignore
+++ b/vendor/phpunit/php-code-coverage/.gitignore
@@ -1,4 +1,6 @@
+/tests/_files/tmp
+/vendor
+/composer.lock
/.idea
/.php_cs.cache
-/composer.lock
-/vendor
+
diff --git a/vendor/phar-io/version/.php_cs b/vendor/phpunit/php-code-coverage/.php_cs
similarity index 97%
rename from vendor/phar-io/version/.php_cs
rename to vendor/phpunit/php-code-coverage/.php_cs
index 159d6a3..de5cde1 100644
--- a/vendor/phar-io/version/.php_cs
+++ b/vendor/phpunit/php-code-coverage/.php_cs
@@ -3,6 +3,7 @@ $finder = Symfony\CS\Finder\DefaultFinder::create()
->files()
->in('src')
->in('tests')
+ ->exclude('_files')
->name('*.php');
return Symfony\CS\Config\Config::create()
@@ -12,6 +13,7 @@ return Symfony\CS\Config\Config::create()
array(
'align_double_arrow',
'align_equals',
+ 'braces',
'concat_with_spaces',
'duplicate_semicolon',
'elseif',
diff --git a/vendor/phpunit/php-code-coverage/.travis.yml b/vendor/phpunit/php-code-coverage/.travis.yml
new file mode 100644
index 0000000..96c6368
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/.travis.yml
@@ -0,0 +1,42 @@
+language: php
+
+php:
+ - 5.6
+ - 7.0
+ - 7.0snapshot
+ - 7.1
+ - 7.1snapshot
+ - master
+
+env:
+ matrix:
+ - DRIVER="xdebug"
+ - DRIVER="phpdbg"
+
+matrix:
+ allow_failures:
+ - php: master
+ fast_finish: true
+ exclude:
+ - php: 5.6
+ env: DRIVER="phpdbg"
+
+sudo: false
+
+before_install:
+ - composer self-update
+ - composer clear-cache
+
+install:
+ - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest --optimize-autoloader --prefer-stable
+
+script:
+ - if [[ "$DRIVER" = 'phpdbg' ]]; then phpdbg -qrr vendor/bin/phpunit --coverage-clover=coverage.xml; fi
+ - if [[ "$DRIVER" = 'xdebug' ]]; then vendor/bin/phpunit --coverage-clover=coverage.xml; fi
+
+after_success:
+ - bash <(curl -s https://codecov.io/bash)
+
+notifications:
+ email: false
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md
new file mode 100644
index 0000000..353b6f6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md
@@ -0,0 +1,56 @@
+# Changes in PHP_CodeCoverage 2.2
+
+All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.2.4] - 2015-10-06
+
+### Fixed
+
+* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag
+
+## [2.2.3] - 2015-09-14
+
+### Fixed
+
+* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets
+* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods
+* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly
+* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile
+
+## [2.2.2] - 2015-08-04
+
+### Added
+
+* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM
+
+### Changed
+
+* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365)
+
+## [2.2.1] - 2015-08-02
+
+### Changed
+
+* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365)
+
+## [2.2.0] - 2015-08-01
+
+### Added
+
+* Added a driver for PHPDBG (requires PHP 7)
+* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore`
+
+### Changed
+
+* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore`
+
+### Removed
+
+* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed
+
+[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4
+[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3
+[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2
+[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1
+[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md
new file mode 100644
index 0000000..a39fa8d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md
@@ -0,0 +1,31 @@
+# Changes in PHP_CodeCoverage 3.0
+
+All notable changes of the PHP_CodeCoverage 3.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [3.0.2] - 2015-11-12
+
+### Changed
+
+* It is now optional that `@deprecated` code is ignored
+
+## [3.0.1] - 2015-10-06
+
+### Fixed
+
+* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag
+
+## [3.0.0] - 2015-10-02
+
+### Changed
+
+* It is now mandatory to configure a whitelist
+
+### Removed
+
+* The blacklist functionality has been removed
+* PHP_CodeCoverage is no longer supported on PHP 5.3, PHP 5.4, and PHP 5.5
+
+[3.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2...3.0.0
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md
new file mode 100644
index 0000000..f7a0de9
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md
@@ -0,0 +1,30 @@
+# Changes in PHP_CodeCoverage 3.1
+
+All notable changes of the PHP_CodeCoverage 3.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [3.1.1] - 2016-02-04
+
+### Changed
+
+* Allow version 2.0.x of `sebastian/version` dependency
+
+## [3.1.0] - 2016-01-11
+
+### Added
+
+* Implemented [#234](https://github.com/sebastianbergmann/php-code-coverage/issues/234): Optionally raise an exception when a specified unit of code is not executed
+
+### Changed
+
+* The Clover XML report now contains cyclomatic complexity information
+* The Clover XML report now contains method visibility information
+* Cleanup and refactoring of various areas of code
+* Added missing test cases
+
+### Removed
+
+* The functionality controlled by the `mapTestClassNameToCoveredClassName` setting has been removed
+
+[3.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1.0...3.1.1
+[3.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0...3.1.0
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md
new file mode 100644
index 0000000..34c65cf
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md
@@ -0,0 +1,23 @@
+# Changes in PHP_CodeCoverage 3.2
+
+All notable changes of the PHP_CodeCoverage 3.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [3.2.1] - 2016-02-18
+
+### Changed
+
+* Updated dependency information in `composer.json`
+
+## [3.2.0] - 2016-02-13
+
+### Added
+
+* Added optional check for missing `@covers` annotation when the usage of `@covers` annotations is forced
+
+### Changed
+
+* Improved `PHP_CodeCoverage_UnintentionallyCoveredCodeException` message
+
+[3.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2.0...3.2.1
+[3.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1...3.2.0
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md
new file mode 100644
index 0000000..2cf1522
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md
@@ -0,0 +1,33 @@
+# Changes in PHP_CodeCoverage 3.3
+
+All notable changes of the PHP_CodeCoverage 3.3 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [3.3.3] - 2016-MM-DD
+
+### Fixed
+
+* Fixed [#438](https://github.com/sebastianbergmann/php-code-coverage/issues/438): Wrong base directory for Clover reports
+
+## [3.3.2] - 2016-05-25
+
+### Changed
+
+* The constructor of `PHP_CodeCoverage_Report_Text` now has default values for its parameters
+
+## [3.3.1] - 2016-04-08
+
+### Fixed
+
+* Fixed handling of lines that contain `declare` statements
+
+## [3.3.0] - 2016-03-03
+
+### Added
+
+* Added support for whitelisting classes for the unintentionally covered code unit check
+
+[3.3.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.2...3.3.3
+[3.3.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.1...3.3.2
+[3.3.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.0...3.3.1
+[3.3.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2...3.3.0
+
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md
new file mode 100644
index 0000000..30df010
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md
@@ -0,0 +1,67 @@
+# Changes in PHP_CodeCoverage 4.0
+
+All notable changes of the PHP_CodeCoverage 4.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [4.0.8] - 2017-04-02
+
+* Fixed [#515](https://github.com/sebastianbergmann/php-code-coverage/pull/515): Wrong use of recursive iterator causing duplicate entries in XML coverage report
+
+## [4.0.7] - 2017-03-01
+
+### Changed
+
+* Cleaned up requirements in `composer.json`
+
+## [4.0.6] - 2017-02-23
+
+### Changed
+
+* Added support for `phpunit/php-token-stream` 2.0
+* Updated HTML report assets
+
+## [4.0.5] - 2017-01-20
+
+### Fixed
+
+* Fixed formatting of executed lines percentage for classes in file view
+
+## [4.0.4] - 2016-12-20
+
+### Changed
+
+* Implemented [#432](https://github.com/sebastianbergmann/php-code-coverage/issues/432): Change how files with no executable lines are displayed in the HTML report
+
+## [4.0.3] - 2016-11-28
+
+### Changed
+
+* The check for unintentionally covered code is no longer performed for `@medium` and `@large` tests
+
+## [4.0.2] - 2016-11-01
+
+### Fixed
+
+* Fixed [#440](https://github.com/sebastianbergmann/php-code-coverage/pull/440): Dashboard charts not showing tooltips for data points
+
+## [4.0.1] - 2016-07-26
+
+### Fixed
+
+* Fixed [#458](https://github.com/sebastianbergmann/php-code-coverage/pull/458): XML report does not know about warning status
+
+## [4.0.0] - 2016-06-03
+
+### Changed
+
+* This component now uses namespaces
+
+[4.0.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.7...4.0.8
+[4.0.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.6...4.0.7
+[4.0.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.5...4.0.6
+[4.0.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.4...4.0.5
+[4.0.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3...4.0.0
+
diff --git a/vendor/phpunit/php-code-coverage/LICENSE b/vendor/phpunit/php-code-coverage/LICENSE
new file mode 100644
index 0000000..fcfa37e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/LICENSE
@@ -0,0 +1,33 @@
+PHP_CodeCoverage
+
+Copyright (c) 2009-2015, Sebastian Bergmann .
+All 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.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-code-coverage/README.md b/vendor/phpunit/php-code-coverage/README.md
new file mode 100644
index 0000000..c01384b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/README.md
@@ -0,0 +1,51 @@
+[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage)
+[![Build Status](https://travis-ci.org/sebastianbergmann/php-code-coverage.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-code-coverage)
+
+# PHP_CodeCoverage
+
+**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information.
+
+## Requirements
+
+PHP 5.6 is required but using the latest version of PHP is highly recommended.
+
+### PHP 5
+
+[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.2.1 of Xdebug is required but using the latest version is highly recommended.
+
+### PHP 7
+
+Version 2.4.0 (or later) of [Xdebug](http://xdebug.org/) as well as [phpdbg](http://phpdbg.com/docs) are supported sources of raw code coverage data for PHP 7.
+
+### HHVM
+
+A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phpunit/php-code-coverage
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phpunit/php-code-coverage
+
+## Using the PHP_CodeCoverage API
+
+```php
+start('');
+
+// ...
+
+$coverage->stop();
+
+$writer = new \SebastianBergmann\CodeCoverage\Report\Clover;
+$writer->process($coverage, '/tmp/clover.xml');
+
+$writer = new \SebastianBergmann\CodeCoverage\Report\Html\Facade;
+$writer->process($coverage, '/tmp/code-coverage-report');
+```
+
diff --git a/vendor/sebastian/object-reflector/build.xml b/vendor/phpunit/php-code-coverage/build.xml
similarity index 93%
rename from vendor/sebastian/object-reflector/build.xml
rename to vendor/phpunit/php-code-coverage/build.xml
index 3368432..d8168c2 100644
--- a/vendor/sebastian/object-reflector/build.xml
+++ b/vendor/phpunit/php-code-coverage/build.xml
@@ -1,5 +1,5 @@
-
+
@@ -19,4 +19,3 @@
-
diff --git a/vendor/phpunit/php-code-coverage/composer.json b/vendor/phpunit/php-code-coverage/composer.json
new file mode 100644
index 0000000..7ca434b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/composer.json
@@ -0,0 +1,51 @@
+{
+ "name": "phpunit/php-code-coverage",
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "type": "library",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "irc": "irc://irc.freenode.net/phpunit"
+ },
+ "require": {
+ "php": "^5.6 || ^7.0",
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "phpunit/php-file-iterator": "^1.3",
+ "phpunit/php-token-stream": "^1.4.2 || ^2.0",
+ "phpunit/php-text-template": "^1.2",
+ "sebastian/code-unit-reverse-lookup": "^1.0",
+ "sebastian/environment": "^1.3.2 || ^2.0",
+ "sebastian/version": "^1.0 || ^2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7",
+ "ext-xdebug": "^2.1.4"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.5.1"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ }
+}
diff --git a/vendor/phar-io/version/phpunit.xml b/vendor/phpunit/php-code-coverage/phpunit.xml
similarity index 64%
rename from vendor/phar-io/version/phpunit.xml
rename to vendor/phpunit/php-code-coverage/phpunit.xml
index c21ffbc..55822f0 100644
--- a/vendor/phar-io/version/phpunit.xml
+++ b/vendor/phpunit/php-code-coverage/phpunit.xml
@@ -1,14 +1,11 @@
- tests
+ tests/tests
@@ -16,4 +13,9 @@
src
+
+
+
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
new file mode 100644
index 0000000..35dab3d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
@@ -0,0 +1,1107 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+use SebastianBergmann\CodeCoverage\Driver\Driver;
+use SebastianBergmann\CodeCoverage\Driver\Xdebug;
+use SebastianBergmann\CodeCoverage\Driver\HHVM;
+use SebastianBergmann\CodeCoverage\Driver\PHPDBG;
+use SebastianBergmann\CodeCoverage\Node\Builder;
+use SebastianBergmann\CodeCoverage\Node\Directory;
+use SebastianBergmann\CodeUnitReverseLookup\Wizard;
+use SebastianBergmann\Environment\Runtime;
+
+/**
+ * Provides collection functionality for PHP code coverage information.
+ */
+class CodeCoverage
+{
+ /**
+ * @var Driver
+ */
+ private $driver;
+
+ /**
+ * @var Filter
+ */
+ private $filter;
+
+ /**
+ * @var Wizard
+ */
+ private $wizard;
+
+ /**
+ * @var bool
+ */
+ private $cacheTokens = false;
+
+ /**
+ * @var bool
+ */
+ private $checkForUnintentionallyCoveredCode = false;
+
+ /**
+ * @var bool
+ */
+ private $forceCoversAnnotation = false;
+
+ /**
+ * @var bool
+ */
+ private $checkForUnexecutedCoveredCode = false;
+
+ /**
+ * @var bool
+ */
+ private $checkForMissingCoversAnnotation = false;
+
+ /**
+ * @var bool
+ */
+ private $addUncoveredFilesFromWhitelist = true;
+
+ /**
+ * @var bool
+ */
+ private $processUncoveredFilesFromWhitelist = false;
+
+ /**
+ * @var bool
+ */
+ private $ignoreDeprecatedCode = false;
+
+ /**
+ * @var mixed
+ */
+ private $currentId;
+
+ /**
+ * Code coverage data.
+ *
+ * @var array
+ */
+ private $data = [];
+
+ /**
+ * @var array
+ */
+ private $ignoredLines = [];
+
+ /**
+ * @var bool
+ */
+ private $disableIgnoredLines = false;
+
+ /**
+ * Test data.
+ *
+ * @var array
+ */
+ private $tests = [];
+
+ /**
+ * @var string[]
+ */
+ private $unintentionallyCoveredSubclassesWhitelist = [];
+
+ /**
+ * Determine if the data has been initialized or not
+ *
+ * @var bool
+ */
+ private $isInitialized = false;
+
+ /**
+ * Determine whether we need to check for dead and unused code on each test
+ *
+ * @var bool
+ */
+ private $shouldCheckForDeadAndUnused = true;
+
+ /**
+ * Constructor.
+ *
+ * @param Driver $driver
+ * @param Filter $filter
+ *
+ * @throws RuntimeException
+ */
+ public function __construct(Driver $driver = null, Filter $filter = null)
+ {
+ if ($driver === null) {
+ $driver = $this->selectDriver();
+ }
+
+ if ($filter === null) {
+ $filter = new Filter;
+ }
+
+ $this->driver = $driver;
+ $this->filter = $filter;
+
+ $this->wizard = new Wizard;
+ }
+
+ /**
+ * Returns the code coverage information as a graph of node objects.
+ *
+ * @return Directory
+ */
+ public function getReport()
+ {
+ $builder = new Builder;
+
+ return $builder->build($this);
+ }
+
+ /**
+ * Clears collected code coverage data.
+ */
+ public function clear()
+ {
+ $this->isInitialized = false;
+ $this->currentId = null;
+ $this->data = [];
+ $this->tests = [];
+ }
+
+ /**
+ * Returns the filter object used.
+ *
+ * @return Filter
+ */
+ public function filter()
+ {
+ return $this->filter;
+ }
+
+ /**
+ * Returns the collected code coverage data.
+ * Set $raw = true to bypass all filters.
+ *
+ * @param bool $raw
+ *
+ * @return array
+ */
+ public function getData($raw = false)
+ {
+ if (!$raw && $this->addUncoveredFilesFromWhitelist) {
+ $this->addUncoveredFilesFromWhitelist();
+ }
+
+ return $this->data;
+ }
+
+ /**
+ * Sets the coverage data.
+ *
+ * @param array $data
+ */
+ public function setData(array $data)
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * Returns the test data.
+ *
+ * @return array
+ */
+ public function getTests()
+ {
+ return $this->tests;
+ }
+
+ /**
+ * Sets the test data.
+ *
+ * @param array $tests
+ */
+ public function setTests(array $tests)
+ {
+ $this->tests = $tests;
+ }
+
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param mixed $id
+ * @param bool $clear
+ *
+ * @throws InvalidArgumentException
+ */
+ public function start($id, $clear = false)
+ {
+ if (!is_bool($clear)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ if ($clear) {
+ $this->clear();
+ }
+
+ if ($this->isInitialized === false) {
+ $this->initializeData();
+ }
+
+ $this->currentId = $id;
+
+ $this->driver->start($this->shouldCheckForDeadAndUnused);
+ }
+
+ /**
+ * Stop collection of code coverage information.
+ *
+ * @param bool $append
+ * @param mixed $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @return array
+ *
+ * @throws InvalidArgumentException
+ */
+ public function stop($append = true, $linesToBeCovered = [], array $linesToBeUsed = [])
+ {
+ if (!is_bool($append)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) {
+ throw InvalidArgumentException::create(
+ 2,
+ 'array or false'
+ );
+ }
+
+ $data = $this->driver->stop();
+ $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed);
+
+ $this->currentId = null;
+
+ return $data;
+ }
+
+ /**
+ * Appends code coverage data.
+ *
+ * @param array $data
+ * @param mixed $id
+ * @param bool $append
+ * @param mixed $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @throws RuntimeException
+ */
+ public function append(array $data, $id = null, $append = true, $linesToBeCovered = [], array $linesToBeUsed = [])
+ {
+ if ($id === null) {
+ $id = $this->currentId;
+ }
+
+ if ($id === null) {
+ throw new RuntimeException;
+ }
+
+ $this->applyListsFilter($data);
+ $this->applyIgnoredLinesFilter($data);
+ $this->initializeFilesThatAreSeenTheFirstTime($data);
+
+ if (!$append) {
+ return;
+ }
+
+ if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') {
+ $this->applyCoversAnnotationFilter(
+ $data,
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+ }
+
+ if (empty($data)) {
+ return;
+ }
+
+ $size = 'unknown';
+ $status = null;
+
+ if ($id instanceof \PHPUnit_Framework_TestCase) {
+ $_size = $id->getSize();
+
+ if ($_size == \PHPUnit_Util_Test::SMALL) {
+ $size = 'small';
+ } elseif ($_size == \PHPUnit_Util_Test::MEDIUM) {
+ $size = 'medium';
+ } elseif ($_size == \PHPUnit_Util_Test::LARGE) {
+ $size = 'large';
+ }
+
+ $status = $id->getStatus();
+ $id = get_class($id) . '::' . $id->getName();
+ } elseif ($id instanceof \PHPUnit_Extensions_PhptTestCase) {
+ $size = 'large';
+ $id = $id->getName();
+ }
+
+ $this->tests[$id] = ['size' => $size, 'status' => $status];
+
+ foreach ($data as $file => $lines) {
+ if (!$this->filter->isFile($file)) {
+ continue;
+ }
+
+ foreach ($lines as $k => $v) {
+ if ($v == Driver::LINE_EXECUTED) {
+ if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) {
+ $this->data[$file][$k][] = $id;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Merges the data from another instance.
+ *
+ * @param CodeCoverage $that
+ */
+ public function merge(CodeCoverage $that)
+ {
+ $this->filter->setWhitelistedFiles(
+ array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles())
+ );
+
+ foreach ($that->data as $file => $lines) {
+ if (!isset($this->data[$file])) {
+ if (!$this->filter->isFiltered($file)) {
+ $this->data[$file] = $lines;
+ }
+
+ continue;
+ }
+
+ foreach ($lines as $line => $data) {
+ if ($data !== null) {
+ if (!isset($this->data[$file][$line])) {
+ $this->data[$file][$line] = $data;
+ } else {
+ $this->data[$file][$line] = array_unique(
+ array_merge($this->data[$file][$line], $data)
+ );
+ }
+ }
+ }
+ }
+
+ $this->tests = array_merge($this->tests, $that->getTests());
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setCacheTokens($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->cacheTokens = $flag;
+ }
+
+ /**
+ * @return bool
+ */
+ public function getCacheTokens()
+ {
+ return $this->cacheTokens;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setCheckForUnintentionallyCoveredCode($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->checkForUnintentionallyCoveredCode = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setForceCoversAnnotation($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->forceCoversAnnotation = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setCheckForMissingCoversAnnotation($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->checkForMissingCoversAnnotation = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setCheckForUnexecutedCoveredCode($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->checkForUnexecutedCoveredCode = $flag;
+ }
+
+ /**
+ * @deprecated
+ *
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setMapTestClassNameToCoveredClassName($flag)
+ {
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setAddUncoveredFilesFromWhitelist($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->addUncoveredFilesFromWhitelist = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setProcessUncoveredFilesFromWhitelist($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->processUncoveredFilesFromWhitelist = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setDisableIgnoredLines($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->disableIgnoredLines = $flag;
+ }
+
+ /**
+ * @param bool $flag
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setIgnoreDeprecatedCode($flag)
+ {
+ if (!is_bool($flag)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ $this->ignoreDeprecatedCode = $flag;
+ }
+
+ /**
+ * @param array $whitelist
+ */
+ public function setUnintentionallyCoveredSubclassesWhitelist(array $whitelist)
+ {
+ $this->unintentionallyCoveredSubclassesWhitelist = $whitelist;
+ }
+
+ /**
+ * Applies the @covers annotation filtering.
+ *
+ * @param array $data
+ * @param mixed $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @throws MissingCoversAnnotationException
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed)
+ {
+ if ($linesToBeCovered === false ||
+ ($this->forceCoversAnnotation && empty($linesToBeCovered))) {
+ if ($this->checkForMissingCoversAnnotation) {
+ throw new MissingCoversAnnotationException;
+ }
+
+ $data = [];
+
+ return;
+ }
+
+ if (empty($linesToBeCovered)) {
+ return;
+ }
+
+ if ($this->checkForUnintentionallyCoveredCode &&
+ (!$this->currentId instanceof \PHPUnit_Framework_TestCase ||
+ (!$this->currentId->isMedium() && !$this->currentId->isLarge()))) {
+ $this->performUnintentionallyCoveredCodeCheck(
+ $data,
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+ }
+
+ if ($this->checkForUnexecutedCoveredCode) {
+ $this->performUnexecutedCoveredCodeCheck($data, $linesToBeCovered, $linesToBeUsed);
+ }
+
+ $data = array_intersect_key($data, $linesToBeCovered);
+
+ foreach (array_keys($data) as $filename) {
+ $_linesToBeCovered = array_flip($linesToBeCovered[$filename]);
+
+ $data[$filename] = array_intersect_key(
+ $data[$filename],
+ $_linesToBeCovered
+ );
+ }
+ }
+
+ /**
+ * Applies the whitelist filtering.
+ *
+ * @param array $data
+ */
+ private function applyListsFilter(array &$data)
+ {
+ foreach (array_keys($data) as $filename) {
+ if ($this->filter->isFiltered($filename)) {
+ unset($data[$filename]);
+ }
+ }
+ }
+
+ /**
+ * Applies the "ignored lines" filtering.
+ *
+ * @param array $data
+ */
+ private function applyIgnoredLinesFilter(array &$data)
+ {
+ foreach (array_keys($data) as $filename) {
+ if (!$this->filter->isFile($filename)) {
+ continue;
+ }
+
+ foreach ($this->getLinesToBeIgnored($filename) as $line) {
+ unset($data[$filename][$line]);
+ }
+ }
+ }
+
+ /**
+ * @param array $data
+ */
+ private function initializeFilesThatAreSeenTheFirstTime(array $data)
+ {
+ foreach ($data as $file => $lines) {
+ if ($this->filter->isFile($file) && !isset($this->data[$file])) {
+ $this->data[$file] = [];
+
+ foreach ($lines as $k => $v) {
+ $this->data[$file][$k] = $v == -2 ? null : [];
+ }
+ }
+ }
+ }
+
+ /**
+ * Processes whitelisted files that are not covered.
+ */
+ private function addUncoveredFilesFromWhitelist()
+ {
+ $data = [];
+ $uncoveredFiles = array_diff(
+ $this->filter->getWhitelist(),
+ array_keys($this->data)
+ );
+
+ foreach ($uncoveredFiles as $uncoveredFile) {
+ if (!file_exists($uncoveredFile)) {
+ continue;
+ }
+
+ if (!$this->processUncoveredFilesFromWhitelist) {
+ $data[$uncoveredFile] = [];
+
+ $lines = count(file($uncoveredFile));
+
+ for ($i = 1; $i <= $lines; $i++) {
+ $data[$uncoveredFile][$i] = Driver::LINE_NOT_EXECUTED;
+ }
+ }
+ }
+
+ $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST');
+ }
+
+ /**
+ * Returns the lines of a source file that should be ignored.
+ *
+ * @param string $filename
+ *
+ * @return array
+ *
+ * @throws InvalidArgumentException
+ */
+ private function getLinesToBeIgnored($filename)
+ {
+ if (!is_string($filename)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'string'
+ );
+ }
+
+ if (!isset($this->ignoredLines[$filename])) {
+ $this->ignoredLines[$filename] = [];
+
+ if ($this->disableIgnoredLines) {
+ return $this->ignoredLines[$filename];
+ }
+
+ $ignore = false;
+ $stop = false;
+ $lines = file($filename);
+ $numLines = count($lines);
+
+ foreach ($lines as $index => $line) {
+ if (!trim($line)) {
+ $this->ignoredLines[$filename][] = $index + 1;
+ }
+ }
+
+ if ($this->cacheTokens) {
+ $tokens = \PHP_Token_Stream_CachingFactory::get($filename);
+ } else {
+ $tokens = new \PHP_Token_Stream($filename);
+ }
+
+ $classes = array_merge($tokens->getClasses(), $tokens->getTraits());
+ $tokens = $tokens->tokens();
+
+ foreach ($tokens as $token) {
+ switch (get_class($token)) {
+ case 'PHP_Token_COMMENT':
+ case 'PHP_Token_DOC_COMMENT':
+ $_token = trim($token);
+ $_line = trim($lines[$token->getLine() - 1]);
+
+ if ($_token == '// @codeCoverageIgnore' ||
+ $_token == '//@codeCoverageIgnore') {
+ $ignore = true;
+ $stop = true;
+ } elseif ($_token == '// @codeCoverageIgnoreStart' ||
+ $_token == '//@codeCoverageIgnoreStart') {
+ $ignore = true;
+ } elseif ($_token == '// @codeCoverageIgnoreEnd' ||
+ $_token == '//@codeCoverageIgnoreEnd') {
+ $stop = true;
+ }
+
+ if (!$ignore) {
+ $start = $token->getLine();
+ $end = $start + substr_count($token, "\n");
+
+ // Do not ignore the first line when there is a token
+ // before the comment
+ if (0 !== strpos($_token, $_line)) {
+ $start++;
+ }
+
+ for ($i = $start; $i < $end; $i++) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+
+ // A DOC_COMMENT token or a COMMENT token starting with "/*"
+ // does not contain the final \n character in its text
+ if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+ }
+ break;
+
+ case 'PHP_Token_INTERFACE':
+ case 'PHP_Token_TRAIT':
+ case 'PHP_Token_CLASS':
+ case 'PHP_Token_FUNCTION':
+ /* @var \PHP_Token_Interface $token */
+
+ $docblock = $token->getDocblock();
+
+ $this->ignoredLines[$filename][] = $token->getLine();
+
+ if (strpos($docblock, '@codeCoverageIgnore') || ($this->ignoreDeprecatedCode && strpos($docblock, '@deprecated'))) {
+ $endLine = $token->getEndLine();
+
+ for ($i = $token->getLine(); $i <= $endLine; $i++) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+ } elseif ($token instanceof \PHP_Token_INTERFACE ||
+ $token instanceof \PHP_Token_TRAIT ||
+ $token instanceof \PHP_Token_CLASS) {
+ if (empty($classes[$token->getName()]['methods'])) {
+ for ($i = $token->getLine();
+ $i <= $token->getEndLine();
+ $i++) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+ } else {
+ $firstMethod = array_shift(
+ $classes[$token->getName()]['methods']
+ );
+
+ do {
+ $lastMethod = array_pop(
+ $classes[$token->getName()]['methods']
+ );
+ } while ($lastMethod !== null &&
+ substr($lastMethod['signature'], 0, 18) == 'anonymous function');
+
+ if ($lastMethod === null) {
+ $lastMethod = $firstMethod;
+ }
+
+ for ($i = $token->getLine();
+ $i < $firstMethod['startLine'];
+ $i++) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+
+ for ($i = $token->getEndLine();
+ $i > $lastMethod['endLine'];
+ $i--) {
+ $this->ignoredLines[$filename][] = $i;
+ }
+ }
+ }
+ break;
+
+ case 'PHP_Token_NAMESPACE':
+ $this->ignoredLines[$filename][] = $token->getEndLine();
+
+ // Intentional fallthrough
+ case 'PHP_Token_DECLARE':
+ case 'PHP_Token_OPEN_TAG':
+ case 'PHP_Token_CLOSE_TAG':
+ case 'PHP_Token_USE':
+ $this->ignoredLines[$filename][] = $token->getLine();
+ break;
+ }
+
+ if ($ignore) {
+ $this->ignoredLines[$filename][] = $token->getLine();
+
+ if ($stop) {
+ $ignore = false;
+ $stop = false;
+ }
+ }
+ }
+
+ $this->ignoredLines[$filename][] = $numLines + 1;
+
+ $this->ignoredLines[$filename] = array_unique(
+ $this->ignoredLines[$filename]
+ );
+
+ sort($this->ignoredLines[$filename]);
+ }
+
+ return $this->ignoredLines[$filename];
+ }
+
+ /**
+ * @param array $data
+ * @param array $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed)
+ {
+ $allowedLines = $this->getAllowedLines(
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+
+ $unintentionallyCoveredUnits = [];
+
+ foreach ($data as $file => $_data) {
+ foreach ($_data as $line => $flag) {
+ if ($flag == 1 && !isset($allowedLines[$file][$line])) {
+ $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line);
+ }
+ }
+ }
+
+ $unintentionallyCoveredUnits = $this->processUnintentionallyCoveredUnits($unintentionallyCoveredUnits);
+
+ if (!empty($unintentionallyCoveredUnits)) {
+ throw new UnintentionallyCoveredCodeException(
+ $unintentionallyCoveredUnits
+ );
+ }
+ }
+
+ /**
+ * @param array $data
+ * @param array $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @throws CoveredCodeNotExecutedException
+ */
+ private function performUnexecutedCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed)
+ {
+ $expectedLines = $this->getAllowedLines(
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+
+ foreach ($data as $file => $_data) {
+ foreach (array_keys($_data) as $line) {
+ if (!isset($expectedLines[$file][$line])) {
+ continue;
+ }
+
+ unset($expectedLines[$file][$line]);
+ }
+ }
+
+ $message = '';
+
+ foreach ($expectedLines as $file => $lines) {
+ if (empty($lines)) {
+ continue;
+ }
+
+ foreach (array_keys($lines) as $line) {
+ $message .= sprintf('- %s:%d' . PHP_EOL, $file, $line);
+ }
+ }
+
+ if (!empty($message)) {
+ throw new CoveredCodeNotExecutedException($message);
+ }
+ }
+
+ /**
+ * @param array $linesToBeCovered
+ * @param array $linesToBeUsed
+ *
+ * @return array
+ */
+ private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed)
+ {
+ $allowedLines = [];
+
+ foreach (array_keys($linesToBeCovered) as $file) {
+ if (!isset($allowedLines[$file])) {
+ $allowedLines[$file] = [];
+ }
+
+ $allowedLines[$file] = array_merge(
+ $allowedLines[$file],
+ $linesToBeCovered[$file]
+ );
+ }
+
+ foreach (array_keys($linesToBeUsed) as $file) {
+ if (!isset($allowedLines[$file])) {
+ $allowedLines[$file] = [];
+ }
+
+ $allowedLines[$file] = array_merge(
+ $allowedLines[$file],
+ $linesToBeUsed[$file]
+ );
+ }
+
+ foreach (array_keys($allowedLines) as $file) {
+ $allowedLines[$file] = array_flip(
+ array_unique($allowedLines[$file])
+ );
+ }
+
+ return $allowedLines;
+ }
+
+ /**
+ * @return Driver
+ *
+ * @throws RuntimeException
+ */
+ private function selectDriver()
+ {
+ $runtime = new Runtime;
+
+ if (!$runtime->canCollectCodeCoverage()) {
+ throw new RuntimeException('No code coverage driver available');
+ }
+
+ if ($runtime->isHHVM()) {
+ return new HHVM;
+ } elseif ($runtime->isPHPDBG()) {
+ return new PHPDBG;
+ } else {
+ return new Xdebug;
+ }
+ }
+
+ /**
+ * @param array $unintentionallyCoveredUnits
+ *
+ * @return array
+ */
+ private function processUnintentionallyCoveredUnits(array $unintentionallyCoveredUnits)
+ {
+ $unintentionallyCoveredUnits = array_unique($unintentionallyCoveredUnits);
+ sort($unintentionallyCoveredUnits);
+
+ foreach (array_keys($unintentionallyCoveredUnits) as $k => $v) {
+ $unit = explode('::', $unintentionallyCoveredUnits[$k]);
+
+ if (count($unit) != 2) {
+ continue;
+ }
+
+ $class = new \ReflectionClass($unit[0]);
+
+ foreach ($this->unintentionallyCoveredSubclassesWhitelist as $whitelisted) {
+ if ($class->isSubclassOf($whitelisted)) {
+ unset($unintentionallyCoveredUnits[$k]);
+ break;
+ }
+ }
+ }
+
+ return array_values($unintentionallyCoveredUnits);
+ }
+
+ /**
+ * If we are processing uncovered files from whitelist,
+ * we can initialize the data before we start to speed up the tests
+ */
+ protected function initializeData()
+ {
+ $this->isInitialized = true;
+
+ if ($this->processUncoveredFilesFromWhitelist) {
+ $this->shouldCheckForDeadAndUnused = false;
+
+ $this->driver->start(true);
+
+ foreach ($this->filter->getWhitelist() as $file) {
+ if ($this->filter->isFile($file)) {
+ include_once($file);
+ }
+ }
+
+ $data = [];
+ $coverage = $this->driver->stop();
+
+ foreach ($coverage as $file => $fileCoverage) {
+ if ($this->filter->isFiltered($file)) {
+ continue;
+ }
+
+ foreach (array_keys($fileCoverage) as $key) {
+ if ($fileCoverage[$key] == Driver::LINE_EXECUTED) {
+ $fileCoverage[$key] = Driver::LINE_NOT_EXECUTED;
+ }
+ }
+
+ $data[$file] = $fileCoverage;
+ }
+
+ $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST');
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
new file mode 100644
index 0000000..bdd1b97
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
@@ -0,0 +1,52 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+/**
+ * Interface for code coverage drivers.
+ */
+interface Driver
+{
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ const LINE_EXECUTED = 1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ const LINE_NOT_EXECUTED = -1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ const LINE_NOT_EXECUTABLE = -2;
+
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param bool $determineUnusedAndDead
+ */
+ public function start($determineUnusedAndDead = true);
+
+ /**
+ * Stop collection of code coverage information.
+ *
+ * @return array
+ */
+ public function stop();
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php
new file mode 100644
index 0000000..b35ea81
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php
@@ -0,0 +1,29 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+/**
+ * Driver for HHVM's code coverage functionality.
+ *
+ * @codeCoverageIgnore
+ */
+class HHVM extends Xdebug
+{
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param bool $determineUnusedAndDead
+ */
+ public function start($determineUnusedAndDead = true)
+ {
+ xdebug_start_code_coverage();
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php
new file mode 100644
index 0000000..86cc844
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php
@@ -0,0 +1,111 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use SebastianBergmann\CodeCoverage\RuntimeException;
+
+/**
+ * Driver for PHPDBG's code coverage functionality.
+ *
+ * @codeCoverageIgnore
+ */
+class PHPDBG implements Driver
+{
+ /**
+ * Constructor.
+ */
+ public function __construct()
+ {
+ if (PHP_SAPI !== 'phpdbg') {
+ throw new RuntimeException(
+ 'This driver requires the PHPDBG SAPI'
+ );
+ }
+
+ if (!function_exists('phpdbg_start_oplog')) {
+ throw new RuntimeException(
+ 'This build of PHPDBG does not support code coverage'
+ );
+ }
+ }
+
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param bool $determineUnusedAndDead
+ */
+ public function start($determineUnusedAndDead = true)
+ {
+ phpdbg_start_oplog();
+ }
+
+ /**
+ * Stop collection of code coverage information.
+ *
+ * @return array
+ */
+ public function stop()
+ {
+ static $fetchedLines = [];
+
+ $dbgData = phpdbg_end_oplog();
+
+ if ($fetchedLines == []) {
+ $sourceLines = phpdbg_get_executable();
+ } else {
+ $newFiles = array_diff(
+ get_included_files(),
+ array_keys($fetchedLines)
+ );
+
+ if ($newFiles) {
+ $sourceLines = phpdbg_get_executable(
+ ['files' => $newFiles]
+ );
+ } else {
+ $sourceLines = [];
+ }
+ }
+
+ foreach ($sourceLines as $file => $lines) {
+ foreach ($lines as $lineNo => $numExecuted) {
+ $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED;
+ }
+ }
+
+ $fetchedLines = array_merge($fetchedLines, $sourceLines);
+
+ return $this->detectExecutedLines($fetchedLines, $dbgData);
+ }
+
+ /**
+ * Convert phpdbg based data into the format CodeCoverage expects
+ *
+ * @param array $sourceLines
+ * @param array $dbgData
+ *
+ * @return array
+ */
+ private function detectExecutedLines(array $sourceLines, array $dbgData)
+ {
+ foreach ($dbgData as $file => $coveredLines) {
+ foreach ($coveredLines as $lineNo => $numExecuted) {
+ // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown.
+ // make sure we only mark lines executed which are actually executable.
+ if (isset($sourceLines[$file][$lineNo])) {
+ $sourceLines[$file][$lineNo] = self::LINE_EXECUTED;
+ }
+ }
+ }
+
+ return $sourceLines;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php
new file mode 100644
index 0000000..30099e0
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php
@@ -0,0 +1,117 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use SebastianBergmann\CodeCoverage\RuntimeException;
+
+/**
+ * Driver for Xdebug's code coverage functionality.
+ *
+ * @codeCoverageIgnore
+ */
+class Xdebug implements Driver
+{
+ /**
+ * Cache the number of lines for each file
+ *
+ * @var array
+ */
+ private $cacheNumLines = [];
+
+ /**
+ * Constructor.
+ */
+ public function __construct()
+ {
+ if (!extension_loaded('xdebug')) {
+ throw new RuntimeException('This driver requires Xdebug');
+ }
+
+ if (version_compare(phpversion('xdebug'), '2.2.1', '>=') &&
+ !ini_get('xdebug.coverage_enable')) {
+ throw new RuntimeException(
+ 'xdebug.coverage_enable=On has to be set in php.ini'
+ );
+ }
+ }
+
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param bool $determineUnusedAndDead
+ */
+ public function start($determineUnusedAndDead = true)
+ {
+ if ($determineUnusedAndDead) {
+ xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
+ } else {
+ xdebug_start_code_coverage();
+ }
+ }
+
+ /**
+ * Stop collection of code coverage information.
+ *
+ * @return array
+ */
+ public function stop()
+ {
+ $data = xdebug_get_code_coverage();
+ xdebug_stop_code_coverage();
+
+ return $this->cleanup($data);
+ }
+
+ /**
+ * @param array $data
+ *
+ * @return array
+ */
+ private function cleanup(array $data)
+ {
+ foreach (array_keys($data) as $file) {
+ unset($data[$file][0]);
+
+ if (strpos($file, 'xdebug://debug-eval') !== 0 && file_exists($file)) {
+ $numLines = $this->getNumberOfLinesInFile($file);
+
+ foreach (array_keys($data[$file]) as $line) {
+ if ($line > $numLines) {
+ unset($data[$file][$line]);
+ }
+ }
+ }
+ }
+
+ return $data;
+ }
+
+ /**
+ * @param string $file
+ *
+ * @return int
+ */
+ private function getNumberOfLinesInFile($file)
+ {
+ if (!isset($this->cacheNumLines[$file])) {
+ $buffer = file_get_contents($file);
+ $lines = substr_count($buffer, "\n");
+
+ if (substr($buffer, -1) !== "\n") {
+ $lines++;
+ }
+
+ $this->cacheNumLines[$file] = $lines;
+ }
+
+ return $this->cacheNumLines[$file];
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php
new file mode 100644
index 0000000..ca28a23
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php
@@ -0,0 +1,18 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+/**
+ * Exception that is raised when covered code is not executed.
+ */
+class CoveredCodeNotExecutedException extends RuntimeException
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Exception.php b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php
new file mode 100644
index 0000000..a3ba4c4
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php
@@ -0,0 +1,18 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+/**
+ * Exception interface for php-code-coverage component.
+ */
+interface Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php
new file mode 100644
index 0000000..1733f6c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,37 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+ /**
+ * @param int $argument
+ * @param string $type
+ * @param mixed $value
+ *
+ * @return InvalidArgumentException
+ */
+ public static function create($argument, $type, $value = null)
+ {
+ $stack = debug_backtrace(0);
+
+ return new self(
+ sprintf(
+ 'Argument #%d%sof %s::%s() must be a %s',
+ $argument,
+ $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ',
+ $stack[1]['class'],
+ $stack[1]['function'],
+ $type
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php
new file mode 100644
index 0000000..7bc5cf3
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php
@@ -0,0 +1,18 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+/**
+ * Exception that is raised when @covers must be used but is not.
+ */
+class MissingCoversAnnotationException extends RuntimeException
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php
new file mode 100644
index 0000000..c143db7
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php
@@ -0,0 +1,15 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php
new file mode 100644
index 0000000..3ea542b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php
@@ -0,0 +1,54 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+/**
+ * Exception that is raised when code is unintentionally covered.
+ */
+class UnintentionallyCoveredCodeException extends RuntimeException
+{
+ /**
+ * @var array
+ */
+ private $unintentionallyCoveredUnits = [];
+
+ /**
+ * @param array $unintentionallyCoveredUnits
+ */
+ public function __construct(array $unintentionallyCoveredUnits)
+ {
+ $this->unintentionallyCoveredUnits = $unintentionallyCoveredUnits;
+
+ parent::__construct($this->toString());
+ }
+
+ /**
+ * @return array
+ */
+ public function getUnintentionallyCoveredUnits()
+ {
+ return $this->unintentionallyCoveredUnits;
+ }
+
+ /**
+ * @return string
+ */
+ private function toString()
+ {
+ $message = '';
+
+ foreach ($this->unintentionallyCoveredUnits as $unit) {
+ $message .= '- ' . $unit . "\n";
+ }
+
+ return $message;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Filter.php b/vendor/phpunit/php-code-coverage/src/Filter.php
new file mode 100644
index 0000000..771a657
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Filter.php
@@ -0,0 +1,173 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage;
+
+/**
+ * Filter for whitelisting of code coverage information.
+ */
+class Filter
+{
+ /**
+ * Source files that are whitelisted.
+ *
+ * @var array
+ */
+ private $whitelistedFiles = [];
+
+ /**
+ * Adds a directory to the whitelist (recursively).
+ *
+ * @param string $directory
+ * @param string $suffix
+ * @param string $prefix
+ */
+ public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '')
+ {
+ $facade = new \File_Iterator_Facade;
+ $files = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+ foreach ($files as $file) {
+ $this->addFileToWhitelist($file);
+ }
+ }
+
+ /**
+ * Adds a file to the whitelist.
+ *
+ * @param string $filename
+ */
+ public function addFileToWhitelist($filename)
+ {
+ $this->whitelistedFiles[realpath($filename)] = true;
+ }
+
+ /**
+ * Adds files to the whitelist.
+ *
+ * @param array $files
+ */
+ public function addFilesToWhitelist(array $files)
+ {
+ foreach ($files as $file) {
+ $this->addFileToWhitelist($file);
+ }
+ }
+
+ /**
+ * Removes a directory from the whitelist (recursively).
+ *
+ * @param string $directory
+ * @param string $suffix
+ * @param string $prefix
+ */
+ public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '')
+ {
+ $facade = new \File_Iterator_Facade;
+ $files = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+ foreach ($files as $file) {
+ $this->removeFileFromWhitelist($file);
+ }
+ }
+
+ /**
+ * Removes a file from the whitelist.
+ *
+ * @param string $filename
+ */
+ public function removeFileFromWhitelist($filename)
+ {
+ $filename = realpath($filename);
+
+ unset($this->whitelistedFiles[$filename]);
+ }
+
+ /**
+ * Checks whether a filename is a real filename.
+ *
+ * @param string $filename
+ *
+ * @return bool
+ */
+ public function isFile($filename)
+ {
+ if ($filename == '-' ||
+ strpos($filename, 'vfs://') === 0 ||
+ strpos($filename, 'xdebug://debug-eval') !== false ||
+ strpos($filename, 'eval()\'d code') !== false ||
+ strpos($filename, 'runtime-created function') !== false ||
+ strpos($filename, 'runkit created function') !== false ||
+ strpos($filename, 'assert code') !== false ||
+ strpos($filename, 'regexp code') !== false) {
+ return false;
+ }
+
+ return file_exists($filename);
+ }
+
+ /**
+ * Checks whether or not a file is filtered.
+ *
+ * @param string $filename
+ *
+ * @return bool
+ */
+ public function isFiltered($filename)
+ {
+ if (!$this->isFile($filename)) {
+ return true;
+ }
+
+ $filename = realpath($filename);
+
+ return !isset($this->whitelistedFiles[$filename]);
+ }
+
+ /**
+ * Returns the list of whitelisted files.
+ *
+ * @return array
+ */
+ public function getWhitelist()
+ {
+ return array_keys($this->whitelistedFiles);
+ }
+
+ /**
+ * Returns whether this filter has a whitelist.
+ *
+ * @return bool
+ */
+ public function hasWhitelist()
+ {
+ return !empty($this->whitelistedFiles);
+ }
+
+ /**
+ * Returns the whitelisted files.
+ *
+ * @return array
+ */
+ public function getWhitelistedFiles()
+ {
+ return $this->whitelistedFiles;
+ }
+
+ /**
+ * Sets the whitelisted files.
+ *
+ * @param array $whitelistedFiles
+ */
+ public function setWhitelistedFiles($whitelistedFiles)
+ {
+ $this->whitelistedFiles = $whitelistedFiles;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php
new file mode 100644
index 0000000..f360805
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php
@@ -0,0 +1,342 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use SebastianBergmann\CodeCoverage\Util;
+
+/**
+ * Base class for nodes in the code coverage information tree.
+ */
+abstract class AbstractNode implements \Countable
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var array
+ */
+ private $pathArray;
+
+ /**
+ * @var AbstractNode
+ */
+ private $parent;
+
+ /**
+ * @var string
+ */
+ private $id;
+
+ /**
+ * Constructor.
+ *
+ * @param string $name
+ * @param AbstractNode $parent
+ */
+ public function __construct($name, AbstractNode $parent = null)
+ {
+ if (substr($name, -1) == '/') {
+ $name = substr($name, 0, -1);
+ }
+
+ $this->name = $name;
+ $this->parent = $parent;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ if ($this->id === null) {
+ $parent = $this->getParent();
+
+ if ($parent === null) {
+ $this->id = 'index';
+ } else {
+ $parentId = $parent->getId();
+
+ if ($parentId == 'index') {
+ $this->id = str_replace(':', '_', $this->name);
+ } else {
+ $this->id = $parentId . '/' . $this->name;
+ }
+ }
+ }
+
+ return $this->id;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ if ($this->path === null) {
+ if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) {
+ $this->path = $this->name;
+ } else {
+ $this->path = $this->parent->getPath() . '/' . $this->name;
+ }
+ }
+
+ return $this->path;
+ }
+
+ /**
+ * @return array
+ */
+ public function getPathAsArray()
+ {
+ if ($this->pathArray === null) {
+ if ($this->parent === null) {
+ $this->pathArray = [];
+ } else {
+ $this->pathArray = $this->parent->getPathAsArray();
+ }
+
+ $this->pathArray[] = $this;
+ }
+
+ return $this->pathArray;
+ }
+
+ /**
+ * @return AbstractNode
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+
+ /**
+ * Returns the percentage of classes that has been tested.
+ *
+ * @param bool $asString
+ *
+ * @return int
+ */
+ public function getTestedClassesPercent($asString = true)
+ {
+ return Util::percent(
+ $this->getNumTestedClasses(),
+ $this->getNumClasses(),
+ $asString
+ );
+ }
+
+ /**
+ * Returns the percentage of traits that has been tested.
+ *
+ * @param bool $asString
+ *
+ * @return int
+ */
+ public function getTestedTraitsPercent($asString = true)
+ {
+ return Util::percent(
+ $this->getNumTestedTraits(),
+ $this->getNumTraits(),
+ $asString
+ );
+ }
+
+ /**
+ * Returns the percentage of traits that has been tested.
+ *
+ * @param bool $asString
+ *
+ * @return int
+ */
+ public function getTestedClassesAndTraitsPercent($asString = true)
+ {
+ return Util::percent(
+ $this->getNumTestedClassesAndTraits(),
+ $this->getNumClassesAndTraits(),
+ $asString
+ );
+ }
+
+ /**
+ * Returns the percentage of methods that has been tested.
+ *
+ * @param bool $asString
+ *
+ * @return int
+ */
+ public function getTestedMethodsPercent($asString = true)
+ {
+ return Util::percent(
+ $this->getNumTestedMethods(),
+ $this->getNumMethods(),
+ $asString
+ );
+ }
+
+ /**
+ * Returns the percentage of executed lines.
+ *
+ * @param bool $asString
+ *
+ * @return int
+ */
+ public function getLineExecutedPercent($asString = true)
+ {
+ return Util::percent(
+ $this->getNumExecutedLines(),
+ $this->getNumExecutableLines(),
+ $asString
+ );
+ }
+
+ /**
+ * Returns the number of classes and traits.
+ *
+ * @return int
+ */
+ public function getNumClassesAndTraits()
+ {
+ return $this->getNumClasses() + $this->getNumTraits();
+ }
+
+ /**
+ * Returns the number of tested classes and traits.
+ *
+ * @return int
+ */
+ public function getNumTestedClassesAndTraits()
+ {
+ return $this->getNumTestedClasses() + $this->getNumTestedTraits();
+ }
+
+ /**
+ * Returns the classes and traits of this node.
+ *
+ * @return array
+ */
+ public function getClassesAndTraits()
+ {
+ return array_merge($this->getClasses(), $this->getTraits());
+ }
+
+ /**
+ * Returns the classes of this node.
+ *
+ * @return array
+ */
+ abstract public function getClasses();
+
+ /**
+ * Returns the traits of this node.
+ *
+ * @return array
+ */
+ abstract public function getTraits();
+
+ /**
+ * Returns the functions of this node.
+ *
+ * @return array
+ */
+ abstract public function getFunctions();
+
+ /**
+ * Returns the LOC/CLOC/NCLOC of this node.
+ *
+ * @return array
+ */
+ abstract public function getLinesOfCode();
+
+ /**
+ * Returns the number of executable lines.
+ *
+ * @return int
+ */
+ abstract public function getNumExecutableLines();
+
+ /**
+ * Returns the number of executed lines.
+ *
+ * @return int
+ */
+ abstract public function getNumExecutedLines();
+
+ /**
+ * Returns the number of classes.
+ *
+ * @return int
+ */
+ abstract public function getNumClasses();
+
+ /**
+ * Returns the number of tested classes.
+ *
+ * @return int
+ */
+ abstract public function getNumTestedClasses();
+
+ /**
+ * Returns the number of traits.
+ *
+ * @return int
+ */
+ abstract public function getNumTraits();
+
+ /**
+ * Returns the number of tested traits.
+ *
+ * @return int
+ */
+ abstract public function getNumTestedTraits();
+
+ /**
+ * Returns the number of methods.
+ *
+ * @return int
+ */
+ abstract public function getNumMethods();
+
+ /**
+ * Returns the number of tested methods.
+ *
+ * @return int
+ */
+ abstract public function getNumTestedMethods();
+
+ /**
+ * Returns the number of functions.
+ *
+ * @return int
+ */
+ abstract public function getNumFunctions();
+
+ /**
+ * Returns the number of tested functions.
+ *
+ * @return int
+ */
+ abstract public function getNumTestedFunctions();
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Builder.php b/vendor/phpunit/php-code-coverage/src/Node/Builder.php
new file mode 100644
index 0000000..8a6a65c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Builder.php
@@ -0,0 +1,244 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+
+class Builder
+{
+ /**
+ * @param CodeCoverage $coverage
+ *
+ * @return Directory
+ */
+ public function build(CodeCoverage $coverage)
+ {
+ $files = $coverage->getData();
+ $commonPath = $this->reducePaths($files);
+ $root = new Directory(
+ $commonPath,
+ null
+ );
+
+ $this->addItems(
+ $root,
+ $this->buildDirectoryStructure($files),
+ $coverage->getTests(),
+ $coverage->getCacheTokens()
+ );
+
+ return $root;
+ }
+
+ /**
+ * @param Directory $root
+ * @param array $items
+ * @param array $tests
+ * @param bool $cacheTokens
+ */
+ private function addItems(Directory $root, array $items, array $tests, $cacheTokens)
+ {
+ foreach ($items as $key => $value) {
+ if (substr($key, -2) == '/f') {
+ $key = substr($key, 0, -2);
+
+ if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) {
+ $root->addFile($key, $value, $tests, $cacheTokens);
+ }
+ } else {
+ $child = $root->addDirectory($key);
+ $this->addItems($child, $value, $tests, $cacheTokens);
+ }
+ }
+ }
+
+ /**
+ * Builds an array representation of the directory structure.
+ *
+ * For instance,
+ *
+ *
+ * Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ *
+ *
+ * is transformed into
+ *
+ *
+ * Array
+ * (
+ * [.] => Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ * )
+ *
+ *
+ * @param array $files
+ *
+ * @return array
+ */
+ private function buildDirectoryStructure($files)
+ {
+ $result = [];
+
+ foreach ($files as $path => $file) {
+ $path = explode('/', $path);
+ $pointer = &$result;
+ $max = count($path);
+
+ for ($i = 0; $i < $max; $i++) {
+ if ($i == ($max - 1)) {
+ $type = '/f';
+ } else {
+ $type = '';
+ }
+
+ $pointer = &$pointer[$path[$i] . $type];
+ }
+
+ $pointer = $file;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Reduces the paths by cutting the longest common start path.
+ *
+ * For instance,
+ *
+ *
+ * Array
+ * (
+ * [/home/sb/Money/Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [/home/sb/Money/MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ *
+ *
+ * is reduced to
+ *
+ *
+ * Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ *
+ *
+ * @param array $files
+ *
+ * @return string
+ */
+ private function reducePaths(&$files)
+ {
+ if (empty($files)) {
+ return '.';
+ }
+
+ $commonPath = '';
+ $paths = array_keys($files);
+
+ if (count($files) == 1) {
+ $commonPath = dirname($paths[0]) . '/';
+ $files[basename($paths[0])] = $files[$paths[0]];
+
+ unset($files[$paths[0]]);
+
+ return $commonPath;
+ }
+
+ $max = count($paths);
+
+ for ($i = 0; $i < $max; $i++) {
+ // strip phar:// prefixes
+ if (strpos($paths[$i], 'phar://') === 0) {
+ $paths[$i] = substr($paths[$i], 7);
+ $paths[$i] = strtr($paths[$i], '/', DIRECTORY_SEPARATOR);
+ }
+ $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]);
+
+ if (empty($paths[$i][0])) {
+ $paths[$i][0] = DIRECTORY_SEPARATOR;
+ }
+ }
+
+ $done = false;
+ $max = count($paths);
+
+ while (!$done) {
+ for ($i = 0; $i < $max - 1; $i++) {
+ if (!isset($paths[$i][0]) ||
+ !isset($paths[$i+1][0]) ||
+ $paths[$i][0] != $paths[$i+1][0]) {
+ $done = true;
+ break;
+ }
+ }
+
+ if (!$done) {
+ $commonPath .= $paths[0][0];
+
+ if ($paths[0][0] != DIRECTORY_SEPARATOR) {
+ $commonPath .= DIRECTORY_SEPARATOR;
+ }
+
+ for ($i = 0; $i < $max; $i++) {
+ array_shift($paths[$i]);
+ }
+ }
+ }
+
+ $original = array_keys($files);
+ $max = count($original);
+
+ for ($i = 0; $i < $max; $i++) {
+ $files[implode('/', $paths[$i])] = $files[$original[$i]];
+ unset($files[$original[$i]]);
+ }
+
+ ksort($files);
+
+ return substr($commonPath, 0, -1);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/Node/Directory.php
new file mode 100644
index 0000000..6a9f28d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Directory.php
@@ -0,0 +1,483 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use SebastianBergmann\CodeCoverage\InvalidArgumentException;
+
+/**
+ * Represents a directory in the code coverage information tree.
+ */
+class Directory extends AbstractNode implements \IteratorAggregate
+{
+ /**
+ * @var AbstractNode[]
+ */
+ private $children = [];
+
+ /**
+ * @var Directory[]
+ */
+ private $directories = [];
+
+ /**
+ * @var File[]
+ */
+ private $files = [];
+
+ /**
+ * @var array
+ */
+ private $classes;
+
+ /**
+ * @var array
+ */
+ private $traits;
+
+ /**
+ * @var array
+ */
+ private $functions;
+
+ /**
+ * @var array
+ */
+ private $linesOfCode = null;
+
+ /**
+ * @var int
+ */
+ private $numFiles = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutableLines = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutedLines = -1;
+
+ /**
+ * @var int
+ */
+ private $numClasses = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedClasses = -1;
+
+ /**
+ * @var int
+ */
+ private $numTraits = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedTraits = -1;
+
+ /**
+ * @var int
+ */
+ private $numMethods = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedMethods = -1;
+
+ /**
+ * @var int
+ */
+ private $numFunctions = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedFunctions = -1;
+
+ /**
+ * Returns the number of files in/under this node.
+ *
+ * @return int
+ */
+ public function count()
+ {
+ if ($this->numFiles == -1) {
+ $this->numFiles = 0;
+
+ foreach ($this->children as $child) {
+ $this->numFiles += count($child);
+ }
+ }
+
+ return $this->numFiles;
+ }
+
+ /**
+ * Returns an iterator for this node.
+ *
+ * @return \RecursiveIteratorIterator
+ */
+ public function getIterator()
+ {
+ return new \RecursiveIteratorIterator(
+ new Iterator($this),
+ \RecursiveIteratorIterator::SELF_FIRST
+ );
+ }
+
+ /**
+ * Adds a new directory.
+ *
+ * @param string $name
+ *
+ * @return Directory
+ */
+ public function addDirectory($name)
+ {
+ $directory = new self($name, $this);
+
+ $this->children[] = $directory;
+ $this->directories[] = &$this->children[count($this->children) - 1];
+
+ return $directory;
+ }
+
+ /**
+ * Adds a new file.
+ *
+ * @param string $name
+ * @param array $coverageData
+ * @param array $testData
+ * @param bool $cacheTokens
+ *
+ * @return File
+ *
+ * @throws InvalidArgumentException
+ */
+ public function addFile($name, array $coverageData, array $testData, $cacheTokens)
+ {
+ $file = new File(
+ $name,
+ $this,
+ $coverageData,
+ $testData,
+ $cacheTokens
+ );
+
+ $this->children[] = $file;
+ $this->files[] = &$this->children[count($this->children) - 1];
+
+ $this->numExecutableLines = -1;
+ $this->numExecutedLines = -1;
+
+ return $file;
+ }
+
+ /**
+ * Returns the directories in this directory.
+ *
+ * @return array
+ */
+ public function getDirectories()
+ {
+ return $this->directories;
+ }
+
+ /**
+ * Returns the files in this directory.
+ *
+ * @return array
+ */
+ public function getFiles()
+ {
+ return $this->files;
+ }
+
+ /**
+ * Returns the child nodes of this node.
+ *
+ * @return array
+ */
+ public function getChildNodes()
+ {
+ return $this->children;
+ }
+
+ /**
+ * Returns the classes of this node.
+ *
+ * @return array
+ */
+ public function getClasses()
+ {
+ if ($this->classes === null) {
+ $this->classes = [];
+
+ foreach ($this->children as $child) {
+ $this->classes = array_merge(
+ $this->classes,
+ $child->getClasses()
+ );
+ }
+ }
+
+ return $this->classes;
+ }
+
+ /**
+ * Returns the traits of this node.
+ *
+ * @return array
+ */
+ public function getTraits()
+ {
+ if ($this->traits === null) {
+ $this->traits = [];
+
+ foreach ($this->children as $child) {
+ $this->traits = array_merge(
+ $this->traits,
+ $child->getTraits()
+ );
+ }
+ }
+
+ return $this->traits;
+ }
+
+ /**
+ * Returns the functions of this node.
+ *
+ * @return array
+ */
+ public function getFunctions()
+ {
+ if ($this->functions === null) {
+ $this->functions = [];
+
+ foreach ($this->children as $child) {
+ $this->functions = array_merge(
+ $this->functions,
+ $child->getFunctions()
+ );
+ }
+ }
+
+ return $this->functions;
+ }
+
+ /**
+ * Returns the LOC/CLOC/NCLOC of this node.
+ *
+ * @return array
+ */
+ public function getLinesOfCode()
+ {
+ if ($this->linesOfCode === null) {
+ $this->linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0];
+
+ foreach ($this->children as $child) {
+ $linesOfCode = $child->getLinesOfCode();
+
+ $this->linesOfCode['loc'] += $linesOfCode['loc'];
+ $this->linesOfCode['cloc'] += $linesOfCode['cloc'];
+ $this->linesOfCode['ncloc'] += $linesOfCode['ncloc'];
+ }
+ }
+
+ return $this->linesOfCode;
+ }
+
+ /**
+ * Returns the number of executable lines.
+ *
+ * @return int
+ */
+ public function getNumExecutableLines()
+ {
+ if ($this->numExecutableLines == -1) {
+ $this->numExecutableLines = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutableLines += $child->getNumExecutableLines();
+ }
+ }
+
+ return $this->numExecutableLines;
+ }
+
+ /**
+ * Returns the number of executed lines.
+ *
+ * @return int
+ */
+ public function getNumExecutedLines()
+ {
+ if ($this->numExecutedLines == -1) {
+ $this->numExecutedLines = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutedLines += $child->getNumExecutedLines();
+ }
+ }
+
+ return $this->numExecutedLines;
+ }
+
+ /**
+ * Returns the number of classes.
+ *
+ * @return int
+ */
+ public function getNumClasses()
+ {
+ if ($this->numClasses == -1) {
+ $this->numClasses = 0;
+
+ foreach ($this->children as $child) {
+ $this->numClasses += $child->getNumClasses();
+ }
+ }
+
+ return $this->numClasses;
+ }
+
+ /**
+ * Returns the number of tested classes.
+ *
+ * @return int
+ */
+ public function getNumTestedClasses()
+ {
+ if ($this->numTestedClasses == -1) {
+ $this->numTestedClasses = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedClasses += $child->getNumTestedClasses();
+ }
+ }
+
+ return $this->numTestedClasses;
+ }
+
+ /**
+ * Returns the number of traits.
+ *
+ * @return int
+ */
+ public function getNumTraits()
+ {
+ if ($this->numTraits == -1) {
+ $this->numTraits = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTraits += $child->getNumTraits();
+ }
+ }
+
+ return $this->numTraits;
+ }
+
+ /**
+ * Returns the number of tested traits.
+ *
+ * @return int
+ */
+ public function getNumTestedTraits()
+ {
+ if ($this->numTestedTraits == -1) {
+ $this->numTestedTraits = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedTraits += $child->getNumTestedTraits();
+ }
+ }
+
+ return $this->numTestedTraits;
+ }
+
+ /**
+ * Returns the number of methods.
+ *
+ * @return int
+ */
+ public function getNumMethods()
+ {
+ if ($this->numMethods == -1) {
+ $this->numMethods = 0;
+
+ foreach ($this->children as $child) {
+ $this->numMethods += $child->getNumMethods();
+ }
+ }
+
+ return $this->numMethods;
+ }
+
+ /**
+ * Returns the number of tested methods.
+ *
+ * @return int
+ */
+ public function getNumTestedMethods()
+ {
+ if ($this->numTestedMethods == -1) {
+ $this->numTestedMethods = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedMethods += $child->getNumTestedMethods();
+ }
+ }
+
+ return $this->numTestedMethods;
+ }
+
+ /**
+ * Returns the number of functions.
+ *
+ * @return int
+ */
+ public function getNumFunctions()
+ {
+ if ($this->numFunctions == -1) {
+ $this->numFunctions = 0;
+
+ foreach ($this->children as $child) {
+ $this->numFunctions += $child->getNumFunctions();
+ }
+ }
+
+ return $this->numFunctions;
+ }
+
+ /**
+ * Returns the number of tested functions.
+ *
+ * @return int
+ */
+ public function getNumTestedFunctions()
+ {
+ if ($this->numTestedFunctions == -1) {
+ $this->numTestedFunctions = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedFunctions += $child->getNumTestedFunctions();
+ }
+ }
+
+ return $this->numTestedFunctions;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/File.php b/vendor/phpunit/php-code-coverage/src/Node/File.php
new file mode 100644
index 0000000..44856f0
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/File.php
@@ -0,0 +1,722 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use SebastianBergmann\CodeCoverage\InvalidArgumentException;
+
+/**
+ * Represents a file in the code coverage information tree.
+ */
+class File extends AbstractNode
+{
+ /**
+ * @var array
+ */
+ private $coverageData;
+
+ /**
+ * @var array
+ */
+ private $testData;
+
+ /**
+ * @var int
+ */
+ private $numExecutableLines = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutedLines = 0;
+
+ /**
+ * @var array
+ */
+ private $classes = [];
+
+ /**
+ * @var array
+ */
+ private $traits = [];
+
+ /**
+ * @var array
+ */
+ private $functions = [];
+
+ /**
+ * @var array
+ */
+ private $linesOfCode = [];
+
+ /**
+ * @var int
+ */
+ private $numClasses = null;
+
+ /**
+ * @var int
+ */
+ private $numTestedClasses = 0;
+
+ /**
+ * @var int
+ */
+ private $numTraits = null;
+
+ /**
+ * @var int
+ */
+ private $numTestedTraits = 0;
+
+ /**
+ * @var int
+ */
+ private $numMethods = null;
+
+ /**
+ * @var int
+ */
+ private $numTestedMethods = null;
+
+ /**
+ * @var int
+ */
+ private $numTestedFunctions = null;
+
+ /**
+ * @var array
+ */
+ private $startLines = [];
+
+ /**
+ * @var array
+ */
+ private $endLines = [];
+
+ /**
+ * @var bool
+ */
+ private $cacheTokens;
+
+ /**
+ * Constructor.
+ *
+ * @param string $name
+ * @param AbstractNode $parent
+ * @param array $coverageData
+ * @param array $testData
+ * @param bool $cacheTokens
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct($name, AbstractNode $parent, array $coverageData, array $testData, $cacheTokens)
+ {
+ if (!is_bool($cacheTokens)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'boolean'
+ );
+ }
+
+ parent::__construct($name, $parent);
+
+ $this->coverageData = $coverageData;
+ $this->testData = $testData;
+ $this->cacheTokens = $cacheTokens;
+
+ $this->calculateStatistics();
+ }
+
+ /**
+ * Returns the number of files in/under this node.
+ *
+ * @return int
+ */
+ public function count()
+ {
+ return 1;
+ }
+
+ /**
+ * Returns the code coverage data of this node.
+ *
+ * @return array
+ */
+ public function getCoverageData()
+ {
+ return $this->coverageData;
+ }
+
+ /**
+ * Returns the test data of this node.
+ *
+ * @return array
+ */
+ public function getTestData()
+ {
+ return $this->testData;
+ }
+
+ /**
+ * Returns the classes of this node.
+ *
+ * @return array
+ */
+ public function getClasses()
+ {
+ return $this->classes;
+ }
+
+ /**
+ * Returns the traits of this node.
+ *
+ * @return array
+ */
+ public function getTraits()
+ {
+ return $this->traits;
+ }
+
+ /**
+ * Returns the functions of this node.
+ *
+ * @return array
+ */
+ public function getFunctions()
+ {
+ return $this->functions;
+ }
+
+ /**
+ * Returns the LOC/CLOC/NCLOC of this node.
+ *
+ * @return array
+ */
+ public function getLinesOfCode()
+ {
+ return $this->linesOfCode;
+ }
+
+ /**
+ * Returns the number of executable lines.
+ *
+ * @return int
+ */
+ public function getNumExecutableLines()
+ {
+ return $this->numExecutableLines;
+ }
+
+ /**
+ * Returns the number of executed lines.
+ *
+ * @return int
+ */
+ public function getNumExecutedLines()
+ {
+ return $this->numExecutedLines;
+ }
+
+ /**
+ * Returns the number of classes.
+ *
+ * @return int
+ */
+ public function getNumClasses()
+ {
+ if ($this->numClasses === null) {
+ $this->numClasses = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numClasses++;
+
+ continue 2;
+ }
+ }
+ }
+ }
+
+ return $this->numClasses;
+ }
+
+ /**
+ * Returns the number of tested classes.
+ *
+ * @return int
+ */
+ public function getNumTestedClasses()
+ {
+ return $this->numTestedClasses;
+ }
+
+ /**
+ * Returns the number of traits.
+ *
+ * @return int
+ */
+ public function getNumTraits()
+ {
+ if ($this->numTraits === null) {
+ $this->numTraits = 0;
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numTraits++;
+
+ continue 2;
+ }
+ }
+ }
+ }
+
+ return $this->numTraits;
+ }
+
+ /**
+ * Returns the number of tested traits.
+ *
+ * @return int
+ */
+ public function getNumTestedTraits()
+ {
+ return $this->numTestedTraits;
+ }
+
+ /**
+ * Returns the number of methods.
+ *
+ * @return int
+ */
+ public function getNumMethods()
+ {
+ if ($this->numMethods === null) {
+ $this->numMethods = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numMethods++;
+ }
+ }
+ }
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numMethods++;
+ }
+ }
+ }
+ }
+
+ return $this->numMethods;
+ }
+
+ /**
+ * Returns the number of tested methods.
+ *
+ * @return int
+ */
+ public function getNumTestedMethods()
+ {
+ if ($this->numTestedMethods === null) {
+ $this->numTestedMethods = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0 &&
+ $method['coverage'] == 100) {
+ $this->numTestedMethods++;
+ }
+ }
+ }
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0 &&
+ $method['coverage'] == 100) {
+ $this->numTestedMethods++;
+ }
+ }
+ }
+ }
+
+ return $this->numTestedMethods;
+ }
+
+ /**
+ * Returns the number of functions.
+ *
+ * @return int
+ */
+ public function getNumFunctions()
+ {
+ return count($this->functions);
+ }
+
+ /**
+ * Returns the number of tested functions.
+ *
+ * @return int
+ */
+ public function getNumTestedFunctions()
+ {
+ if ($this->numTestedFunctions === null) {
+ $this->numTestedFunctions = 0;
+
+ foreach ($this->functions as $function) {
+ if ($function['executableLines'] > 0 &&
+ $function['coverage'] == 100) {
+ $this->numTestedFunctions++;
+ }
+ }
+ }
+
+ return $this->numTestedFunctions;
+ }
+
+ /**
+ * Calculates coverage statistics for the file.
+ */
+ protected function calculateStatistics()
+ {
+ $classStack = $functionStack = [];
+
+ if ($this->cacheTokens) {
+ $tokens = \PHP_Token_Stream_CachingFactory::get($this->getPath());
+ } else {
+ $tokens = new \PHP_Token_Stream($this->getPath());
+ }
+
+ $this->processClasses($tokens);
+ $this->processTraits($tokens);
+ $this->processFunctions($tokens);
+ $this->linesOfCode = $tokens->getLinesOfCode();
+ unset($tokens);
+
+ for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) {
+ if (isset($this->startLines[$lineNumber])) {
+ // Start line of a class.
+ if (isset($this->startLines[$lineNumber]['className'])) {
+ if (isset($currentClass)) {
+ $classStack[] = &$currentClass;
+ }
+
+ $currentClass = &$this->startLines[$lineNumber];
+ } // Start line of a trait.
+ elseif (isset($this->startLines[$lineNumber]['traitName'])) {
+ $currentTrait = &$this->startLines[$lineNumber];
+ } // Start line of a method.
+ elseif (isset($this->startLines[$lineNumber]['methodName'])) {
+ $currentMethod = &$this->startLines[$lineNumber];
+ } // Start line of a function.
+ elseif (isset($this->startLines[$lineNumber]['functionName'])) {
+ if (isset($currentFunction)) {
+ $functionStack[] = &$currentFunction;
+ }
+
+ $currentFunction = &$this->startLines[$lineNumber];
+ }
+ }
+
+ if (isset($this->coverageData[$lineNumber])) {
+ if (isset($currentClass)) {
+ $currentClass['executableLines']++;
+ }
+
+ if (isset($currentTrait)) {
+ $currentTrait['executableLines']++;
+ }
+
+ if (isset($currentMethod)) {
+ $currentMethod['executableLines']++;
+ }
+
+ if (isset($currentFunction)) {
+ $currentFunction['executableLines']++;
+ }
+
+ $this->numExecutableLines++;
+
+ if (count($this->coverageData[$lineNumber]) > 0) {
+ if (isset($currentClass)) {
+ $currentClass['executedLines']++;
+ }
+
+ if (isset($currentTrait)) {
+ $currentTrait['executedLines']++;
+ }
+
+ if (isset($currentMethod)) {
+ $currentMethod['executedLines']++;
+ }
+
+ if (isset($currentFunction)) {
+ $currentFunction['executedLines']++;
+ }
+
+ $this->numExecutedLines++;
+ }
+ }
+
+ if (isset($this->endLines[$lineNumber])) {
+ // End line of a class.
+ if (isset($this->endLines[$lineNumber]['className'])) {
+ unset($currentClass);
+
+ if ($classStack) {
+ end($classStack);
+ $key = key($classStack);
+ $currentClass = &$classStack[$key];
+ unset($classStack[$key]);
+ }
+ } // End line of a trait.
+ elseif (isset($this->endLines[$lineNumber]['traitName'])) {
+ unset($currentTrait);
+ } // End line of a method.
+ elseif (isset($this->endLines[$lineNumber]['methodName'])) {
+ unset($currentMethod);
+ } // End line of a function.
+ elseif (isset($this->endLines[$lineNumber]['functionName'])) {
+ unset($currentFunction);
+
+ if ($functionStack) {
+ end($functionStack);
+ $key = key($functionStack);
+ $currentFunction = &$functionStack[$key];
+ unset($functionStack[$key]);
+ }
+ }
+ }
+ }
+
+ foreach ($this->traits as &$trait) {
+ foreach ($trait['methods'] as &$method) {
+ if ($method['executableLines'] > 0) {
+ $method['coverage'] = ($method['executedLines'] /
+ $method['executableLines']) * 100;
+ } else {
+ $method['coverage'] = 100;
+ }
+
+ $method['crap'] = $this->crap(
+ $method['ccn'],
+ $method['coverage']
+ );
+
+ $trait['ccn'] += $method['ccn'];
+ }
+
+ if ($trait['executableLines'] > 0) {
+ $trait['coverage'] = ($trait['executedLines'] /
+ $trait['executableLines']) * 100;
+
+ if ($trait['coverage'] == 100) {
+ $this->numTestedClasses++;
+ }
+ } else {
+ $trait['coverage'] = 100;
+ }
+
+ $trait['crap'] = $this->crap(
+ $trait['ccn'],
+ $trait['coverage']
+ );
+ }
+
+ foreach ($this->classes as &$class) {
+ foreach ($class['methods'] as &$method) {
+ if ($method['executableLines'] > 0) {
+ $method['coverage'] = ($method['executedLines'] /
+ $method['executableLines']) * 100;
+ } else {
+ $method['coverage'] = 100;
+ }
+
+ $method['crap'] = $this->crap(
+ $method['ccn'],
+ $method['coverage']
+ );
+
+ $class['ccn'] += $method['ccn'];
+ }
+
+ if ($class['executableLines'] > 0) {
+ $class['coverage'] = ($class['executedLines'] /
+ $class['executableLines']) * 100;
+
+ if ($class['coverage'] == 100) {
+ $this->numTestedClasses++;
+ }
+ } else {
+ $class['coverage'] = 100;
+ }
+
+ $class['crap'] = $this->crap(
+ $class['ccn'],
+ $class['coverage']
+ );
+ }
+ }
+
+ /**
+ * @param \PHP_Token_Stream $tokens
+ */
+ protected function processClasses(\PHP_Token_Stream $tokens)
+ {
+ $classes = $tokens->getClasses();
+ unset($tokens);
+
+ $link = $this->getId() . '.html#';
+
+ foreach ($classes as $className => $class) {
+ $this->classes[$className] = [
+ 'className' => $className,
+ 'methods' => [],
+ 'startLine' => $class['startLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'ccn' => 0,
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'package' => $class['package'],
+ 'link' => $link . $class['startLine']
+ ];
+
+ $this->startLines[$class['startLine']] = &$this->classes[$className];
+ $this->endLines[$class['endLine']] = &$this->classes[$className];
+
+ foreach ($class['methods'] as $methodName => $method) {
+ $this->classes[$className]['methods'][$methodName] = $this->newMethod($methodName, $method, $link);
+
+ $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName];
+ $this->endLines[$method['endLine']] = &$this->classes[$className]['methods'][$methodName];
+ }
+ }
+ }
+
+ /**
+ * @param \PHP_Token_Stream $tokens
+ */
+ protected function processTraits(\PHP_Token_Stream $tokens)
+ {
+ $traits = $tokens->getTraits();
+ unset($tokens);
+
+ $link = $this->getId() . '.html#';
+
+ foreach ($traits as $traitName => $trait) {
+ $this->traits[$traitName] = [
+ 'traitName' => $traitName,
+ 'methods' => [],
+ 'startLine' => $trait['startLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'ccn' => 0,
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'package' => $trait['package'],
+ 'link' => $link . $trait['startLine']
+ ];
+
+ $this->startLines[$trait['startLine']] = &$this->traits[$traitName];
+ $this->endLines[$trait['endLine']] = &$this->traits[$traitName];
+
+ foreach ($trait['methods'] as $methodName => $method) {
+ $this->traits[$traitName]['methods'][$methodName] = $this->newMethod($methodName, $method, $link);
+
+ $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName];
+ $this->endLines[$method['endLine']] = &$this->traits[$traitName]['methods'][$methodName];
+ }
+ }
+ }
+
+ /**
+ * @param \PHP_Token_Stream $tokens
+ */
+ protected function processFunctions(\PHP_Token_Stream $tokens)
+ {
+ $functions = $tokens->getFunctions();
+ unset($tokens);
+
+ $link = $this->getId() . '.html#';
+
+ foreach ($functions as $functionName => $function) {
+ $this->functions[$functionName] = [
+ 'functionName' => $functionName,
+ 'signature' => $function['signature'],
+ 'startLine' => $function['startLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'ccn' => $function['ccn'],
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $function['startLine']
+ ];
+
+ $this->startLines[$function['startLine']] = &$this->functions[$functionName];
+ $this->endLines[$function['endLine']] = &$this->functions[$functionName];
+ }
+ }
+
+ /**
+ * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code
+ * based on its cyclomatic complexity and percentage of code coverage.
+ *
+ * @param int $ccn
+ * @param float $coverage
+ *
+ * @return string
+ */
+ protected function crap($ccn, $coverage)
+ {
+ if ($coverage == 0) {
+ return (string) (pow($ccn, 2) + $ccn);
+ }
+
+ if ($coverage >= 95) {
+ return (string) $ccn;
+ }
+
+ return sprintf(
+ '%01.2F',
+ pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn
+ );
+ }
+
+ /**
+ * @param string $methodName
+ * @param array $method
+ * @param string $link
+ *
+ * @return array
+ */
+ private function newMethod($methodName, array $method, $link)
+ {
+ return [
+ 'methodName' => $methodName,
+ 'visibility' => $method['visibility'],
+ 'signature' => $method['signature'],
+ 'startLine' => $method['startLine'],
+ 'endLine' => $method['endLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'ccn' => $method['ccn'],
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $method['startLine'],
+ ];
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Iterator.php b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php
new file mode 100644
index 0000000..e246380
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php
@@ -0,0 +1,103 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+/**
+ * Recursive iterator for node object graphs.
+ */
+class Iterator implements \RecursiveIterator
+{
+ /**
+ * @var int
+ */
+ private $position;
+
+ /**
+ * @var AbstractNode[]
+ */
+ private $nodes;
+
+ /**
+ * @param Directory $node
+ */
+ public function __construct(Directory $node)
+ {
+ $this->nodes = $node->getChildNodes();
+ }
+
+ /**
+ * Rewinds the Iterator to the first element.
+ */
+ public function rewind()
+ {
+ $this->position = 0;
+ }
+
+ /**
+ * Checks if there is a current element after calls to rewind() or next().
+ *
+ * @return bool
+ */
+ public function valid()
+ {
+ return $this->position < count($this->nodes);
+ }
+
+ /**
+ * Returns the key of the current element.
+ *
+ * @return int
+ */
+ public function key()
+ {
+ return $this->position;
+ }
+
+ /**
+ * Returns the current element.
+ *
+ * @return \PHPUnit_Framework_Test
+ */
+ public function current()
+ {
+ return $this->valid() ? $this->nodes[$this->position] : null;
+ }
+
+ /**
+ * Moves forward to next element.
+ */
+ public function next()
+ {
+ $this->position++;
+ }
+
+ /**
+ * Returns the sub iterator for the current element.
+ *
+ * @return Iterator
+ */
+ public function getChildren()
+ {
+ return new self(
+ $this->nodes[$this->position]
+ );
+ }
+
+ /**
+ * Checks whether the current element has children.
+ *
+ * @return bool
+ */
+ public function hasChildren()
+ {
+ return $this->nodes[$this->position] instanceof Directory;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Clover.php b/vendor/phpunit/php-code-coverage/src/Report/Clover.php
new file mode 100644
index 0000000..054b1df
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Clover.php
@@ -0,0 +1,251 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Node\File;
+
+/**
+ * Generates a Clover XML logfile from a code coverage object.
+ */
+class Clover
+{
+ /**
+ * @param CodeCoverage $coverage
+ * @param string $target
+ * @param string $name
+ *
+ * @return string
+ */
+ public function process(CodeCoverage $coverage, $target = null, $name = null)
+ {
+ $xmlDocument = new \DOMDocument('1.0', 'UTF-8');
+ $xmlDocument->formatOutput = true;
+
+ $xmlCoverage = $xmlDocument->createElement('coverage');
+ $xmlCoverage->setAttribute('generated', (int) $_SERVER['REQUEST_TIME']);
+ $xmlDocument->appendChild($xmlCoverage);
+
+ $xmlProject = $xmlDocument->createElement('project');
+ $xmlProject->setAttribute('timestamp', (int) $_SERVER['REQUEST_TIME']);
+
+ if (is_string($name)) {
+ $xmlProject->setAttribute('name', $name);
+ }
+
+ $xmlCoverage->appendChild($xmlProject);
+
+ $packages = [];
+ $report = $coverage->getReport();
+ unset($coverage);
+
+ foreach ($report as $item) {
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ /* @var File $item */
+
+ $xmlFile = $xmlDocument->createElement('file');
+ $xmlFile->setAttribute('name', $item->getPath());
+
+ $classes = $item->getClassesAndTraits();
+ $coverage = $item->getCoverageData();
+ $lines = [];
+ $namespace = 'global';
+
+ foreach ($classes as $className => $class) {
+ $classStatements = 0;
+ $coveredClassStatements = 0;
+ $coveredMethods = 0;
+ $classMethods = 0;
+
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['executableLines'] == 0) {
+ continue;
+ }
+
+ $classMethods++;
+ $classStatements += $method['executableLines'];
+ $coveredClassStatements += $method['executedLines'];
+
+ if ($method['coverage'] == 100) {
+ $coveredMethods++;
+ }
+
+ $methodCount = 0;
+
+ foreach (range($method['startLine'], $method['endLine']) as $line) {
+ if (isset($coverage[$line]) && ($coverage[$line] !== null)) {
+ $methodCount = max($methodCount, count($coverage[$line]));
+ }
+ }
+
+ $lines[$method['startLine']] = [
+ 'ccn' => $method['ccn'],
+ 'count' => $methodCount,
+ 'crap' => $method['crap'],
+ 'type' => 'method',
+ 'visibility' => $method['visibility'],
+ 'name' => $methodName
+ ];
+ }
+
+ if (!empty($class['package']['namespace'])) {
+ $namespace = $class['package']['namespace'];
+ }
+
+ $xmlClass = $xmlDocument->createElement('class');
+ $xmlClass->setAttribute('name', $className);
+ $xmlClass->setAttribute('namespace', $namespace);
+
+ if (!empty($class['package']['fullPackage'])) {
+ $xmlClass->setAttribute(
+ 'fullPackage',
+ $class['package']['fullPackage']
+ );
+ }
+
+ if (!empty($class['package']['category'])) {
+ $xmlClass->setAttribute(
+ 'category',
+ $class['package']['category']
+ );
+ }
+
+ if (!empty($class['package']['package'])) {
+ $xmlClass->setAttribute(
+ 'package',
+ $class['package']['package']
+ );
+ }
+
+ if (!empty($class['package']['subpackage'])) {
+ $xmlClass->setAttribute(
+ 'subpackage',
+ $class['package']['subpackage']
+ );
+ }
+
+ $xmlFile->appendChild($xmlClass);
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('complexity', $class['ccn']);
+ $xmlMetrics->setAttribute('methods', $classMethods);
+ $xmlMetrics->setAttribute('coveredmethods', $coveredMethods);
+ $xmlMetrics->setAttribute('conditionals', 0);
+ $xmlMetrics->setAttribute('coveredconditionals', 0);
+ $xmlMetrics->setAttribute('statements', $classStatements);
+ $xmlMetrics->setAttribute('coveredstatements', $coveredClassStatements);
+ $xmlMetrics->setAttribute('elements', $classMethods + $classStatements /* + conditionals */);
+ $xmlMetrics->setAttribute('coveredelements', $coveredMethods + $coveredClassStatements /* + coveredconditionals */);
+ $xmlClass->appendChild($xmlMetrics);
+ }
+
+ foreach ($coverage as $line => $data) {
+ if ($data === null || isset($lines[$line])) {
+ continue;
+ }
+
+ $lines[$line] = [
+ 'count' => count($data), 'type' => 'stmt'
+ ];
+ }
+
+ ksort($lines);
+
+ foreach ($lines as $line => $data) {
+ $xmlLine = $xmlDocument->createElement('line');
+ $xmlLine->setAttribute('num', $line);
+ $xmlLine->setAttribute('type', $data['type']);
+
+ if (isset($data['name'])) {
+ $xmlLine->setAttribute('name', $data['name']);
+ }
+
+ if (isset($data['visibility'])) {
+ $xmlLine->setAttribute('visibility', $data['visibility']);
+ }
+
+ if (isset($data['ccn'])) {
+ $xmlLine->setAttribute('complexity', $data['ccn']);
+ }
+
+ if (isset($data['crap'])) {
+ $xmlLine->setAttribute('crap', $data['crap']);
+ }
+
+ $xmlLine->setAttribute('count', $data['count']);
+ $xmlFile->appendChild($xmlLine);
+ }
+
+ $linesOfCode = $item->getLinesOfCode();
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('loc', $linesOfCode['loc']);
+ $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']);
+ $xmlMetrics->setAttribute('classes', $item->getNumClassesAndTraits());
+ $xmlMetrics->setAttribute('methods', $item->getNumMethods());
+ $xmlMetrics->setAttribute('coveredmethods', $item->getNumTestedMethods());
+ $xmlMetrics->setAttribute('conditionals', 0);
+ $xmlMetrics->setAttribute('coveredconditionals', 0);
+ $xmlMetrics->setAttribute('statements', $item->getNumExecutableLines());
+ $xmlMetrics->setAttribute('coveredstatements', $item->getNumExecutedLines());
+ $xmlMetrics->setAttribute('elements', $item->getNumMethods() + $item->getNumExecutableLines() /* + conditionals */);
+ $xmlMetrics->setAttribute('coveredelements', $item->getNumTestedMethods() + $item->getNumExecutedLines() /* + coveredconditionals */);
+ $xmlFile->appendChild($xmlMetrics);
+
+ if ($namespace == 'global') {
+ $xmlProject->appendChild($xmlFile);
+ } else {
+ if (!isset($packages[$namespace])) {
+ $packages[$namespace] = $xmlDocument->createElement(
+ 'package'
+ );
+
+ $packages[$namespace]->setAttribute('name', $namespace);
+ $xmlProject->appendChild($packages[$namespace]);
+ }
+
+ $packages[$namespace]->appendChild($xmlFile);
+ }
+ }
+
+ $linesOfCode = $report->getLinesOfCode();
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('files', count($report));
+ $xmlMetrics->setAttribute('loc', $linesOfCode['loc']);
+ $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']);
+ $xmlMetrics->setAttribute('classes', $report->getNumClassesAndTraits());
+ $xmlMetrics->setAttribute('methods', $report->getNumMethods());
+ $xmlMetrics->setAttribute('coveredmethods', $report->getNumTestedMethods());
+ $xmlMetrics->setAttribute('conditionals', 0);
+ $xmlMetrics->setAttribute('coveredconditionals', 0);
+ $xmlMetrics->setAttribute('statements', $report->getNumExecutableLines());
+ $xmlMetrics->setAttribute('coveredstatements', $report->getNumExecutedLines());
+ $xmlMetrics->setAttribute('elements', $report->getNumMethods() + $report->getNumExecutableLines() /* + conditionals */);
+ $xmlMetrics->setAttribute('coveredelements', $report->getNumTestedMethods() + $report->getNumExecutedLines() /* + coveredconditionals */);
+ $xmlProject->appendChild($xmlMetrics);
+
+ $buffer = $xmlDocument->saveXML();
+
+ if ($target !== null) {
+ if (!is_dir(dirname($target))) {
+ mkdir(dirname($target), 0777, true);
+ }
+
+ file_put_contents($target, $buffer);
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php
new file mode 100644
index 0000000..7adf78f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php
@@ -0,0 +1,172 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Node\File;
+use SebastianBergmann\CodeCoverage\InvalidArgumentException;
+
+class Crap4j
+{
+ /**
+ * @var int
+ */
+ private $threshold;
+
+ /**
+ * @param int $threshold
+ */
+ public function __construct($threshold = 30)
+ {
+ if (!is_int($threshold)) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'integer'
+ );
+ }
+
+ $this->threshold = $threshold;
+ }
+
+ /**
+ * @param CodeCoverage $coverage
+ * @param string $target
+ * @param string $name
+ *
+ * @return string
+ */
+ public function process(CodeCoverage $coverage, $target = null, $name = null)
+ {
+ $document = new \DOMDocument('1.0', 'UTF-8');
+ $document->formatOutput = true;
+
+ $root = $document->createElement('crap_result');
+ $document->appendChild($root);
+
+ $project = $document->createElement('project', is_string($name) ? $name : '');
+ $root->appendChild($project);
+ $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s', (int) $_SERVER['REQUEST_TIME'])));
+
+ $stats = $document->createElement('stats');
+ $methodsNode = $document->createElement('methods');
+
+ $report = $coverage->getReport();
+ unset($coverage);
+
+ $fullMethodCount = 0;
+ $fullCrapMethodCount = 0;
+ $fullCrapLoad = 0;
+ $fullCrap = 0;
+
+ foreach ($report as $item) {
+ $namespace = 'global';
+
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ $file = $document->createElement('file');
+ $file->setAttribute('name', $item->getPath());
+
+ $classes = $item->getClassesAndTraits();
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ $crapLoad = $this->getCrapLoad($method['crap'], $method['ccn'], $method['coverage']);
+
+ $fullCrap += $method['crap'];
+ $fullCrapLoad += $crapLoad;
+ $fullMethodCount++;
+
+ if ($method['crap'] >= $this->threshold) {
+ $fullCrapMethodCount++;
+ }
+
+ $methodNode = $document->createElement('method');
+
+ if (!empty($class['package']['namespace'])) {
+ $namespace = $class['package']['namespace'];
+ }
+
+ $methodNode->appendChild($document->createElement('package', $namespace));
+ $methodNode->appendChild($document->createElement('className', $className));
+ $methodNode->appendChild($document->createElement('methodName', $methodName));
+ $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature'])));
+ $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature'])));
+ $methodNode->appendChild($document->createElement('crap', $this->roundValue($method['crap'])));
+ $methodNode->appendChild($document->createElement('complexity', $method['ccn']));
+ $methodNode->appendChild($document->createElement('coverage', $this->roundValue($method['coverage'])));
+ $methodNode->appendChild($document->createElement('crapLoad', round($crapLoad)));
+
+ $methodsNode->appendChild($methodNode);
+ }
+ }
+ }
+
+ $stats->appendChild($document->createElement('name', 'Method Crap Stats'));
+ $stats->appendChild($document->createElement('methodCount', $fullMethodCount));
+ $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount));
+ $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad)));
+ $stats->appendChild($document->createElement('totalCrap', $fullCrap));
+
+ if ($fullMethodCount > 0) {
+ $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount);
+ } else {
+ $crapMethodPercent = 0;
+ }
+
+ $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent));
+
+ $root->appendChild($stats);
+ $root->appendChild($methodsNode);
+
+ $buffer = $document->saveXML();
+
+ if ($target !== null) {
+ if (!is_dir(dirname($target))) {
+ mkdir(dirname($target), 0777, true);
+ }
+
+ file_put_contents($target, $buffer);
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * @param float $crapValue
+ * @param int $cyclomaticComplexity
+ * @param float $coveragePercent
+ *
+ * @return float
+ */
+ private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent)
+ {
+ $crapLoad = 0;
+
+ if ($crapValue >= $this->threshold) {
+ $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100);
+ $crapLoad += $cyclomaticComplexity / $this->threshold;
+ }
+
+ return $crapLoad;
+ }
+
+ /**
+ * @param float $value
+ *
+ * @return float
+ */
+ private function roundValue($value)
+ {
+ return round($value, 2);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php
new file mode 100644
index 0000000..adcfe42
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php
@@ -0,0 +1,179 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\CodeCoverage\RuntimeException;
+
+/**
+ * Generates an HTML report from a code coverage object.
+ */
+class Facade
+{
+ /**
+ * @var string
+ */
+ private $templatePath;
+
+ /**
+ * @var string
+ */
+ private $generator;
+
+ /**
+ * @var int
+ */
+ private $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ private $highLowerBound;
+
+ /**
+ * Constructor.
+ *
+ * @param int $lowUpperBound
+ * @param int $highLowerBound
+ * @param string $generator
+ */
+ public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '')
+ {
+ $this->generator = $generator;
+ $this->highLowerBound = $highLowerBound;
+ $this->lowUpperBound = $lowUpperBound;
+ $this->templatePath = __DIR__ . '/Renderer/Template/';
+ }
+
+ /**
+ * @param CodeCoverage $coverage
+ * @param string $target
+ */
+ public function process(CodeCoverage $coverage, $target)
+ {
+ $target = $this->getDirectory($target);
+ $report = $coverage->getReport();
+ unset($coverage);
+
+ if (!isset($_SERVER['REQUEST_TIME'])) {
+ $_SERVER['REQUEST_TIME'] = time();
+ }
+
+ $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']);
+
+ $dashboard = new Dashboard(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound
+ );
+
+ $directory = new Directory(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound
+ );
+
+ $file = new File(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound
+ );
+
+ $directory->render($report, $target . 'index.html');
+ $dashboard->render($report, $target . 'dashboard.html');
+
+ foreach ($report as $node) {
+ $id = $node->getId();
+
+ if ($node instanceof DirectoryNode) {
+ if (!file_exists($target . $id)) {
+ mkdir($target . $id, 0777, true);
+ }
+
+ $directory->render($node, $target . $id . '/index.html');
+ $dashboard->render($node, $target . $id . '/dashboard.html');
+ } else {
+ $dir = dirname($target . $id);
+
+ if (!file_exists($dir)) {
+ mkdir($dir, 0777, true);
+ }
+
+ $file->render($node, $target . $id . '.html');
+ }
+ }
+
+ $this->copyFiles($target);
+ }
+
+ /**
+ * @param string $target
+ */
+ private function copyFiles($target)
+ {
+ $dir = $this->getDirectory($target . 'css');
+ copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css');
+ copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css');
+ copy($this->templatePath . 'css/style.css', $dir . 'style.css');
+
+ $dir = $this->getDirectory($target . 'fonts');
+ copy($this->templatePath . 'fonts/glyphicons-halflings-regular.eot', $dir . 'glyphicons-halflings-regular.eot');
+ copy($this->templatePath . 'fonts/glyphicons-halflings-regular.svg', $dir . 'glyphicons-halflings-regular.svg');
+ copy($this->templatePath . 'fonts/glyphicons-halflings-regular.ttf', $dir . 'glyphicons-halflings-regular.ttf');
+ copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff', $dir . 'glyphicons-halflings-regular.woff');
+ copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff2', $dir . 'glyphicons-halflings-regular.woff2');
+
+ $dir = $this->getDirectory($target . 'js');
+ copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js');
+ copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js');
+ copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js');
+ copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js');
+ copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js');
+ copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js');
+ copy($this->templatePath . 'js/respond.min.js', $dir . 'respond.min.js');
+ }
+
+ /**
+ * @param string $directory
+ *
+ * @return string
+ *
+ * @throws RuntimeException
+ */
+ private function getDirectory($directory)
+ {
+ if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) {
+ $directory .= DIRECTORY_SEPARATOR;
+ }
+
+ if (is_dir($directory)) {
+ return $directory;
+ }
+
+ if (@mkdir($directory, 0777, true)) {
+ return $directory;
+ }
+
+ throw new RuntimeException(
+ sprintf(
+ 'Directory "%s" does not exist.',
+ $directory
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php
new file mode 100644
index 0000000..da0937e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php
@@ -0,0 +1,298 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use SebastianBergmann\CodeCoverage\Node\AbstractNode;
+use SebastianBergmann\CodeCoverage\Node\File as FileNode;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\Environment\Runtime;
+use SebastianBergmann\Version;
+
+/**
+ * Base class for node renderers.
+ */
+abstract class Renderer
+{
+ /**
+ * @var string
+ */
+ protected $templatePath;
+
+ /**
+ * @var string
+ */
+ protected $generator;
+
+ /**
+ * @var string
+ */
+ protected $date;
+
+ /**
+ * @var int
+ */
+ protected $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ protected $highLowerBound;
+
+ /**
+ * @var string
+ */
+ protected $version;
+
+ /**
+ * Constructor.
+ *
+ * @param string $templatePath
+ * @param string $generator
+ * @param string $date
+ * @param int $lowUpperBound
+ * @param int $highLowerBound
+ */
+ public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
+ {
+ $version = new Version('4.0.8', dirname(dirname(dirname(dirname(__DIR__)))));
+
+ $this->templatePath = $templatePath;
+ $this->generator = $generator;
+ $this->date = $date;
+ $this->lowUpperBound = $lowUpperBound;
+ $this->highLowerBound = $highLowerBound;
+ $this->version = $version->getVersion();
+ }
+
+ /**
+ * @param \Text_Template $template
+ * @param array $data
+ *
+ * @return string
+ */
+ protected function renderItemTemplate(\Text_Template $template, array $data)
+ {
+ $numSeparator = ' / ';
+
+ if (isset($data['numClasses']) && $data['numClasses'] > 0) {
+ $classesLevel = $this->getColorLevel($data['testedClassesPercent']);
+
+ $classesNumber = $data['numTestedClasses'] . $numSeparator .
+ $data['numClasses'];
+
+ $classesBar = $this->getCoverageBar(
+ $data['testedClassesPercent']
+ );
+ } else {
+ $classesLevel = '';
+ $classesNumber = '0' . $numSeparator . '0';
+ $classesBar = '';
+ $data['testedClassesPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numMethods'] > 0) {
+ $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']);
+
+ $methodsNumber = $data['numTestedMethods'] . $numSeparator .
+ $data['numMethods'];
+
+ $methodsBar = $this->getCoverageBar(
+ $data['testedMethodsPercent']
+ );
+ } else {
+ $methodsLevel = '';
+ $methodsNumber = '0' . $numSeparator . '0';
+ $methodsBar = '';
+ $data['testedMethodsPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numExecutableLines'] > 0) {
+ $linesLevel = $this->getColorLevel($data['linesExecutedPercent']);
+
+ $linesNumber = $data['numExecutedLines'] . $numSeparator .
+ $data['numExecutableLines'];
+
+ $linesBar = $this->getCoverageBar(
+ $data['linesExecutedPercent']
+ );
+ } else {
+ $linesLevel = '';
+ $linesNumber = '0' . $numSeparator . '0';
+ $linesBar = '';
+ $data['linesExecutedPercentAsString'] = 'n/a';
+ }
+
+ $template->setVar(
+ [
+ 'icon' => isset($data['icon']) ? $data['icon'] : '',
+ 'crap' => isset($data['crap']) ? $data['crap'] : '',
+ 'name' => $data['name'],
+ 'lines_bar' => $linesBar,
+ 'lines_executed_percent' => $data['linesExecutedPercentAsString'],
+ 'lines_level' => $linesLevel,
+ 'lines_number' => $linesNumber,
+ 'methods_bar' => $methodsBar,
+ 'methods_tested_percent' => $data['testedMethodsPercentAsString'],
+ 'methods_level' => $methodsLevel,
+ 'methods_number' => $methodsNumber,
+ 'classes_bar' => $classesBar,
+ 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '',
+ 'classes_level' => $classesLevel,
+ 'classes_number' => $classesNumber
+ ]
+ );
+
+ return $template->render();
+ }
+
+ /**
+ * @param \Text_Template $template
+ * @param AbstractNode $node
+ */
+ protected function setCommonTemplateVariables(\Text_Template $template, AbstractNode $node)
+ {
+ $template->setVar(
+ [
+ 'id' => $node->getId(),
+ 'full_path' => $node->getPath(),
+ 'path_to_root' => $this->getPathToRoot($node),
+ 'breadcrumbs' => $this->getBreadcrumbs($node),
+ 'date' => $this->date,
+ 'version' => $this->version,
+ 'runtime' => $this->getRuntimeString(),
+ 'generator' => $this->generator,
+ 'low_upper_bound' => $this->lowUpperBound,
+ 'high_lower_bound' => $this->highLowerBound
+ ]
+ );
+ }
+
+ protected function getBreadcrumbs(AbstractNode $node)
+ {
+ $breadcrumbs = '';
+ $path = $node->getPathAsArray();
+ $pathToRoot = [];
+ $max = count($path);
+
+ if ($node instanceof FileNode) {
+ $max--;
+ }
+
+ for ($i = 0; $i < $max; $i++) {
+ $pathToRoot[] = str_repeat('../', $i);
+ }
+
+ foreach ($path as $step) {
+ if ($step !== $node) {
+ $breadcrumbs .= $this->getInactiveBreadcrumb(
+ $step,
+ array_pop($pathToRoot)
+ );
+ } else {
+ $breadcrumbs .= $this->getActiveBreadcrumb($step);
+ }
+ }
+
+ return $breadcrumbs;
+ }
+
+ protected function getActiveBreadcrumb(AbstractNode $node)
+ {
+ $buffer = sprintf(
+ ' %s' . "\n",
+ $node->getName()
+ );
+
+ if ($node instanceof DirectoryNode) {
+ $buffer .= ' (Dashboard)' . "\n";
+ }
+
+ return $buffer;
+ }
+
+ protected function getInactiveBreadcrumb(AbstractNode $node, $pathToRoot)
+ {
+ return sprintf(
+ ' %s' . "\n",
+ $pathToRoot,
+ $node->getName()
+ );
+ }
+
+ protected function getPathToRoot(AbstractNode $node)
+ {
+ $id = $node->getId();
+ $depth = substr_count($id, '/');
+
+ if ($id != 'index' &&
+ $node instanceof DirectoryNode) {
+ $depth++;
+ }
+
+ return str_repeat('../', $depth);
+ }
+
+ protected function getCoverageBar($percent)
+ {
+ $level = $this->getColorLevel($percent);
+
+ $template = new \Text_Template(
+ $this->templatePath . 'coverage_bar.html',
+ '{{',
+ '}}'
+ );
+
+ $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]);
+
+ return $template->render();
+ }
+
+ /**
+ * @param int $percent
+ *
+ * @return string
+ */
+ protected function getColorLevel($percent)
+ {
+ if ($percent <= $this->lowUpperBound) {
+ return 'danger';
+ } elseif ($percent > $this->lowUpperBound &&
+ $percent < $this->highLowerBound) {
+ return 'warning';
+ } else {
+ return 'success';
+ }
+ }
+
+ /**
+ * @return string
+ */
+ private function getRuntimeString()
+ {
+ $runtime = new Runtime;
+
+ $buffer = sprintf(
+ '%s %s',
+ $runtime->getVendorUrl(),
+ $runtime->getName(),
+ $runtime->getVersion()
+ );
+
+ if ($runtime->hasXdebug() && !$runtime->hasPHPDBGCodeCoverage()) {
+ $buffer .= sprintf(
+ ' with Xdebug %s',
+ phpversion('xdebug')
+ );
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php
new file mode 100644
index 0000000..7cde175
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php
@@ -0,0 +1,302 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use SebastianBergmann\CodeCoverage\Node\AbstractNode;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+
+/**
+ * Renders the dashboard for a directory node.
+ */
+class Dashboard extends Renderer
+{
+ /**
+ * @param DirectoryNode $node
+ * @param string $file
+ */
+ public function render(DirectoryNode $node, $file)
+ {
+ $classes = $node->getClassesAndTraits();
+ $template = new \Text_Template(
+ $this->templatePath . 'dashboard.html',
+ '{{',
+ '}}'
+ );
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $baseLink = $node->getId() . '/';
+ $complexity = $this->complexity($classes, $baseLink);
+ $coverageDistribution = $this->coverageDistribution($classes);
+ $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink);
+ $projectRisks = $this->projectRisks($classes, $baseLink);
+
+ $template->setVar(
+ [
+ 'insufficient_coverage_classes' => $insufficientCoverage['class'],
+ 'insufficient_coverage_methods' => $insufficientCoverage['method'],
+ 'project_risks_classes' => $projectRisks['class'],
+ 'project_risks_methods' => $projectRisks['method'],
+ 'complexity_class' => $complexity['class'],
+ 'complexity_method' => $complexity['method'],
+ 'class_coverage_distribution' => $coverageDistribution['class'],
+ 'method_coverage_distribution' => $coverageDistribution['method']
+ ]
+ );
+
+ $template->renderTo($file);
+ }
+
+ /**
+ * Returns the data for the Class/Method Complexity charts.
+ *
+ * @param array $classes
+ * @param string $baseLink
+ *
+ * @return array
+ */
+ protected function complexity(array $classes, $baseLink)
+ {
+ $result = ['class' => [], 'method' => []];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($className != '*') {
+ $methodName = $className . '::' . $methodName;
+ }
+
+ $result['method'][] = [
+ $method['coverage'],
+ $method['ccn'],
+ sprintf(
+ '%s',
+ str_replace($baseLink, '', $method['link']),
+ $methodName
+ )
+ ];
+ }
+
+ $result['class'][] = [
+ $class['coverage'],
+ $class['ccn'],
+ sprintf(
+ '%s',
+ str_replace($baseLink, '', $class['link']),
+ $className
+ )
+ ];
+ }
+
+ return [
+ 'class' => json_encode($result['class']),
+ 'method' => json_encode($result['method'])
+ ];
+ }
+
+ /**
+ * Returns the data for the Class / Method Coverage Distribution chart.
+ *
+ * @param array $classes
+ *
+ * @return array
+ */
+ protected function coverageDistribution(array $classes)
+ {
+ $result = [
+ 'class' => [
+ '0%' => 0,
+ '0-10%' => 0,
+ '10-20%' => 0,
+ '20-30%' => 0,
+ '30-40%' => 0,
+ '40-50%' => 0,
+ '50-60%' => 0,
+ '60-70%' => 0,
+ '70-80%' => 0,
+ '80-90%' => 0,
+ '90-100%' => 0,
+ '100%' => 0
+ ],
+ 'method' => [
+ '0%' => 0,
+ '0-10%' => 0,
+ '10-20%' => 0,
+ '20-30%' => 0,
+ '30-40%' => 0,
+ '40-50%' => 0,
+ '50-60%' => 0,
+ '60-70%' => 0,
+ '70-80%' => 0,
+ '80-90%' => 0,
+ '90-100%' => 0,
+ '100%' => 0
+ ]
+ ];
+
+ foreach ($classes as $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] == 0) {
+ $result['method']['0%']++;
+ } elseif ($method['coverage'] == 100) {
+ $result['method']['100%']++;
+ } else {
+ $key = floor($method['coverage'] / 10) * 10;
+ $key = $key . '-' . ($key + 10) . '%';
+ $result['method'][$key]++;
+ }
+ }
+
+ if ($class['coverage'] == 0) {
+ $result['class']['0%']++;
+ } elseif ($class['coverage'] == 100) {
+ $result['class']['100%']++;
+ } else {
+ $key = floor($class['coverage'] / 10) * 10;
+ $key = $key . '-' . ($key + 10) . '%';
+ $result['class'][$key]++;
+ }
+ }
+
+ return [
+ 'class' => json_encode(array_values($result['class'])),
+ 'method' => json_encode(array_values($result['method']))
+ ];
+ }
+
+ /**
+ * Returns the classes / methods with insufficient coverage.
+ *
+ * @param array $classes
+ * @param string $baseLink
+ *
+ * @return array
+ */
+ protected function insufficientCoverage(array $classes, $baseLink)
+ {
+ $leastTestedClasses = [];
+ $leastTestedMethods = [];
+ $result = ['class' => '', 'method' => ''];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] < $this->highLowerBound) {
+ if ($className != '*') {
+ $key = $className . '::' . $methodName;
+ } else {
+ $key = $methodName;
+ }
+
+ $leastTestedMethods[$key] = $method['coverage'];
+ }
+ }
+
+ if ($class['coverage'] < $this->highLowerBound) {
+ $leastTestedClasses[$className] = $class['coverage'];
+ }
+ }
+
+ asort($leastTestedClasses);
+ asort($leastTestedMethods);
+
+ foreach ($leastTestedClasses as $className => $coverage) {
+ $result['class'] .= sprintf(
+ ' %s | %d%% |
' . "\n",
+ str_replace($baseLink, '', $classes[$className]['link']),
+ $className,
+ $coverage
+ );
+ }
+
+ foreach ($leastTestedMethods as $methodName => $coverage) {
+ list($class, $method) = explode('::', $methodName);
+
+ $result['method'] .= sprintf(
+ ' %s | %d%% |
' . "\n",
+ str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
+ $methodName,
+ $method,
+ $coverage
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the project risks according to the CRAP index.
+ *
+ * @param array $classes
+ * @param string $baseLink
+ *
+ * @return array
+ */
+ protected function projectRisks(array $classes, $baseLink)
+ {
+ $classRisks = [];
+ $methodRisks = [];
+ $result = ['class' => '', 'method' => ''];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] < $this->highLowerBound &&
+ $method['ccn'] > 1) {
+ if ($className != '*') {
+ $key = $className . '::' . $methodName;
+ } else {
+ $key = $methodName;
+ }
+
+ $methodRisks[$key] = $method['crap'];
+ }
+ }
+
+ if ($class['coverage'] < $this->highLowerBound &&
+ $class['ccn'] > count($class['methods'])) {
+ $classRisks[$className] = $class['crap'];
+ }
+ }
+
+ arsort($classRisks);
+ arsort($methodRisks);
+
+ foreach ($classRisks as $className => $crap) {
+ $result['class'] .= sprintf(
+ ' %s | %d |
' . "\n",
+ str_replace($baseLink, '', $classes[$className]['link']),
+ $className,
+ $crap
+ );
+ }
+
+ foreach ($methodRisks as $methodName => $crap) {
+ list($class, $method) = explode('::', $methodName);
+
+ $result['method'] .= sprintf(
+ ' %s | %d |
' . "\n",
+ str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
+ $methodName,
+ $method,
+ $crap
+ );
+ }
+
+ return $result;
+ }
+
+ protected function getActiveBreadcrumb(AbstractNode $node)
+ {
+ return sprintf(
+ ' %s' . "\n" .
+ ' (Dashboard)' . "\n",
+ $node->getName()
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
new file mode 100644
index 0000000..a4b1b96
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
@@ -0,0 +1,101 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+
+/**
+ * Renders a directory node.
+ */
+class Directory extends Renderer
+{
+ /**
+ * @param DirectoryNode $node
+ * @param string $file
+ */
+ public function render(DirectoryNode $node, $file)
+ {
+ $template = new \Text_Template($this->templatePath . 'directory.html', '{{', '}}');
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $items = $this->renderItem($node, true);
+
+ foreach ($node->getDirectories() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ foreach ($node->getFiles() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ $template->setVar(
+ [
+ 'id' => $node->getId(),
+ 'items' => $items
+ ]
+ );
+
+ $template->renderTo($file);
+ }
+
+ /**
+ * @param Node $node
+ * @param bool $total
+ *
+ * @return string
+ */
+ protected function renderItem(Node $node, $total = false)
+ {
+ $data = [
+ 'numClasses' => $node->getNumClassesAndTraits(),
+ 'numTestedClasses' => $node->getNumTestedClassesAndTraits(),
+ 'numMethods' => $node->getNumMethods(),
+ 'numTestedMethods' => $node->getNumTestedMethods(),
+ 'linesExecutedPercent' => $node->getLineExecutedPercent(false),
+ 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(),
+ 'numExecutedLines' => $node->getNumExecutedLines(),
+ 'numExecutableLines' => $node->getNumExecutableLines(),
+ 'testedMethodsPercent' => $node->getTestedMethodsPercent(false),
+ 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(),
+ 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false),
+ 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent()
+ ];
+
+ if ($total) {
+ $data['name'] = 'Total';
+ } else {
+ if ($node instanceof DirectoryNode) {
+ $data['name'] = sprintf(
+ '%s',
+ $node->getName(),
+ $node->getName()
+ );
+
+ $data['icon'] = ' ';
+ } else {
+ $data['name'] = sprintf(
+ '%s',
+ $node->getName(),
+ $node->getName()
+ );
+
+ $data['icon'] = ' ';
+ }
+ }
+
+ return $this->renderItemTemplate(
+ new \Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'),
+ $data
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php
new file mode 100644
index 0000000..5461c9e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php
@@ -0,0 +1,551 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use SebastianBergmann\CodeCoverage\Node\File as FileNode;
+use SebastianBergmann\CodeCoverage\Util;
+
+/**
+ * Renders a file node.
+ */
+class File extends Renderer
+{
+ /**
+ * @var int
+ */
+ private $htmlspecialcharsFlags;
+
+ /**
+ * Constructor.
+ *
+ * @param string $templatePath
+ * @param string $generator
+ * @param string $date
+ * @param int $lowUpperBound
+ * @param int $highLowerBound
+ */
+ public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
+ {
+ parent::__construct(
+ $templatePath,
+ $generator,
+ $date,
+ $lowUpperBound,
+ $highLowerBound
+ );
+
+ $this->htmlspecialcharsFlags = ENT_COMPAT;
+
+ $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE;
+ }
+
+ /**
+ * @param FileNode $node
+ * @param string $file
+ */
+ public function render(FileNode $node, $file)
+ {
+ $template = new \Text_Template($this->templatePath . 'file.html', '{{', '}}');
+
+ $template->setVar(
+ [
+ 'items' => $this->renderItems($node),
+ 'lines' => $this->renderSource($node)
+ ]
+ );
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $template->renderTo($file);
+ }
+
+ /**
+ * @param FileNode $node
+ *
+ * @return string
+ */
+ protected function renderItems(FileNode $node)
+ {
+ $template = new \Text_Template($this->templatePath . 'file_item.html', '{{', '}}');
+
+ $methodItemTemplate = new \Text_Template(
+ $this->templatePath . 'method_item.html',
+ '{{',
+ '}}'
+ );
+
+ $items = $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => 'Total',
+ 'numClasses' => $node->getNumClassesAndTraits(),
+ 'numTestedClasses' => $node->getNumTestedClassesAndTraits(),
+ 'numMethods' => $node->getNumMethods(),
+ 'numTestedMethods' => $node->getNumTestedMethods(),
+ 'linesExecutedPercent' => $node->getLineExecutedPercent(false),
+ 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(),
+ 'numExecutedLines' => $node->getNumExecutedLines(),
+ 'numExecutableLines' => $node->getNumExecutableLines(),
+ 'testedMethodsPercent' => $node->getTestedMethodsPercent(false),
+ 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(),
+ 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false),
+ 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(),
+ 'crap' => 'CRAP'
+ ]
+ );
+
+ $items .= $this->renderFunctionItems(
+ $node->getFunctions(),
+ $methodItemTemplate
+ );
+
+ $items .= $this->renderTraitOrClassItems(
+ $node->getTraits(),
+ $template,
+ $methodItemTemplate
+ );
+
+ $items .= $this->renderTraitOrClassItems(
+ $node->getClasses(),
+ $template,
+ $methodItemTemplate
+ );
+
+ return $items;
+ }
+
+ /**
+ * @param array $items
+ * @param \Text_Template $template
+ * @param \Text_Template $methodItemTemplate
+ *
+ * @return string
+ */
+ protected function renderTraitOrClassItems(array $items, \Text_Template $template, \Text_Template $methodItemTemplate)
+ {
+ if (empty($items)) {
+ return '';
+ }
+
+ $buffer = '';
+
+ foreach ($items as $name => $item) {
+ $numMethods = count($item['methods']);
+ $numTestedMethods = 0;
+
+ foreach ($item['methods'] as $method) {
+ if ($method['executedLines'] == $method['executableLines']) {
+ $numTestedMethods++;
+ }
+ }
+
+ if ($item['executableLines'] > 0) {
+ $numClasses = 1;
+ $numTestedClasses = $numTestedMethods == $numMethods ? 1 : 0;
+ $linesExecutedPercentAsString = Util::percent(
+ $item['executedLines'],
+ $item['executableLines'],
+ true
+ );
+ } else {
+ $numClasses = 'n/a';
+ $numTestedClasses = 'n/a';
+ $linesExecutedPercentAsString = 'n/a';
+ }
+
+ $buffer .= $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => $name,
+ 'numClasses' => $numClasses,
+ 'numTestedClasses' => $numTestedClasses,
+ 'numMethods' => $numMethods,
+ 'numTestedMethods' => $numTestedMethods,
+ 'linesExecutedPercent' => Util::percent(
+ $item['executedLines'],
+ $item['executableLines'],
+ false
+ ),
+ 'linesExecutedPercentAsString' => $linesExecutedPercentAsString,
+ 'numExecutedLines' => $item['executedLines'],
+ 'numExecutableLines' => $item['executableLines'],
+ 'testedMethodsPercent' => Util::percent(
+ $numTestedMethods,
+ $numMethods,
+ false
+ ),
+ 'testedMethodsPercentAsString' => Util::percent(
+ $numTestedMethods,
+ $numMethods,
+ true
+ ),
+ 'testedClassesPercent' => Util::percent(
+ $numTestedMethods == $numMethods ? 1 : 0,
+ 1,
+ false
+ ),
+ 'testedClassesPercentAsString' => Util::percent(
+ $numTestedMethods == $numMethods ? 1 : 0,
+ 1,
+ true
+ ),
+ 'crap' => $item['crap']
+ ]
+ );
+
+ foreach ($item['methods'] as $method) {
+ $buffer .= $this->renderFunctionOrMethodItem(
+ $methodItemTemplate,
+ $method,
+ ' '
+ );
+ }
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * @param array $functions
+ * @param \Text_Template $template
+ *
+ * @return string
+ */
+ protected function renderFunctionItems(array $functions, \Text_Template $template)
+ {
+ if (empty($functions)) {
+ return '';
+ }
+
+ $buffer = '';
+
+ foreach ($functions as $function) {
+ $buffer .= $this->renderFunctionOrMethodItem(
+ $template,
+ $function
+ );
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * @param \Text_Template $template
+ *
+ * @return string
+ */
+ protected function renderFunctionOrMethodItem(\Text_Template $template, array $item, $indent = '')
+ {
+ $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0;
+
+ return $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => sprintf(
+ '%s%s',
+ $indent,
+ $item['startLine'],
+ htmlspecialchars($item['signature']),
+ isset($item['functionName']) ? $item['functionName'] : $item['methodName']
+ ),
+ 'numMethods' => 1,
+ 'numTestedMethods' => $numTestedItems,
+ 'linesExecutedPercent' => Util::percent(
+ $item['executedLines'],
+ $item['executableLines'],
+ false
+ ),
+ 'linesExecutedPercentAsString' => Util::percent(
+ $item['executedLines'],
+ $item['executableLines'],
+ true
+ ),
+ 'numExecutedLines' => $item['executedLines'],
+ 'numExecutableLines' => $item['executableLines'],
+ 'testedMethodsPercent' => Util::percent(
+ $numTestedItems,
+ 1,
+ false
+ ),
+ 'testedMethodsPercentAsString' => Util::percent(
+ $numTestedItems,
+ 1,
+ true
+ ),
+ 'crap' => $item['crap']
+ ]
+ );
+ }
+
+ /**
+ * @param FileNode $node
+ *
+ * @return string
+ */
+ protected function renderSource(FileNode $node)
+ {
+ $coverageData = $node->getCoverageData();
+ $testData = $node->getTestData();
+ $codeLines = $this->loadFile($node->getPath());
+ $lines = '';
+ $i = 1;
+
+ foreach ($codeLines as $line) {
+ $trClass = '';
+ $popoverContent = '';
+ $popoverTitle = '';
+
+ if (array_key_exists($i, $coverageData)) {
+ $numTests = count($coverageData[$i]);
+
+ if ($coverageData[$i] === null) {
+ $trClass = ' class="warning"';
+ } elseif ($numTests == 0) {
+ $trClass = ' class="danger"';
+ } else {
+ $lineCss = 'covered-by-large-tests';
+ $popoverContent = '';
+
+ if ($numTests > 1) {
+ $popoverTitle = $numTests . ' tests cover line ' . $i;
+ } else {
+ $popoverTitle = '1 test covers line ' . $i;
+ }
+
+ foreach ($coverageData[$i] as $test) {
+ if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') {
+ $lineCss = 'covered-by-medium-tests';
+ } elseif ($testData[$test]['size'] == 'small') {
+ $lineCss = 'covered-by-small-tests';
+ }
+
+ switch ($testData[$test]['status']) {
+ case 0:
+ switch ($testData[$test]['size']) {
+ case 'small':
+ $testCSS = ' class="covered-by-small-tests"';
+ break;
+
+ case 'medium':
+ $testCSS = ' class="covered-by-medium-tests"';
+ break;
+
+ default:
+ $testCSS = ' class="covered-by-large-tests"';
+ break;
+ }
+ break;
+
+ case 1:
+ case 2:
+ $testCSS = ' class="warning"';
+ break;
+
+ case 3:
+ $testCSS = ' class="danger"';
+ break;
+
+ case 4:
+ $testCSS = ' class="danger"';
+ break;
+
+ default:
+ $testCSS = '';
+ }
+
+ $popoverContent .= sprintf(
+ '- %s
',
+ $testCSS,
+ htmlspecialchars($test)
+ );
+ }
+
+ $popoverContent .= '
';
+ $trClass = ' class="' . $lineCss . ' popin"';
+ }
+ }
+
+ if (!empty($popoverTitle)) {
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent)
+ );
+ } else {
+ $popover = '';
+ }
+
+ $lines .= sprintf(
+ ' | %s |
' . "\n",
+ $trClass,
+ $popover,
+ $i,
+ $i,
+ $i,
+ $line
+ );
+
+ $i++;
+ }
+
+ return $lines;
+ }
+
+ /**
+ * @param string $file
+ *
+ * @return array
+ */
+ protected function loadFile($file)
+ {
+ $buffer = file_get_contents($file);
+ $tokens = token_get_all($buffer);
+ $result = [''];
+ $i = 0;
+ $stringFlag = false;
+ $fileEndsWithNewLine = substr($buffer, -1) == "\n";
+
+ unset($buffer);
+
+ foreach ($tokens as $j => $token) {
+ if (is_string($token)) {
+ if ($token === '"' && $tokens[$j - 1] !== '\\') {
+ $result[$i] .= sprintf(
+ '%s',
+ htmlspecialchars($token)
+ );
+
+ $stringFlag = !$stringFlag;
+ } else {
+ $result[$i] .= sprintf(
+ '%s',
+ htmlspecialchars($token)
+ );
+ }
+
+ continue;
+ }
+
+ list($token, $value) = $token;
+
+ $value = str_replace(
+ ["\t", ' '],
+ [' ', ' '],
+ htmlspecialchars($value, $this->htmlspecialcharsFlags)
+ );
+
+ if ($value === "\n") {
+ $result[++$i] = '';
+ } else {
+ $lines = explode("\n", $value);
+
+ foreach ($lines as $jj => $line) {
+ $line = trim($line);
+
+ if ($line !== '') {
+ if ($stringFlag) {
+ $colour = 'string';
+ } else {
+ switch ($token) {
+ case T_INLINE_HTML:
+ $colour = 'html';
+ break;
+
+ case T_COMMENT:
+ case T_DOC_COMMENT:
+ $colour = 'comment';
+ break;
+
+ case T_ABSTRACT:
+ case T_ARRAY:
+ case T_AS:
+ case T_BREAK:
+ case T_CALLABLE:
+ case T_CASE:
+ case T_CATCH:
+ case T_CLASS:
+ case T_CLONE:
+ case T_CONTINUE:
+ case T_DEFAULT:
+ case T_ECHO:
+ case T_ELSE:
+ case T_ELSEIF:
+ case T_EMPTY:
+ case T_ENDDECLARE:
+ case T_ENDFOR:
+ case T_ENDFOREACH:
+ case T_ENDIF:
+ case T_ENDSWITCH:
+ case T_ENDWHILE:
+ case T_EXIT:
+ case T_EXTENDS:
+ case T_FINAL:
+ case T_FINALLY:
+ case T_FOREACH:
+ case T_FUNCTION:
+ case T_GLOBAL:
+ case T_IF:
+ case T_IMPLEMENTS:
+ case T_INCLUDE:
+ case T_INCLUDE_ONCE:
+ case T_INSTANCEOF:
+ case T_INSTEADOF:
+ case T_INTERFACE:
+ case T_ISSET:
+ case T_LOGICAL_AND:
+ case T_LOGICAL_OR:
+ case T_LOGICAL_XOR:
+ case T_NAMESPACE:
+ case T_NEW:
+ case T_PRIVATE:
+ case T_PROTECTED:
+ case T_PUBLIC:
+ case T_REQUIRE:
+ case T_REQUIRE_ONCE:
+ case T_RETURN:
+ case T_STATIC:
+ case T_THROW:
+ case T_TRAIT:
+ case T_TRY:
+ case T_UNSET:
+ case T_USE:
+ case T_VAR:
+ case T_WHILE:
+ case T_YIELD:
+ $colour = 'keyword';
+ break;
+
+ default:
+ $colour = 'default';
+ }
+ }
+
+ $result[$i] .= sprintf(
+ '%s',
+ $colour,
+ $line
+ );
+ }
+
+ if (isset($lines[$jj + 1])) {
+ $result[++$i] = '';
+ }
+ }
+ }
+ }
+
+ if ($fileEndsWithNewLine) {
+ unset($result[count($result)-1]);
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist
new file mode 100644
index 0000000..5a09c35
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist
@@ -0,0 +1,5 @@
+
+
+ {{percent}}% covered ({{level}})
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css
new file mode 100644
index 0000000..ed3905e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css
new file mode 100644
index 0000000..7a6f7fe
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css
@@ -0,0 +1 @@
+.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc}
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css
new file mode 100644
index 0000000..824fb31
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css
@@ -0,0 +1,122 @@
+body {
+ padding-top: 10px;
+}
+
+.popover {
+ max-width: none;
+}
+
+.glyphicon {
+ margin-right:.25em;
+}
+
+.table-bordered>thead>tr>td {
+ border-bottom-width: 1px;
+}
+
+.table tbody>tr>td, .table thead>tr>td {
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+.table-condensed tbody>tr>td {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.table .progress {
+ margin-bottom: inherit;
+}
+
+.table-borderless th, .table-borderless td {
+ border: 0 !important;
+}
+
+.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success {
+ background-color: #dff0d8;
+}
+
+.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests {
+ background-color: #c3e3b5;
+}
+
+.table tbody tr.covered-by-small-tests, li.covered-by-small-tests {
+ background-color: #99cb84;
+}
+
+.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger {
+ background-color: #f2dede;
+}
+
+.table tbody td.warning, li.warning, span.warning {
+ background-color: #fcf8e3;
+}
+
+.table tbody td.info {
+ background-color: #d9edf7;
+}
+
+td.big {
+ width: 117px;
+}
+
+td.small {
+}
+
+td.codeLine {
+ font-family: monospace;
+ white-space: pre;
+}
+
+td span.comment {
+ color: #888a85;
+}
+
+td span.default {
+ color: #2e3436;
+}
+
+td span.html {
+ color: #888a85;
+}
+
+td span.keyword {
+ color: #2e3436;
+ font-weight: bold;
+}
+
+pre span.string {
+ color: #2e3436;
+}
+
+span.success, span.warning, span.danger {
+ margin-right: 2px;
+ padding-left: 10px;
+ padding-right: 10px;
+ text-align: center;
+}
+
+#classCoverageDistribution, #classComplexity {
+ height: 200px;
+ width: 475px;
+}
+
+#toplink {
+ position: fixed;
+ left: 5px;
+ bottom: 5px;
+ outline: 0;
+}
+
+svg text {
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #666;
+ fill: #666;
+}
+
+.scrollbox {
+ height:245px;
+ overflow-x:hidden;
+ overflow-y:scroll;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist
new file mode 100644
index 0000000..8bdf04d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist
@@ -0,0 +1,284 @@
+
+
+
+
+ Dashboard for {{full_path}}
+
+
+
+
+
+
+
+
+
+
+
+
+
Coverage Distribution
+
+
+
+
+
+
+
+
+
Insufficient Coverage
+
+
+
+
+
+
+
+
Coverage Distribution
+
+
+
+
+
+
+
+
+
Insufficient Coverage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist
new file mode 100644
index 0000000..29fbf23
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist
@@ -0,0 +1,61 @@
+
+
+
+
+ Code Coverage for {{full_path}}
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Code Coverage |
+
+
+ |
+ Lines |
+ Functions and Methods |
+ Classes and Traits |
+
+
+
+{{items}}
+
+
+
+
+
+
+
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist
new file mode 100644
index 0000000..78dbb35
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist
@@ -0,0 +1,13 @@
+
+ {{icon}}{{name}} |
+ {{lines_bar}} |
+ {{lines_executed_percent}} |
+ {{lines_number}} |
+ {{methods_bar}} |
+ {{methods_tested_percent}} |
+ {{methods_number}} |
+ {{classes_bar}} |
+ {{classes_tested_percent}} |
+ {{classes_number}} |
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist
new file mode 100644
index 0000000..8c42d4e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist
@@ -0,0 +1,90 @@
+
+
+
+
+ Code Coverage for {{full_path}}
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Code Coverage |
+
+
+ |
+ Classes and Traits |
+ Functions and Methods |
+ Lines |
+
+
+
+{{items}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist
new file mode 100644
index 0000000..756fdd6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist
@@ -0,0 +1,14 @@
+
+ {{name}} |
+ {{classes_bar}} |
+ {{classes_tested_percent}} |
+ {{classes_number}} |
+ {{methods_bar}} |
+ {{methods_tested_percent}} |
+ {{methods_number}} |
+ {{crap}} |
+ {{lines_bar}} |
+ {{lines_executed_percent}} |
+ {{lines_number}} |
+
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot differ
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+
+
+
\ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff differ
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 differ
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js
new file mode 100644
index 0000000..9bcd2fc
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m